需要“平衡”cassandra 集群

zoo*_*rew 1 cassandra datastax-enterprise

我构建了一个测试集群,在运行节点工具状态时查看它,我将数据分布在四个节点之间,如下所示:

-- 地址加载代币拥有

联合国节点3 1.61 GB 1 14.6%
联合国节点2 3.14 GB 1 19.4%
联合国节点1 7.68 GB 1 63.9%
联合国节点4 5.85 GB 1 2.0%

现在,在我将数据提取到数据库之前,所有节点都已添加,但我认为我可能因为在将数据引入集群之前没有手动设置令牌信息而搞砸了。

我的问题是如何最好地重新调整以更均匀地分布数据?

And*_*ert 5

如果您不使用 Vnode(因为每个节点有 1 个代币),您可以在每个节点上移动代币以均匀分布环。为此,请执行以下操作:

  1. 根据集群中的节点数量计算分配节点的令牌。您可以使用诸如cassandra 令牌计算器之类的工具。使用 Murmur3Partitioner 和 4 个节点,您可以使用:( -9223372036854775808 -4611686018427387904 0 4611686018427387904)
  2. 一次一个节点使用nodetool move将节点移动到新令牌(即nodetool move -- 0)并等待其完成。可能还要等一下。根据节点当前与要移动到的令牌的接近程度来选择将哪些节点移动到哪个令牌也可能是明智的。
  3. 通常,最好nodetool cleanup在该节点上进行后续操作以清理不再属于该节点的数据。