2013-12-17 108 views
2

Greeings, 我配置了3節點Cassandra 1.2.12集羣,並且我能夠連接到主節點並在所有節點上創建密鑰空間和表。但是,我想在羣集上運行YCSB,因此當我運行YCSB並加載數據時,它全部加載到Master上。由於我正在加載1000000條記錄,我通過將該數除以我擁有的節點數來計算出初始令牌。 當我運行nodetool我得到的是這樣的:Cassandra未在集羣中的現有節點上平衡數據

Address Rack Status State Load Owns Token 
10.3.2.8 2  Up  Normal 1.08GB 100% 0 
10.3.1.231 2  Up  Normal 67.58KB 0%  330000 
10.3.1.128 2  Up  Normal 52.79KB 0%  660000 

是否有人有同樣的問題?我嘗試使用tokengentool來分配tokes和diffrenet分區(Murmur3和Random),並且它們都是相同的,只是將所有數據加載到主節點上。

問候,Veronika。

回答

4

「行」不等於Cassandra中的令牌。無論您打算存儲的行數是多少,Cassandra的RandomPartitioner都支持2^127個令牌。對於3節點羣集,這些初始令牌應該是56,713,727,820,156,410,577,229,101,238,628,035,242彼此相距的增量。

使用DataStax的Python腳本用於計算初始令牌,這些RandomPartitioner值應該爲你工作:

node 0: 0 
node 1: 567137278201564105772291
node 2: 113427455640312821154458202477256070485 

如果您使用的是Murmur3分區程序(-2^63 + 2^63個標記),使用這些值:

node 0: -9223372036854775808 
node 1: -3074457345618258603 
node 2: 3074457345618258602 
在這一點上

所以,你有兩個選擇:

1 - 停止使用10.3.1.231和10.3.1.128,停止節點,改變他們的initial_token值以匹配我上面的內容,然後重新啓動它們。但考慮到你提到過嘗試使用Murmur3和RandomPartitioner,我認爲你最好選擇下面的選項#2。

2 - 停止所有節點,刪除您的數據,follow these instructions,然後重新載入您的數據。

此外,您可能需要調整爲您的密鑰空間定義的複製因子。對於3節點羣集,您需要至少2的複製因子。這將確保如果一臺服務器出現故障,您仍然會擁有一份數據副本。而且這應該仍然允許您的應用程序解決(只要您的讀/寫一致性設置爲1)。

+0

你最有可能想給Murmur3,這是默認分區爲cass 1.2.12 – RussS

+0

@RussS的值良好的調用,編輯。 – Aaron

+0

我明白了,我的邏輯完全錯了。 我會嘗試你的建議,並希望它的作品。因爲我一直在努力幾個小時才能使它工作,並且無法工作。 Regards – Nika

相關問題