【发布时间】:2013-01-16 10:18:18
【问题描述】:
我在将数据写入 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();
更新:
我在从 play 框架连接到 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 机架状态状态负载有效所有权令牌
127.0.0.1 datacenter1 rack1 Up Normal 130.44 KB 100.00% 129209944818829357072522096381370300409
关闭线程 我的问题是因为一些冲突的旧库。我为 hive 和 cassandra 添加了依赖项,可能存在一些不匹配。
感谢您的帮助。
谢谢。
【问题讨论】:
-
可以贴一下戒指信息吗?您在定义键空间时使用了哪种策略?还有关于您的 Cassandra 版本的信息
-
运行
nodetool -h host1 ring会得到什么?
标签: playframework cassandra astyanax