我有一个使用Leveled Compaction Strategy的Cassandra 2.1集群。
根据我的计算,当压缩到达下一级别时,群集将在压缩启动之前耗尽空间。出于这个原因,我有一个cron作业,每周运行“nodetool compact”来运行一个完整的(主要)压缩来移除墓穴的数据点。
我注意到完全压缩消耗的CPU /网络资源非常少。使用更大的数据集,完整的压缩运行数天。
我试图将“setcompactionthroughput”设置为更高的数字(默认情况下为128MB / s而不是32MB / s,甚至尝试将其设置为0(无限制),但完全压缩速度似乎根本没有变化。
有什么我可以调整以使其更快?提前谢谢。
答案 0 :(得分:0)
极少数情况下你应该通过nodetool compact
运行完全压缩 - 它会导致你现在可能看到的东西(一个巨大的数据文件,它永远不会自然地与其他sstables压缩,甚至/特别是当其他删除发生时)。
从你所处的状态中恢复并不是微不足道的,但是可能的。如果您有大量的cpu / IO备用,您可以尝试从STCS切换到LCS,LeveledCompactionStrategy会自然地将这个巨大的文件分成数千个小文件,并且随着时间的推移将更加积极地重写这些文件(所以墓碑经常被压缩)。这非常耗费CPU和IO,所以如果您接近小费,请不要这样做。此外,它会在短时间内复制磁盘上的所有数据,因此您需要低于50%的磁盘利用率才能执行此操作。
如果您的磁盘利用率超过50%,那么您已将自己置于角落,并且您可能需要暂时添加更多磁盘才能恢复。