2013-10-05 104 views
1

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

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

和卡桑德拉仓挂..我不完全确定cassandra是如何工作的,那么任何人都可以提供关于它的任何细节?

谢谢

编辑:

复制因子为1我的集群,在总共有10个节点(1个seednode,7个工作节点和2个节点 - 现在)

回答

1

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

甲多个视觉的作为在问题:

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

当删除节点2,我们现在具有的总数据的75%,因为低RF +删除节点=数据丢失​​。 This source是一种简单的方法,可以在没有完整的数据集之前,锻炼多少节点。

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

+0

我实际上尝试重新介绍数据,但我仍然得到异常。对此有什么想法?无论如何,谢谢你。 – giannis

+0

@giannis你是怎么介绍它的?再次插入数据不会工作,因为分配给它的范围将与原始数据不同。您必须将相同的物理节点备份,因为它们将数据和cassandra跟踪数据存储在分配的*范围*中。 –

+1

这听起来像是你的令牌环中仍然存在已死/已删除的节点。删除它们(你可能需要“强制”选项),然后你将能够回到你的测试。或者,将集群吹走并重新开始。 :) – jbellis