2013-04-14 45 views
2

我是cassandra的新手,現在我正在嘗試構建一個生產服務器。 在文檔中,我讀到的數據和commitlog應該在分開的驅動器(順便說一下我使用硬盤), 我把commitlog會增加到許多GB的數據,我創建了2個硬盤(兩個100Gb),首先將數據第二個提交日誌中的sstables)。但現在在配置我看到: commitlog_total_space_in_mb: 4096,我認爲這是'最大堆大小'。如果commitlog達到了這個限制,那麼看起來memtables的大小增加了,需要刷新到磁盤,memtables中包含的數據也從commitlog中刪除。Cassandra提交日誌只是(在內存中)堆的備份

所以請告訴我,如果我是正確的:commitlog是像堆的備份,不能增加到數百Gb?

而且我不需要爲此創建100Gb硬盤驅動器,就足夠了一個4Gb分區(在另一個硬盤驅動器上,數據(sstables)存儲位置不一樣)?

回答

5

commitlog就像堆的備份,不能增加到數百Gb?

commitlog是用於存儲在memtables中的數據副本的臨時存儲。這是爲了防止電源丟失,或者服務器在memtables可以寫成SSTables之前崩潰。只要將memtable刷新到磁盤,commitlog段就會被刪除。

堆中的其餘數據(緩存,正在傳輸的數據等)永遠不會存儲在提交日誌中。所以你的提交日誌通常會比你的堆小得多。

而且我不需要爲此創建100Gb硬盤驅動器就足夠了4Gb分區(在另一個硬盤驅動器上,數據(sstables)存儲位置不一樣)?

一個較小的分區將會很好,但是您可能想要在4 GB以上留下一點空間。

+0

謝謝。我將它設置爲10Gb。 – moldcraft

+3

我只會補充說,除非實際上有多個設備支持它們,否則沒有理由打擾單獨的分區。如果它只是一個物理磁盤,那麼對它進行子分區沒有任何好處。 – jbellis

+0

如果您沒有給出'commitlog_total_space_in_mb'的明確大小,Cassandra將選擇默認值8GB(對於64位JVM)或32MB(對於32MB JVM)。這表明大多數情況下8GB的大小是最佳的。 – Raedwald