【问题标题】:In 2 node cassandra cluster if RF=1 and one node is down, I can write with CL=1 but can't read在 2 节点 cassandra 集群中,如果 RF=1 并且一个节点关闭,我可以使用 CL=1 写入但无法读取
【发布时间】:2016-11-26 06:29:30
【问题描述】:

我是 cassandra 的新手。

我有一个包含两个节点的集群。我已将复制因子设置为 1。现在,如果一个节点出现故障,我可以在 Consistency = ONE 的情况下插入没有错误的数据。插入后,如果我尝试相同,那么它会给我一个错误

Unavailable: code=1000 [Unavailable exception] message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'ONE'}

为什么 cassandra 不从协调节点读取数据?如果一个节点是UP,那么alive_replicas应该是1,不是吗?

我正在使用 cqlsh 客户端。

【问题讨论】:

    标签: cassandra datastax datastax-enterprise cassandra-2.0 bigdata


    【解决方案1】:

    复制因子为 1 意味着每个数据只存在一次(不是额外副本的数量,而是总副本的数量)。拥有一个包含两个节点且 RF=1 的集群,大约 50% 的数据将在节点 1 上,另一半将驻留在节点 2 上。

    您可以使用命令验证这一点(检查 Owns 列下的百分比)

    nodetool status your_keyspace_name
    

    现在,如果您的某个节点出现故障,则只能访问存储在活动节点上的那些密钥。这适用于读取和写入。因此,影响活节点的操作将成功,而影响死节点的操作将失败。您可以使用命令检查哪个节点负责任何给定的分区键

    nodetool getendpoints your_keyspace your_table your_key
    

    所以为了回答你的问题,我认为成功的写入会影响活动节点,而失败的读取会影响已关闭的节点。

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 2017-06-03
      • 1970-01-01
      • 2012-11-29
      • 2016-04-10
      • 2016-11-12
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      相关资源
      最近更新 更多