我遇到了一个问题“me.prettyprint.hector.api.exceptions.HUnavailableException: : 可能没有足够的副本来处理一致性级别。” 当我的 RF = 1 时,读取一致性级别 = 1 并且 6 节点环/集群中的一个节点已关闭。我所有的阅读都失败了这个例外。任何的想法?理想情况下,只有在已关闭节点中查找数据的读取才会失败,而所有其他读取都应该成功?
问问题
3538 次
2 回答
4
可能有几种可能:
- 您正在运行需要多个节点启动的多行查询(get_range、get_indexed_slices、multiget 或 cql 等效项)
- 您的集群不平衡,down 节点拥有大部分环;一个糟糕的多直流配置也可能产生类似的东西
- 您的集群一开始就处于不好的状态,有些节点看不到其他节点。确保 nodetool ring 在对集群中的每个节点运行时显示相同的输出
如果这些都不是原因,请仔细检查您是否使用 Hector 和 cqlsh 正确指定了一致性级别。
于 2012-09-06T01:33:06.117 回答
3
当我错误地配置我的复制设置时,我看到了类似的情况,特别是我有错误的数据中心命名为复制策略。仔细检查您的 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};
于 2012-09-06T15:44:31.573 回答