2013-10-05 140 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