首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >5n集群中的Cassandra TokenRangeOfflineException

5n集群中的Cassandra TokenRangeOfflineException
EN

Stack Overflow用户
提问于 2018-06-23 20:59:28
回答 1查看 320关注 0票数 1

我是Cassandra的新手,面对以下TokenRangeOffline异常,我有一个5n集群,复制因子设置为5,一致性级别设置为仲裁。

我在我的集群上做了一个描述键空间:

代码语言:javascript
复制
CREATE KEYSPACE "StorageOS" WITH replication = {
    'class': 'NetworkTopologyStrategy',
     'DC'  : '5'
};

例外情况:

代码语言:javascript
复制
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

我知道还有一些与此异常相关的类似问题,但在我的特定情况下,我不能理解如何继续。谁能帮帮忙?

EN

回答 1

Stack Overflow用户

发布于 2018-06-23 21:59:20

需要注意的一件事是,您正在运行哪个版本的Cassandra。Astyanax默认使用Cassandra 1.1的“目标”版本。这是因为原始代码库利用了Thrift API,它使用端口9160 (正如我所看到的)。

但新版本的卡桑德拉(2.2+)默认情况下禁用了Thrift协议。所以你有两个选择:

1.告诉Astyanax您使用的是哪个版本(如documentation中所示):

代码语言:javascript
复制
AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
        .setCqlVersion("3.4.4")
        .setTargetCassandraVersion("3.11.2"))

请注意,使用此选项时,您需要将9042设置为端口。

2.通过更改cassandra.yaml中设置(在所有节点上),使Cassandra能够监听Thrift。

代码语言:javascript
复制
# Whether to start the thrift rpc server.
start_rpc: true

看看能不能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51001394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档