需要平衡"一个cassandra集群

时间:2015-04-20 16:13:44

标签: cassandra datastax-enterprise

我有一个我构建的测试集群,在运行nodetool状态时查看它,我将数据分布在四个节点中:

- 地址加载标记拥有

UN NODE3 1.61 GB 1 14.6%
UN NODE2 3.14 GB 1 19.4%
UN NODE1 7.68 GB 1 63.9%
UN NODE4 5.85 GB 1 2.0%

现在所有节点都是在我将数据存入数据库之前添加的,但我想我可能在将数据导入集群之前没有手动设置令牌信息而搞砸了。

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

2 个答案:

答案 0 :(得分:3)

如果您没有使用Vnode(由于每个节点有1个令牌,因此您不能使用Vnodes),您可以在每个节点上移动令牌以均匀分配您的戒指。为此,请执行以下操作:

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

答案 1 :(得分:1)

对安迪的观点+1。我想补充一点。

为确保您获得准确的Owns%,您必须为nodetool status <ks>

指定一个Cassandra Keyspace