【问题标题】:Need to "balance" a cassandra cluster需要“平衡”一个 cassandra 集群
【发布时间】:2015-04-21 05:41:49
【问题描述】:

我建立了一个测试集群,在运行 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%

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

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

【问题讨论】:

    标签: cassandra datastax-enterprise


    【解决方案1】:

    如果您没有使用 Vnodes(因为每个节点有 1 个令牌,所以您没有使用),您可以在每个节点上移动令牌以均匀分布您的环。为此,请执行以下操作:

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

    【讨论】:

      【解决方案2】:

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

      为确保获得准确的 Owns %,您必须为 nodetool status <ks> 指定 Cassandra 密钥空间

      【讨论】:

        猜你喜欢
        • 2017-08-11
        • 2014-11-27
        • 1970-01-01
        • 2023-03-27
        • 2013-04-26
        • 1970-01-01
        • 1970-01-01
        • 2017-06-19
        • 2014-01-05
        相关资源
        最近更新 更多