2014-01-14 49 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返回的字节长度是该文件的未压缩大小。