【问题标题】:Cassandra 2.1 speed up full compactionCassandra 2.1 加速完全压缩
【发布时间】:2018-03-14 22:55:38
【问题描述】:

我有一个使用 Leveled Compaction Strategy 的 Cassandra 2.1 集群。

根据我的计算,当达到下一个级别时,集群会在压缩自动启动之前用完空间。出于这个原因,我有一个 cron 作业每周运行“nodetool compact”以运行完整(主要)压缩以删除墓碑数据点。

我注意到完全压缩消耗的 CPU/网络资源非常少。使用更大的数据集,完全压缩运行数天。

我尝试将“setcompactionthroughput”设置为更高的数字(默认情况下为 128MB/s 而不是 32MB/s,甚至尝试将其设置为 0(无限制),但完全压缩速度似乎根本没有改变。

有什么我可以调整以使其更快的吗?提前致谢。

【问题讨论】:

    标签: cassandra cassandra-2.1


    【解决方案1】:

    在极少数情况下您应该通过nodetool compact 运行完全压缩 - 它会导致您现在可能看到的情况(一个巨大的数据文件,它永远不会自然地与其他 sstables 压缩,即使/尤其是当其他删除有发生了)。

    从您所处的状态中恢复并非易事,而是可能的。如果你有很多空闲的 cpu/IO,你可以尝试从 STCS 切换到 LCS,LeveledCompactionStrategy 会自然地将那个巨大的文件分成数千个小文件,并且随着时间的推移会更加积极地重写这些文件(所以墓碑被更经常地压实)。这对 CPU 和 IO 非常密集,所以如果你快要小费了,就不要这样做。此外,它会在短时间内复制磁盘上的所有数据,因此您需要低于 50% 的磁盘利用率才能执行此操作。

    如果您的磁盘利用率超过 50%,则您已陷入困境,您可能需要临时添加更多磁盘才能恢复。

    【讨论】:

    • 谢谢杰夫。我今天使用 LCS。有备用的 CPU 和 IO,我还确保主要压缩的磁盘使用率
    • 澄清一下——您现在正在使用 LCS 并进行完全压缩?或者你在其他桌子上有 LCS?您可以使用 JMX 为每个节点推出压缩策略(压缩策略可通过使用 jconsole 或 jmxterm 的 JMX 进行更改,因此您可以一次更改一个节点,或者一次更改一个可用区,如果您决定这样做的话但不希望 IO 同时命中所有节点)。您还可以通过 JMX 使用单个节点更改来测试有效性。
    • 我现在正在使用 LCS 并进行完全压缩。学习这个 JMX 技巧很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2017-01-17
    • 1970-01-01
    • 2011-11-30
    • 2015-04-10
    • 1970-01-01
    • 2012-03-19
    相关资源
    最近更新 更多