如果节点关闭,sstableloader无法上传数据

时间:2015-05-01 10:34:44

标签: cassandra

我有一个测试设置,如果其中一个Cassandra节点关闭,sstableloader无法上传数据。我可以看到

有没有办法指示sstableloader不要连接(或打开流)到死节点(我不想从集群中解除/删除节点)?

Cassandra集群信息:Datastax社区版本2.1.2,3节点集群,其中2个是种子节点。

在测试批量上传期间,其中一个种子节点已关闭。密钥空间具有复制因子= 2。

遇到异常:

progress: total: 100% 0  MB/s(avg: 0 MB/s)ERROR 09:07:48 [Stream #8972f510-efe1-11e4-abad-9d409520f182] Streaming error occurred
java.net.ConnectException: Connection refused
        at sun.nio.ch.Net.connect0(Native Method) ~[na:1.7.0_65]
        at sun.nio.ch.Net.connect(Net.java:465) ~[na:1.7.0_65]
        at sun.nio.ch.Net.connect(Net.java:457) ~[na:1.7.0_65]
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:670) ~[na:1.7.0_65]
        at java.nio.channels.SocketChannel.open(SocketChannel.java:184) ~[na:1.7.0_65]
        at org.apache.cassandra.tools.BulkLoadConnectionFactory.createConnection(BulkLoadConnectionFactory.java:62) ~[apache-cassandra-2.1.2.jar:2.1.2]
        at org.apache.cassandra.streaming.StreamSession.createConnection(StreamSession.java:229) ~[apache-cassandra-2.1.2.jar:2.1.2]
        at org.apache.cassandra.streaming.ConnectionHandler.initiate(ConnectionHandler.java:79) ~[apache-cassandra-2.1.2.jar:2.1.2]
        at org.apache.cassandra.streaming.StreamSession.start(StreamSession.java:216) ~[apache-cassandra-2.1.2.jar:2.1.2]
        at org.apache.cassandra.streaming.StreamCoordinator$StreamSessionConnector.run(StreamCoordinator.java:208) [apache-cassandra-2.1.2.jar:2.1.2]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_65]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_65]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
progress: [/192.168.1.17]0:1/1 100% total: 100% 0  MB/s(avg: 1 MB/s)WARN  09:07:48 [Stream #8972f510-efe1-11e4-abad-9d409520f182] Stream failed
Streaming to the following hosts failed:
[/192.168.1.15]
java.util.concurrent.ExecutionException: org.apache.cassandra.streaming.StreamException: Stream failed
        at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
        at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
        at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
        at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:121)
Caused by: org.apache.cassandra.streaming.StreamException: Stream failed
        at org.apache.cassandra.streaming.StreamResultFuture.maybeComplete(StreamResultFuture.java:208)
        at org.apache.cassandra.streaming.StreamResultFuture.handleSessionComplete(StreamResultFuture.java:184)
        at org.apache.cassandra.streaming.StreamSession.closeSession(StreamSession.java:382)
        at org.apache.cassandra.streaming.StreamSession.complete(StreamSession.java:574)
        at org.apache.cassandra.streaming.StreamSession.messageReceived(StreamSession.java:438)
        at org.apache.cassandra.streaming.ConnectionHandler$IncomingMessageHandler.run(ConnectionHandler.java:251)
        at java.lang.Thread.run(Thread.java:745)

提前致谢, Anirban。

1 个答案:

答案 0 :(得分:0)

我想我可以将一个忽略列表传递给sstableloader。通过在忽略列表中传递死节点,sstableloader在我的测试设置中成功运行。