Cassandra:未在新节点上复制数据
我向cassandra集群添加了一个新节点(新节点不是种子节点)。我的群集上现在有3个节点:Cassandra:未在新节点上复制数据,cassandra,replication,Cassandra,Replication,我向cassandra集群添加了一个新节点(新节点不是种子节点)。我的群集上现在有3个节点: Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN XXX.XXX.XXX.XXX 52.25 GB 256
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID
Rack
UN XXX.XXX.XXX.XXX 52.25 GB 256 100.0% XXX rack1
UN XXX.XXX.XXX.XXX 63.65 GB 256 100.0% XXX rack1
UN XXX.XXX.XXX.XXX 314.72 MB 256 100.0% XXX rack1
我的复制系数为3:
DESCRIBE KEYSPACE mykeyspace
CREATE KEYSPACE mykeyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '3'} AND durable_writes = true;
但数据不会复制到新集群(数据量为314 MB的节点)上
我尝试使用nodetool重建:
错误[STREAM-IN-/XXX.XXX.XXX.XXX]2016-11-11 08:28:42765
java:520-[Stream]
#0e7a0580-a81b-11e6-9a1c-6d75503d5d02]发生流错误java.lang.IllegalArgumentException:位于的未知类型0
org.apache.cassandra.streaming.messages.StreamMessage$Type.get(StreamMessage.java:97)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.streaming.messages.StreamMessage.deserialize(StreamMessage.java:58)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.streaming.ConnectionHandler$IncomingMessageHandler.run(ConnectionHandler.java:261)
~[apache-cassandra-3.1.1.jar:3.1.1]at
java.lang.Thread.run(Thread.java:745)[na:1.8.0_74]错误[Thread-16]
2016-11-11 08:28:42765 cassandrademon.java:195-线程中的异常
线程[Thread-16,5,RMI运行时]java.lang.RuntimeException:
java.lang.InterruptedException位于
com.google.common.base.Throwables.propagate(Throwables.java:160)
~[guava-18.0.jar:na]at
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:32)
~[apache-cassandra-3.1.1.jar:3.1.1]at
java.lang.Thread.run(Thread.java:745)~[na:1.8.0_74]由以下原因引起:
java.lang.InterruptedException:在
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
~(na:1.8.0_74)at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048)
~(na:1.8.0_74)at
java.util.concurrent.ArrayBlockingQueue.put(ArrayBlockingQueue.java:353)
~(na:1.8.0_74)at
org.apache.cassandra.streaming.compress.CompressedInputStream$Reader.runmaytrow(CompressedInputStream.java:184)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
~[apache-cassandra-3.1.1.jar:3.1.1]。。。1公共框架省略信息
[STREAM-IN-/XXX.XXX.XXX.XXX]2016-11-11 08:28:42805
java:182-[Stream]
#0e7a0580-a81b-11e6-9a1c-6d75503d5d02]与/XXX.XXX.XXX.XXX的会话已完成警告[STREAM-IN-/XXX.XXX.XXX.XXX]2016-11-11 08:28:42807
java:209-[Stream]
#0e7a0580-a81b-11e6-9a1c-6d75503d5d02]流失败错误[RMI TCP连接(14)-127.0.0.1]2016-11-11 08:28:42808
java:1128-重建节点时出错
org.apache.cassandra.streaming.StreamException:流在以下位置失败:
org.apache.cassandra.streaming.management.StreamEventJMXNotifier.onFailure(StreamEventJMXNotifier.java:85)
~[apache-cassandra-3.1.1.jar:3.1.1]at
com.google.common.util.concurrent.Futures$6.run(Futures.java:1310)
~[guava-18.0.jar:na]at
com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:457)
~[guava-18.0.jar:na]at
com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
~[guava-18.0.jar:na]at
com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
~[guava-18.0.jar:na]at
com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202)
~[guava-18.0.jar:na]at
org.apache.cassandra.streaming.StreamResultFuture.maybeComplete(StreamResultFuture.java:210)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.streaming.StreamResultFuture.handleSessionComplete(StreamResultFuture.java:186)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.streaming.StreamSession.closeSession(StreamSession.java:430)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.streaming.StreamSession.onError(StreamSession.java:525)
~[apache-cassandra-3.1.1.jar:3.1.1]at
org.apache.cassandra.streaming.ConnectionHandler$IncomingMessageHandler.run(ConnectionHandler.java:279)
~[apache-cassandra-3.1.1.jar:3.1.1]at
java.lang.Thread.run(Thread.java:745)~[na:1.8.0_74]
我还尝试更改该选项,但数据仍然没有复制到新节点:
自动引导:真
您能帮助我理解为什么数据没有在新节点上复制吗
如果您需要我的配置的更多信息,请告诉我
感谢您的帮助看来这是由于。应用该修复程序应该可以解决此问题。看来这是由于。应用该修复程序应该可以解决这个问题。首先查看-如果答案不适用,我们可以深入挖掘。感谢Chris的帮助。实际上我先读了这个问题。我在3个节点上有相同的num_标记(相同的硬件配置)。我在cassandra配置中添加了
auto_bootstrap=true
。我在新节点上运行了nodetool repair
,在其他节点上运行了nodetool cleanup
,但数据不会在新节点上复制。请先查看-如果那里的答案不适用,我们可以深入挖掘。感谢Chris的帮助。实际上我先读了这个问题。我在3个节点上有相同的num_标记(相同的硬件配置)。我在cassandra配置中添加了auto_bootstrap=true
。我在新节点上运行了nodetool repair
,在其他节点上运行了nodetool cleanup
,但数据不会在新节点上复制。我使用的是Cassandra 3.1.1。我是否受到了这个bug的影响?谢谢你的帮助。看起来你是。当然看起来是一样的。我已经在新节点上安装了Cassandra 3.0.9。我没有注意到有什么进步。我还没有更新其他节点,需要几天才能更新其他节点上的Cassandra。我会让你知道,如果这解决了问题。感谢Chris,我在集群上安装了Cassandra 3.0.9,但我的新节点上仍然没有数据副本。我进行了一次nodetool维修,但是