Cassandra NoHostAvailableException:在生产中尝试查询的所有主机都失败了

abi*_*pat 7 java cassandra datastax-java-driver

我们有10个Cassandra节点在运行Cassandra-2.1.8.我们最近升级到2.1.8版本.以前我们只使用3个运行Cassandra-2.1.2的节点.首先,我们将最初的3个节点从2.1.2升级到2.1.8(遵循升级Cassandra中描述的过程).然后我们在集群中添加了7个运行Cassandra-2.1.8的节点.然后我们启动了客户端程序.前几个小时一切正常,但几个小时后,我们在客户端程序日志中看到了一些错误

Thread-0 [29/07/15 17:41:23.356] ERROR  com.cleartrail.entityprofiling.engine.InterpretationWriter - Error:com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: [/172.50.33.161:9041, /172.50.33.162:9041, /172.50.33.95:9041, /172.50.33.96:9041, /172.50.33.165:9041, /172.50.33.166:9041, /172.50.33.163:9041, /172.50.33.164:9041, /172.50.33.42:9041, /172.50.33.167:9041] - use getErrors() for details)
       at com.datastax.driver.core.exceptions.NoHostAvailableException.copy(NoHostAvailableException.java:65)
       at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:259)
       at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:175)
       at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52)
       at com.cleartrail.entityprofiling.engine.InterpretationWriter.WriteInterpretation(InterpretationWriter.java:430)
       at com.cleartrail.entityprofiling.engine.Profiler.buildProfile(Profiler.java:1042)
       at com.cleartrail.messageconsumer.consumer.KafkaConsumer.run(KafkaConsumer.java:336)
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: [/172.50.33.161:9041, /172.50.33.162:9041, /172.50.33.95:9041, /172.50.33.96:9041, /172.50.33.165:9041, /172.50.33.166:9041, /172.50.33.163:9041, /172.50.33.164:9041, /172.50.33.42:9041, /172.50.33.167:9041] - use getErrors() for details)
       at com.datastax.driver.core.RequestHandler.sendRequest(RequestHandler.java:102)
       at com.datastax.driver.core.RequestHandler$1.run(RequestHandler.java:176)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
       at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

现在,我仔细检查了防火墙(如少数帖子中所建议的),端口,客户端和节点的超时,它们都是正确的.

我也没有在任何地方关闭连接.我正在使用批量大小为1000的批量查询,查询是更新查询更新我的表中有三列的计数器

实体,twfwv,cvalue

其中entity和twfwv列是文本和主键,cvalue是counter列.

我甚至重新启动了所有节点(因为当我遇到相同的异常时,这个技巧在我的开发环境中帮助了我)但它没有帮助.请在这里建议可能存在的问题.

bit*_*int 6

我的问题是通过检查Olivier Michallat在评论中NoHostAvailableException建议的错误集合来解决的。对我来说,它是集群配置上的协议版本。我的是空的,将其设置为 3 解决了问题。