【问题标题】:Set replication factor to 2, in a 3 node Cassandra cluster; but still data is getting replicated to all 3 nodes on insertion在 3 节点 Cassandra 集群中将复制因子设置为 2;但数据仍在插入时被复制到所有 3 个节点
【发布时间】:2017-01-24 16:25:04
【问题描述】:

我有一个 3 节点集群,复制因子为 2,但数据正在所有 3 个节点上复制。这就是我创建密钥空间的方式:

如果不存在 DEMO 则使用复制创建密钥空间 = {'class':'SimpleStrategy', 'replication_factor':2};

这里缺少什么?

【问题讨论】:

  • 你怎么知道它是“在所有 3 个节点上复制”?

标签: cassandra cassandra-cli


【解决方案1】:

Cassandra 根据行的主键分配数据。任何表一般分布在所有机器上,插入一行时,只插入“两台机器”(这两台机器不是随机的,可以用nodetool计算)

如果您想了解更多有关数据如何按主键分布的信息,请查看分区器。 Cassandra Partitioners

【讨论】:

  • 你的“任意两台机器”而已是错误的。应该是两台机器,因为您设置了 RF=2
  • 对不起,我不明白你强调的那两个句子之间的区别。他们的意思是一样的(至少对我来说)
  • 是的,我只是说每行没有“任何两台机器”,每行有“正好两台知名机器”,而句子“任意两台机器”可以是误导(对我来说)。
【解决方案2】:

数据被分布3 个节点上,每个节点都持有 2 条数据:它自己的一条属于其分配的数据分区,以及属于其邻居节点的数据。

【讨论】:

    【解决方案3】:

    尝试在具有该键空间的表中的任何分区键上执行getendpoints。您将获得包含该分区的节点列表。在这种情况下,您应该只获得 2 个节点的输出。

    $ nodetool getendpoints <keyspace> <table> key
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多