【问题标题】:Leveled Compaction Strategy with low disk space低磁盘空间的分级压缩策略
【发布时间】:2015-06-30 00:13:42
【问题描述】:

我们有带有分级压缩策略的 Cassandra 1.1.1 服务器。

系统工作,以便有读取和删除操作。每半年我们都会删除大约一半的数据,同时有新数据进来。有时磁盘使用率会上升到 75%,而我们知道实际数据占用大约 40-50% 的其他空间被墓碑占用。为了避免磁盘溢出,我们通过将所有 SSTable 降到 0 级来强制压缩我们的表。为此,我们删除 .json 清单文件并重新启动 Cassandra 节点。 (gc_grace 选项没有帮助,因为压缩仅在关卡填充后才开始)

从 Cassandra 2.0 开始,清单文件已移至 sstable 文件本身:https://issues.apache.org/jira/browse/CASSANDRA-4872

我们正在考虑迁移到 Cassandra 2.x,但我们担心不再有强制分级压缩的可能性。

我的问题是:我们如何才能使我们的表具有磁盘空间限制,例如150GB? (当超过限制时,它会自动触发压缩)。问题主要是关于 Cassandra 2.x。虽然也欢迎 Cassandra 1.1.1 的任何替代解决方案。

【问题讨论】:

    标签: cassandra cql cassandra-2.1


    【解决方案1】:

    好像我自己找到了答案。

    • 从 2.x 版本开始有一个工具 sstablelevelreset,它的级别重置与删除清单文件类似。该工具位于 Cassandra 发行版的工具目录中,例如apache-cassandra-2.1.2/tools/bin/sstablelevelreset。

    • 从 Cassandra 1.2 (https://issues.apache.org/jira/browse/CASSANDRA-4234) 开始,支持 tombstone_threshold 选项的 Leveled Compaction Strategy 支持 tombstone 删除。它提供了在表格中设置最大墓碑比例的可能性。

    【讨论】:

    • 另外值得注意的是,您仍然可以通过 JMX 强制单个文件级压缩(encql.com/purge-cassandra-tombstones 支持 1.2、2.0、2.1)——即使 cassandra 的压缩策略不会选择给定的 sstable 来压缩,你可以手动强制它被压缩,如果它们是 GC-able,则墓碑将被清除。
    猜你喜欢
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2019-06-10
    • 2018-11-10
    • 2021-11-17
    • 2018-12-05
    • 2017-11-18
    相关资源
    最近更新 更多