Cassandra的可用性

时间:2012-09-05 19:58:21

标签: cassandra hector cassandra-0.7

我遇到了一个问题“me.prettyprint.hector.api.exceptions.HUnavailableException ::可能没有足够的副本来处理一致性级别。”当我有RF = 1时,读取一致性等级= 1并且6节点环/簇中的一个节点出现故障。我的所有读取都因此异常而失败。任何的想法?理想情况下,只有在正在关闭的节点中查找数据的读取应该失败并且所有其他读取应该成功吗?

2 个答案:

答案 0 :(得分:4)

可能有几种可能性:

  • 您正在运行需要多个节点启动的多行查询(get_range,get_indexed_slices,multiget或cql等效项)
  • 您的群集不平衡,向下节点拥有大部分环;糟糕的多直流配置也可能产生类似的东西
  • 您的群集开始时状态不佳,某些节点看不到其他节点。确保nodetool环在针对集群中的每个节点运行时显示相同的输出

如果这些都不是原因,请仔细检查您是否正确地使用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};