我是Cassandra的新手,面对以下TokenRangeOffline异常,我有一个5n集群,复制因子设置为5,一致性级别设置为仲裁。
我在我的集群上做了一个描述键空间:
CREATE KEYSPACE "StorageOS" WITH replication = {
'class': 'NetworkTopologyStrategy',
'DC' : '5'
};例外情况:
2018-06-22 18:44:26,161 [DriverUpdateThead_139] ERROR CountingConnectionPoolMonitor.java (line 94) com.netflix.astyanax.connectionpool.exceptions.TokenRangeOfflineException: TokenRangeOfflineException: [host=xx.xx.xx.xx(xx.xx.xx.xx):9160, latency=8(5009), attempts=2]UnavailableException()
com.netflix.astyanax.connectionpool.exceptions.TokenRangeOfflineException: TokenRangeOfflineException: [host=xx.xx.xx.xx(xx.xx.xx.xx):9160, latency=8(5009), attempts=2]UnavailableException()
at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:165)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.execute(ThriftColumnFamilyQueryImpl.java:190)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.execute(ThriftColumnFamilyQueryImpl.java:182)
at com.netflix.astyanax.thrift.ThriftSyncConnectionFactoryImpl$ThriftConnection.execute(ThriftSyncConnectionFactoryImpl.java:151)
at com.netflix.astyanax.connectionpool.impl.AbstractExecuteWithFailoverImpl.tryOperation(AbstractExecuteWithFailoverImpl.java:119)
at com.netflix.astyanax.connectionpool.impl.AbstractHostPartitionConnectionPool.executeWithFailover(AbstractHostPartitionConnectionPool.java:338)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1.execute(ThriftColumnFamilyQueryImpl.java:180)
Caused by: UnavailableException()
at org.apache.cassandra.thrift.Cassandra$get_slice_result$get_slice_resultStandardScheme.read(Cassandra.java:11815)
at org.apache.cassandra.thrift.Cassandra$get_slice_result$get_slice_resultStandardScheme.read(Cassandra.java:11773)
at org.apache.cassandra.thrift.Cassandra$get_slice_result.read(Cassandra.java:11699)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:671)
at org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:655)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.internalExecute(ThriftColumnFamilyQueryImpl.java:195)
at com.netflix.astyanax.thrift.ThriftColumnFamilyQueryImpl$1$2.internalExecute(ThriftColumnFamilyQueryImpl.java:182)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:60)
... 20 more更多信息:
已连接到本地主机上的StorageOS :9160。
cqlsh 4.1.1 | Cassandra 2.1.11 | CQL规范3.1.1 | Thrift协议19.39.0
我知道还有一些与此异常相关的类似问题,但在我的特定情况下,我不能理解如何继续。谁能帮帮忙?
发布于 2018-06-23 21:59:20
需要注意的一件事是,您正在运行哪个版本的Cassandra。Astyanax默认使用Cassandra 1.1的“目标”版本。这是因为原始代码库利用了Thrift API,它使用端口9160 (正如我所看到的)。
但新版本的卡桑德拉(2.2+)默认情况下禁用了Thrift协议。所以你有两个选择:
1.告诉Astyanax您使用的是哪个版本(如documentation中所示):
AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setCqlVersion("3.4.4")
.setTargetCassandraVersion("3.11.2"))请注意,使用此选项时,您需要将9042设置为端口。
或
2.通过更改cassandra.yaml中设置(在所有节点上),使Cassandra能够监听Thrift。
# Whether to start the thrift rpc server.
start_rpc: true看看能不能帮上忙。
https://stackoverflow.com/questions/51001394
复制相似问题