【问题标题】:How much free disk space is needed for compaction?压缩需要多少可用磁盘空间?
【发布时间】:2019-06-10 15:23:47
【问题描述】:

根据这篇文章:http://thelastpickle.com/blog/2017/03/16/compaction-nuance.html

"它查看所有 sstables 使用的总空间,将其相加,然后 根据可用磁盘空间检查它”

这是否意味着对存储在给定节点上的所有 sstable 或所有将被压缩的 sstable 计算总空间?

我们可以假设我们有 SizeTieredCompactionStrategy。

【问题讨论】:

  • 在压缩 sstable 发生之前不可能知道压缩的 sstable 的大小,因为无法知道墓碑或覆盖单元格中的阴影数据量。最好假设最坏的情况及其加在一起的 2 个文件的大小。

标签: cassandra cassandra-2.1


【解决方案1】:

根据the source code in CompactionTask#buildCompactionCandidatesForAvailableDiskSpace for Cassandra 2.1.20,写入大小适用于所有将被压缩的sstables(未过期的sstables)。

此外,作为一般建议,您应该将磁盘填充到磁盘大小的 50%,以便可以安全地执行压缩。

【讨论】:

  • 所以假设没有并行压缩,我们可以说所需的可用磁盘空间不超过最大键空间的大小,对吧?
  • CompactionTask 只考虑该压缩的 sstables,而不是所有可以并行运行的压缩。正如我之前所说,最安全的做法是将磁盘填充到其容量的 50%。除此之外,您可能会遇到麻烦。我看到系统很快就填满了空间。
【解决方案2】:

对于 SizeTieredCompactionStrategy 压缩策略,至少应释放 Cassandra 数据文件总磁盘空间的 50% 磁盘空间,以便可以安全地执行压缩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2021-01-29
    • 2021-11-17
    • 2014-10-06
    • 2011-05-12
    • 2015-06-30
    • 2018-11-10
    相关资源
    最近更新 更多