Diskmanagement
Cassandra 是否會在插入額外磁碟後重新平衡數據?
我正在執行一個有 5 個節點的 Cassandra 集群,每個節點有 10 個 1Tb 磁碟 (JBOD)。目前,其中一個節點處於有問題的情況下,由於單個磁碟上的磁碟空間不足,大型壓縮無法再成功完成。
我試圖弄清楚在 JBOD 配置中添加額外磁碟會產生什麼影響。
- 是否會自動重新分配現有數據以最佳利用新磁碟?
- 是否只會將新數據寫入新添加的磁碟?
- 我可以手動將 sstables 移動到不同的磁碟嗎?
- 拆分 sstables 是一種選擇嗎?
我在網上找到了不完全確定的來源:
- https://stackoverflow.com/questions/23110054/cassandra-adding-disks-increase-storage-volume-without-adding-new-nodes似乎暗示“隨著時間的推移,數據會在磁碟之間均勻分佈”,但並沒有指定這是由於重新平衡還是新數據將僅寫入新磁碟的事實(也是舊連結,因此不確定是否仍然相關)。
- http://mail-archives.apache.org/mod_mbox/cassandra-user/201610.mbox/%3cCAMy13tA3cZ++LaVnUsuwkwbR5tvBdhMEOqWij9nrWRODq42rLQ@mail.gmail.com%3e似乎暗示壓縮將始終使用 Cassandra 3.2+ 在本地執行數據磁碟.
新數據和壓縮期間將寫入新磁碟。實際邏輯取決於 Cassandra 版本,例如,較新版本將特定分區範圍放入特定磁碟。通常的建議是使用 RAID-0 來擁有一個大磁碟,這樣你就不會遇到大 SSTables 的問題。但是這種方法有一個缺點——如果失去了一個磁碟,您會失去所有數據並且需要重建所有內容。
從理論上講,您可以手動將一些 SSTables 移動到其他磁碟(假設該節點已停止),然後 Cassandra 將在壓縮期間重新分配數據,但我還沒有嘗試過這種配置。該操作還有另一個問題 - 如果您移動了一些 SSTables 並且它已刪除或更新了被另一個磁碟上的新數據遮蔽的數據,並且如果該磁碟崩潰,那麼您可以恢復已刪除/舊數據。
每個節點 PS 10Tb 太瘋狂了。想想如果伺服器壞了,重建一個節點需要多少時間。