我遇到了一个问题“me.prettyprint.hector.api.exceptions.HUnavailableException ::可能没有足够的副本来处理一致性级别。”当我有RF = 1时,读取一致性等级= 1并且6节点环/簇中的一个节点出现故障。我的所有读取都因此异常而失败。任何的想法?理想情况下,只有在正在关闭的节点中查找数据的读取应该失败并且所有其他读取应该成功吗?
答案 0 :(得分:4)
可能有几种可能性:
如果这些都不是原因,请仔细检查您是否正确地使用Hector和cqlsh指定了一致性级别。
答案 1 :(得分:3)
当我错误配置我的复制设置时,我看到类似的东西,特别是我的错误数据中心名为om复制策略。仔细检查您的DC是什么(假设您正在使用NetworkTopologyStrategy)。
如果您还不知道您的DC名称,请在其中一个节点的shell中运行:
$ nodetool -h localhost ring
Address DC Rack Status State Load Owns Token
141784319550391000000000000000000000000
172.26.233.135 Cassandra rack1 Up Normal 25.75 MB 16.67% 0
172.26.233.136 Cassandra rack1 Up Normal 26.03 MB 16.67% 28356863910078200000000000000000000000
172.26.233.137 Cassandra rack1 Up Normal 27.19 MB 16.67% 56713727820156400000000000000000000000
172.26.233.138 Cassandra rack1 Up Normal 26.78 MB 16.67% 85070591730234600000000000000000000000
172.26.233.139 Solr rack1 Up Normal 24.47 MB 16.67% 113427455640313000000000000000000000000
172.26.233.140 Solr rack1 Up Normal 26.66 MB 16.67% 141784319550391000000000000000000000000
你可以看到我们有两个DC,Cassandra和Solr(这是一个DSE集群)。
在cassandra-cli:
use Keyspace1;
describe;
CLI将打印策略选项:
Keyspace: Catalog:
Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
Durable Writes: true
Options: [DC1:3]
...
我们有一个不匹配。 Cassandra正在寻找一个名为DC1的数据中心,因此是UnavailableException。我们需要更新复制选项以匹配集群中的实际DC。在CLI中,使用数据中心名称更新密钥空间的策略选项:
update keyspace Keyspace1 with strategy_options = {Cassandra:3,Solr:2};