0

我们有带有分级压缩策略的 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 的任何替代解决方案。

4

1 回答 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 删除支持。它提供了在表格中设置最大墓碑比例的可能性。

于 2015-04-23T08:08:30.560 回答