我有一个cassandra集群,我尝试添加和删除它的节点,以评估调整大小时的吞吐量增益。问题是在运行添加和删除节点命令后(我也尝试使用nodetool进行清理),我现在无法添加2个节点,因为我遇到了这个异常:
java.lang.IllegalStateException: unable to find sufficient sources for streaming range
和cassandra bin挂起..我不完全确定cassandra是如何工作的,所以任何人都可以提供任何细节吗?
谢谢
编辑:
我的群集的复制因子为1,总共有10个节点(1个种子节点,7个工作节点和2个挂起节点 - 暂时)
答案 0 :(得分:1)
如果插入数据,则在复制因子(RF)过低时继续删除节点,从而永久删除群集中的数据。为什么?因为cassandra没有将数据复制到任何节点上(由于RF较低),并且被删除的节点存储了所有数据。
更直观地了解问题:
RF = 1
Each node stores 25% of the data
Total dataset = [node1, node2, node3, node4]
当我们删除节点2时,我们现在有75%的总数据,因为低rf +删除节点=数据丢失。 This source是一种简单的方法,可以在没有完整数据集之前调整可以节省多少节点。
您将不得不删除所有数据,或重新引入拥有该数据的节点。我的建议是增加复制因子。