1

我有一个 cassandra 集群,我尝试从中添加和删除节点,以评估调整大小时的吞吐量增益。问题是,在运行添加和删除节点命令后(我也尝试使用 nodetool 进行清理),我现在无法添加 2 个节点,因为我得到了这个异常:

java.lang.IllegalStateException: unable to find sufficient sources for streaming range

和 cassandra bin 挂起。我不完全确定 cassandra 是如何工作的,所以任何人都可以提供任何细节吗?

谢谢

编辑:

我的集群的复制因子为 1,总共有 10 个节点(1 个种子节点、7 个工作节点和 2 个挂起节点 - 目前)

4

1 回答 1

1

如果您插入数据,然后继续删除一个节点,那么如果您的复制因子 (RF) 太低,您将从集群中永久删除数据。为什么?因为 cassandra 没有将数据复制到任何节点上(由于低 RF),并且被删除的节点唯一地存储了所述数据。

更直观地看待这个问题:

RF = 1
Each node stores 25% of the data
Total dataset = [node1, node2, node3, node4]

当我们移除节点 2 时,我们现在拥有总数据的 75%,因为低射频 + 移除节点 = 数据丢失。这个来源是一种简单的方法,可以在没有完整数据集之前确定可以松散多少节点。

您将不得不删除所有数据,或重新引入具有数据的节点。我的建议是增加复制因子。

于 2013-10-06T08:16:20.467 回答