2014-01-14 86 views
6

我不能對「compactionstats」找到文檔:當使用nodetool compactionstats卡桑德拉nodetool「compactionstats」顯示的值的含義

,有什麼事就completedtotal列中的數值是什麼意思? 我列的家庭有大約360 GB的總數據大小,但我的壓實狀態顯示:

pending tasks: 7 
compaction type keyspace column family completed  total   unit progress 
Compaction  Test  Message   161257707087 2475323941809 bytes 6.51% 

當我看到「完成」慢慢增加(也進展;-)。

但是這個「總數」是如何計算的?當我只有360 GB的數據時,爲什麼是2.5 TB?

回答

3

您必須進行壓縮。 total是組合在一起壓縮的sstables的未壓縮字節的總數。如果grep包含Compacting的行的cassandra日誌文件,您會發現作爲壓縮的一部分的sstables。如果將這些大小相加並乘以列系列的壓縮比的倒數,則您將接近總數。默認情況下,這可能有點難以在多核系統上驗證,因爲同時壓縮的數量默認爲核心數量。

您也可以通過查看代碼來驗證這個答案:

AbstractionCompactionIterable - getCompactionInfo()使用bytesReadtotalBytes領域從該類。 totalBytes是最終的,並且在構造函數中通過從作爲壓縮的一部分的每個文件中求和getLengthInBytes()來計算。

掃描儀各不相同,但由CompressedRandomAccessReader返回的字節長度是該文件的未壓縮大小。