Cassandra:未在新节点上复制数据

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

我向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          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维修,但是