添加新节点时是不是需要对不同数据中心的节点进行nodetool清理

Posted

技术标签:

【中文标题】添加新节点时是不是需要对不同数据中心的节点进行nodetool清理【英文标题】:Is nodetool cleanup necessary on nodes of different data center when new node is added添加新节点时是否需要对不同数据中心的节点进行nodetool清理 【发布时间】:2014-08-02 22:08:57 【问题描述】:

我计划建立一个多数据中心 Cassandra 2,每个数据中心有 2-4 个节点和几十个数据中心。我们在每个数据中心的一定数量的节点上复制了键空间。我们有一个基于 vnode 的部署。所以令牌应该自动分配给节点。

http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html 的文档建议添加新节点需要在集群的所有其他节点上运行清理。但是,它并未阐明多数据中心设置中的程序。

我的理解是 nodetool cleanup 删除不再属于该节点的数据。当一个新的数据中心正在建立时,我们正在创建全新的副本和 AFAICT,它不会导致这个新数据中心之外的数据移动/重新平衡,因此对其他数据中心的节点没有清理要求。有人能确认我的理解是否正确,其他数据中心的节点不需要清理吗?

【问题讨论】:

【参考方案1】:

您的理解是正确的,但您的问题的答案取决于您在创建键空间时设置的复制策略。如果您在所有键空间上使用 NetworkTopologyStrategy,则多个数据中心将按照您的理解和解释运行,并且不需要在添加新数据中心后进行清理。但是,如果您在任何键空间上使用 SimpleStrategy,则所有数据中心都将作为该键空间的单个集群工作,因此在添加新节点后需要进行清理。

您可以在 cqlsh 上使用此命令检查当前的复制策略:

describe KEYSPACE keyspacename

希望对你有帮助!

【讨论】:

以上是关于添加新节点时是不是需要对不同数据中心的节点进行nodetool清理的主要内容,如果未能解决你的问题,请参考以下文章

我无法添加两个不同的功能节点

如何对HDFS进行节点内(磁盘间)数据平衡

jquery组件ztree问题:为啥添加新节点时会自动添加2个以上的新节点

KuberSphere 添加新 Node 节点

(10)横向扩展ceph集群

Drupal 7“新节点创建”是不是启动/准备不同内容类型的字段?