我在将数据写入 cassandra 时遇到问题。
使用 ConnectionPoolType.BAG 时,我们观察到:
NoAvailableHostsException("No hosts to borrow from") exception being thrown.
Caused by: com.netflix.astyanax.connectionpool.exceptions.NoAvailableHostsException:
NoAvailableHostsException: [host=None(0.0.0.0):0, latency=0(0), attempts=1]No hosts to borrow from
at com.netflix.astyanax.connectionpool.impl.BagOfConnectionsConnectionPoolImpl.borrowConnection(BagOfConnectionsConnectionPoolImpl.java:93) ~[astyanax-1.56.24-SNAPSHOT.jar:na]
at com.netflix.astyanax.connectionpool.impl.BagOfConnectionsConnectionPoolImpl.access$000(BagOfConnectionsConnectionPoolImpl.java:31) ~[astyanax-1.56.24-SNAPSHOT.jar:na]
at com.netflix.astyanax.connectionpool.impl.BagOfConnectionsConnectionPoolImpl$BagExecuteWithFailover.borrowConnection(BagOfConnectionsConnectionPoolImpl.java:158) ~[astyanax-1.56.24-SNAPSHOT.jar:na]
at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:67) ~[astyanax-1.56.24-SNAPSHOT.jar:na]
at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:253) ~[astyanax-1.56.24-SNAPSHOT.jar:na]
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$6$3.execute(ThriftColumnFamilyQueryImpl.java:739) ~[astyanax-1.56.24-SNAPSHOT.jar:na]
此外,我们尝试使用 ConnectionPoolType.ROUND_ROBIN 但我们再次观察到 ConnectionTimeOut 错误。
想知道我们的配置是否正常?
客户端配置。我们正在使用 Astyanax java 客户端。
context = new AstyanaxContext.Builder()
.forCluster("clustername")
.forKeyspace("keyspace")
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.NONE)
.setCqlVersion("3.0.0")
.setConnectionPoolType(ConnectionPoolType.BAG) // We also tried ConnectionPoolType.ROUND_ROBIN
)
.withConnectionPoolConfiguration(
new ConnectionPoolConfigurationImpl("poolname")
.setPort(9160)
.setMaxConnsPerHost(20)
.setInitConnsPerHost(10)
.setSeeds("host1:9160,host2:9160,host3:9160")
.setMaxTimeoutWhenExhausted(11000) // Default : 2000
.setConnectTimeout(10000) // Default : 2000
)
.withConnectionPoolMonitor(new Slf4jConnectionPoolMonitorImpl())
.buildKeyspace(ThriftFamilyFactory.getInstance());context.start();
更新 :
我正面临从游戏框架连接到 cassandra 集群的问题。我们正在使用 astyanax java 客户端连接到集群。
当我们使用“play start”启动播放应用程序时,一切似乎都工作正常,但是当我们使用“play dist”命令创建一个 dist 并启动服务时,它会抛出以下异常。
play dist 和 play start 和有什么区别?
更新 2:我正在我的机器上进行测试,cassandra 的单个实例。我以“简单策略”为策略创建了键空间。
我的盒子上的 Cassandra:ReleaseVersion:1.1.7。版本 1.1.6 也失败了。
运行 nodetool -h localhost 给出以下输出。
地址 DC Rack Status State Load Effective-Ownership Token
127.0.0.1 datacenter1 rack1 Up Normal 130.44 KB 100.00% 129209944818829357072522096381370300409
关闭线程 我的问题是因为一些冲突的旧库。我为 hive 和 cassandra 添加了依赖项,可能存在一些不匹配。
谢谢您的帮助。
谢谢。