2013-03-25 80 views
1

我遇到了Cassandra的一個奇怪問題。我的理解是Cassandra可以插入縮放。這意味着如果我得到1500個寫入/秒的2臺服務器集羣,我可以將其增加到4臺服務器,並且接近1500次寫入/秒。據我所知,寫入數量可能不會隨着羣集中節點數量的增加而線性增加,但當添加更多節點時,我目前看不到寫入次數的增加。Cassandra在羣集上插入扼殺

我目前的設置是這樣的:

批量插入使用Pycassa的20行的批量大小。 複製因子2 耐用寫入

某些ColumnFamilies有正常的列,有些列的寬度高達數十萬列。具有寬列的ColumnFamilies的插入插入多個批次,而不是20個包含100,000個列的行。

cassandra集羣是EC2中託管的2節點集羣,使用帶有SSD驅動器的m1.xlarge(無raid),並且提交日誌與sstables位於同一驅動器中。

我試過將集羣擴展到10個以上的節點,我獲得了與2個節點相同的性能。我也嘗試增加導入數據的實例數量,性能是相同的,只是每個寫入操作的延遲會高得多。但無論我做什麼,我都無法使寫入速度超過1500/s。

回答

3

聽起來像你的客戶不飽和卡桑德拉。如果Cassandra不是CPU,I/O或網絡綁定,這是您的問題。

經驗法則是,2個Cassandra服務器需要大約1個客戶端機器以一個副本將其飽和。 (所以,大約爲1:4)。如果你不使用像Java那樣的「快速」語言,將客戶數量乘以5-10;對於Python,由於GIL,您還需要花費一些努力在每臺計算機內的多個進程之間進行並行化。

TLDR不斷添加客戶機,直到數字停止上升。

(我也建議有類似的OpsCenter,這將使用ByteOrderedPartitioner突出的如問題,還是整個集羣無法正常傳播請求負載監控。)

+0

,我收到了相同的性能與2個客戶端作爲10.但你是對的Cassandra服務器不是I/O綁定插入。它們的負載平均值在1-2左右,集羣的IOPS大約在500以下,這是驅動器能夠承受的。我有大約500個csv文件,我正在導入cassandra,每個客戶端一次運行8個進程,每次加載一個不同的csv文件。仍然沒有運氣...... – bwight 2013-03-25 17:55:57

+0

還要確保你的客戶端正在集羣周圍分發插入內容,而不是所有插入到同一個節點。 – Zanson 2013-03-26 23:17:19