【问题标题】:Cassandra control SSTable sizeCassandra 控制 SSTable 大小
【发布时间】:2015-06-06 04:19:48
【问题描述】:

有没有办法可以控制 SSTable 的最大大小,例如 100 MB,这样当 CF 的数据实际上超过 100MB 时,Cassandra 会创建下一个 SSTable?

【问题讨论】:

    标签: cassandra cassandra-2.0


    【解决方案1】:

    不幸的是,答案并不那么简单,SSTables 的大小将受到压缩策略的影响,并且没有直接的方法来控制最大 sstable 大小。

    SSTables 最初是在 memtables 作为 SSTables 刷新到磁盘时创建的。这些表的大小最初取决于您的 memtable 设置和堆的大小(memtable_total_space_in_mb 是一个很大的影响者)。通常这些 SSTable 非常小。 SSTables 被合并到一个名为compaction 的过程中。

    如果您使用 Size-Tiered Compaction Strategy,您就有机会拥有非常大的 SSTable。当至少有 min_threshold(默认 4)个相同大小的 sstable 时,STCS 将通过将它们合并到一个文件中、过期数据和合并键来将 SSTable 合并到一个次要压缩中。这有可能在一段时间后创建非常大的 SSTable。

    使用分级压缩策略,有一个sstable_size_in_mb 选项可以控制 SSTables 的目标大小。一般来说,SSTables 会小于或等于这个大小,除非您有一个包含大量数据(“宽行”)的分区键。

    我还没有对 Date-Tiered Compaction Strategy 进行太多试验,但它的工作原理与 STCS 相似,因为它合并了相同大小的文件,但它按时间顺序将数据保持在一起,并且它具有停止压缩旧的配置数据(max_sstable_age_days)可能很有趣。

    关键是找到最适合您的数据的压缩策略,然后围绕最适合您的数据模型/环境的属性调整属性。

    您可以阅读有关压缩配置设置的更多信息here 和阅读this guide,以帮助了解 STCS 或 LCS 是否适合您。

    【讨论】:

    • 还应该补充一点:当谈到 SSTable 大小时,有一个很好的媒介,你也不希望你的 SSTable 太小,因为它会创建大量读取来获取你的数据使行更有可能在 SSTables 之间传播。您的 sstable 应该有多大可以接受取决于您的环境和您的要求,因此调整和测试最适合您的可能是件好事。
    • 感谢您的信息。我在哪里指定 sstable_size_in_mb ?我尝试将它像 sstable_size_in_mb: 40 放在 conf/cassandra.yaml 中,但 cassandra 启动失败并出现错误 org.apache.cassandra.exceptions.ConfigurationException: Invalid yaml。请从您的 cassandra.yaml 中删除属性 [sstable_size_in_mb]
    • @RRMadhav,您的表可能仍在使用 SizeTieredCompactionStrategy。此选项仅受 LeveledCompactionStrategy 支持,您可以使用以下 CQL 命令更改压缩策略:ALTER TABLE tablename WITH compaction = { 'class' : 'LeveledCompactionStrategy', 'sstable_size_in_mb' : 40 }。我建议使用 160MB 的默认 sstable 大小,因为这是 cassandra 团队发现的最理想的大小,并且从经验来看,拥有大量微小的 SSTable 不利于读取性能。
    • 不,我使用 compaction={'class': 'LeveledCompactionStrategy'} AND ...在 desc 表中创建了表,它显示相同: compaction={'class': ' LeveledCompactionStrategy'} 和
    • 哦,我明白了,sstable_size_in_mb 没有进入您的 cassandra.yaml,它是您表配置的一部分。
    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2021-06-01
    • 2023-03-03
    • 2016-04-06
    • 2017-04-25
    相关资源
    最近更新 更多