添加新服务器时对 Cassandra 中的数据进行重新分区

Posted

技术标签:

【中文标题】添加新服务器时对 Cassandra 中的数据进行重新分区【英文标题】:Repartitioning of data in Cassandra when adding new servers 【发布时间】:2015-05-28 17:48:36 【问题描述】:

假设我有一个带有 3 个节点的 Cassandra 集群,每个节点都有 100GB 的可用硬盘空间。该集群的复制因子设置为 3,R/W CL 设置为 2,这意味着我可以容忍我的一个节点出现故障,而不会牺牲一致性或可用性。

现在假设我的服务器已经开始填满(以 80GB 为例),我想在集群中添加另外 3 台相同规格的服务器,保持相同的 CL 和 RF。

我的问题是:在我将新节点添加到集群并运行节点修复工具之后,假设我的每个节点应该大致(或多或少几 GB)每个节点包含 40GB 的数据是否公平?

如果没有,如何添加新节点而不用担心硬盘空间不足?

我为什么要问这个问题的一些背景知识: 我正在开发一个应用程序,该应用程序连接到运行 Cassandra 以进行数据存储的服务器。由于这只是我自己开发的,而且我在购买服务器方面的资金有限,所以我决定购买小型、便宜的“服务器”而不是更昂贵的机架选项,但我真的很担心如果磁盘分配不是(至少部分),则关于节点空间不足 同质化。

非常感谢您的帮助,

【问题讨论】:

【参考方案1】:

我的问题是:在我将新节点添加到集群并运行之后 节点修复工具,假设我的每个节点是否公平 每个应该大约(或多或少几 GB)40GB 数据

在运行nodetool cleanup 之后,您应该会在每个节点上看到大约 40GB 的数据。清理删除节点不再负责的数据。如果您不运行此命令,旧数据将保留在计算机上。

【讨论】:

太棒了。非常感谢。

以上是关于添加新服务器时对 Cassandra 中的数据进行重新分区的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra 集群管理-添加新节点

向cassandra添加节点时,请等待压缩?

实战-Cassandra之单令牌替换down节点

如何加快 cassandra 集群中的节点加入过程

Cassandra 将数据迁移到新服务器

多节点cassandra集群真的很慢