【问题标题】:Availability of CassandraCassandra 的可用性
【发布时间】:2012-08-30 14:38:17
【问题描述】:

我遇到了一个问题“me.prettyprint.hector.api.exceptions.HUnavailableException: : 可能没有足够的副本来处理一致性级别。”当我的 RF=1 时,读取一致性级别 = 1 并且 6 节点环/集群中的一个节点已关闭。我所有的阅读都失败了这个例外。任何想法?理想情况下,只有在已关闭节点中查找数据的读取才会失败,而所有其他读取都应该成功?

【问题讨论】:

  • 您是否看到使用 cqlsh 的相同问题? Hector 可能过于聪明,自己进行可用性检测。
  • 是的。我试过 CQLSH 也是同样的问题

标签: cassandra hector cassandra-0.7


【解决方案1】:

可能有几种可能性:

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

如果这些都不是原因,请仔细检查您是否使用 Hector 和 cqlsh 正确指定了一致性级别。

【讨论】:

    【解决方案2】:

    当我错误地配置了我的复制设置时,我看到了类似的情况,特别是我有错误的数据中心命名为复制策略。仔细检查您的 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};
    

    【讨论】:

    • 就我而言,我将 cassandra 模式从生产环境(有两个数据中心)复制到 QA 环境(有一个数据中心)。修复架构以指示一个数据中心后,问题得到解决。
    猜你喜欢
    • 2020-12-13
    • 2018-06-11
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多