【问题标题】:Cassandra vnodes: can I lower the number on slower nodes and expect rebalancing to occur automatically?Cassandra vnodes:我可以降低较慢节点的数量并期望自动发生重新平衡吗?
【发布时间】:2017-03-07 00:17:57
【问题描述】:

我正在运行一个包含 3 台计算机的小型 Cassandra 2.2.1 测试集群。其中两个是 i7s,一个是稍慢的 i5,但我在第一次设置时没有打扰,因为我认为事情会受到 IO 限制(它们都有 SSD 和16GB 内存)。它们都在默认的 256 个 vnode 上。

我发现 Cassandra 实际上是 CPU 密集型的,而且这个 i5 似乎在阻止事情(在 HTOP 上运行 100%x4)。我可以减少它的 Vnode 数量,比如 cassandra.yaml 中的 192 个,重新启动 仅那个节点,并期望整个 3 机集群重新平衡吗?自动共享新的 vnode 分配等?或者我是否必须单独在 i5 上做某事,或者可能在所有 3 台机器上使用 nodetool?

我发现文档对此有些不清楚,因为它主要是关于添加新的节点而不是更改现有硬件上的 vnode。

【问题讨论】:

  • 你的键空间定义是什么?
  • @piotrwest:我正在使用 SimpleStrategy 和复制因子 2。
  • 那没关系。我之所以问,是因为如果您的 RF=3,所有节点都将拥有完整的数据集,因此更改 vnode 不会有太大作用。

标签: cassandra


【解决方案1】:

简单的重启将不允许您更改 vnode 的数量。

您需要为 i5 节点执行 nodetool decommission 或 nodetool removenode,然后在该节点上停止 Cassandra,清理所有数据,更新 num_tokens,然后重新启动 Cassandra 并让它作为一个空的新节点重新加入集群令牌数量减少的节点。然后 Cassandra 将重新平衡 i5 盒子上减少的令牌数量。

至少在 2.1.9 中是这样,但在较新的分支中可能也是如此。

【讨论】:

  • 好的 - 清理数据意味着进入 cqlsh,删除所有表和键空间,删除 /var/lib/ 中的数据文件和提交日志cassandra/data 和 /var/lib/cassandra/commitlog?
  • 删除 cassandra 并重新安装更简单。这就是你上面描述的最终结果。
【解决方案2】:

我没有足够的声誉发表评论,但要回答 Thomas Browne 的问题:不要那样做! 如果您删除表和键空间,您将丢失所有节点上的所有数据。您要做的是停止 cassandra,转到您正在修改的节点上的数据目录,然后 rm -rf * 该目录中的数据。例如:rm -rf /var/lib/cassandra/*

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2011-01-15
    • 2013-04-26
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多