6

我找不到关于“compactionstats”的文档:

使用时,和列nodetool compactionstats上的数值是什么意思?我的列族的总数据大小约为 360 GB,但我的压缩状态显示:completedtotal

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?

4

1 回答 1

3

你必须打开压缩。 total是组成被压缩在一起的一组 sstable 的未压缩字节的总数。如果您对 cassandra 日志文件中包含的行进行 grep,Compacting您将找到作为压缩一部分的 sstable。如果将这些大小相加并乘以列族的压缩比的倒数,您将非常接近总数。默认情况下,这在多核系统上可能有点难以验证,因为同时压缩的数量默认为核心数量。

您还可以通过查看代码来验证此答案:

AbstractionCompactionIterable -getCompactionInfo()使用该类中 的bytesReadand字段。是最终的,并在构造函数中通过对作为压缩的一部分的每个文件求和来计算。totalBytestotalBytesgetLengthInBytes()

扫描仪各不相同,但CompressedRandomAccessReader返回的字节长度是文件的未压缩大小。

于 2014-07-01T01:26:59.763 回答