代码之家  ›  专栏  ›  技术社区  ›  YK S

Cassandra集群上的数据分区与复制

  •  1
  • YK S  · 技术社区  · 6 年前

    我有一个3节点的Cassandra集群,RF=3。现在当我这样做的时候 nodetool status 我明白了 对于集群中的每个节点都是100%。

    拥有 是60%(如下图所示)。

    现在我们有一个5节点集群,RF是3。

    enter image description here

    编辑1

    根据我的理解,原因是60%(大约) 拥有

    但现在的问题是,我们检查了集群的所有节点,所有节点都包含所有数据,即使RF是3。

    :

    @亚伦我按评论中的说明做了。我创建了一个有3个节点的新集群。

    enter image description here

    我创建了一个键空间“test”,并将类设置为simplestrategy,将RF设置为2。

    enter image description here

    然后我创建了一个具有分区键(id,name)的表“emp”。

    enter image description here

    根据您的解释,它应该只在2个节点中作为RF=2。

    但是当我登录到所有3个节点时,我可以看到在所有节点中复制的行。

    我认为,由于键空间在所有节点中都被复制,因此数据也被复制。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Aaron    6 年前

    百分比所有权不受实际数据的影响。您可以将一个新节点添加到单个节点集群(RF=1),它将 立即

    所有权百分比纯粹是指节点负责的令牌范围的百分比。添加节点时,将重新计算标记范围,但直到发生流式处理事件时,数据才实际移动。同样,直到 cleanup .

    默认的随机哈希算法,它将数据均匀地分布在集群中的所有节点上。

    实际上,杂音3分区的分布式散列将均匀地分布令牌范围, 数据。这是一个重要的区别。如果您将所有数据写入一个分区,我保证您会 获得数据的均匀分布。

        2
  •  1
  •   Alex Ott    6 年前

    nodetool cleanup 在将新节点添加到集群中之后的“旧”节点上。这将删除移动到其他节点的范围。