【问题标题】:CQLSSTableWriter : do I need compaction after ingestion with sstablesloader?CQLSSTableWriter:使用 sstablesloader 摄取后是否需要压缩?
【发布时间】:2019-09-28 13:26:42
【问题描述】:

我使用 CQLSSTableWriter 来编写我的数据对应的 SSTables :

 writer.addRow(1, "test", ...);

数据按分区键和聚类键排序,然后我为每一行排序数据调用addRow。

给定分区的数据写入单个 SSTables(或最多两个)。

两个问题:

  1. CQLSSTableWriter builder() 不需要压缩策略。这正常吗?

  2. 已创建的表具有 LCS 压缩。但是 CQLSSTableWriter 没有定义任何策略。因此,关于摄取后数据永远不会改变(在我的情况下!),并且在我使用 sstablesloader 将 SSTables 摄取到 Cassandra 之后,我阻止任何压缩运行是否有意义?或者我是否总是需要在每次使用 sstablesloader 摄取后运行压缩?

感谢让它更清晰一点!

【问题讨论】:

    标签: cassandra datastax cassandra-3.0 datastax-java-driver


    【解决方案1】:

    1) 是的,CQLSSTableWriter 只是创建 sstables。

    2) 当 Cassandra 从 sstableloader 或nodetool refresh/import 获取 sstable 时,它​​会自动进行任何必要的压缩。你不必也不应该做任何事情。

    如果你真的想要,你可以禁用压缩

    ALTER TABLE keyspace.table WITH COMPACTION = {'class': 'SizeTieredCompactionStrategy', 'enabled': 'false' }`
    

    然后它不会做任何事情,你可以忽略它,sstables 将保持原样。

    只有 2 个 sstables 中的分区并不一定意味着在读取时只会触及 2 个。 sstables 上的布隆过滤器仍然会提供误报,如果 sstables 的数量继续攀升,最终将成为一个问题。如果您的集群密钥随着时间的推移而增加,但是它可以用来过滤掉不必要的 sstables 以及最小/最大集群密钥保留在元数据中并在读取路径中检查(这就是 TWCS 和大多数时间序列数据如何防止太多建立)。随着 sstable 数量的增加,这也会对维修和其他操作任务产生很大影响。

    最终,除非它是一个问题,否则我会认真建议将压缩保留原样,如果您认为自己大部分情况良好,请使用 SizeTiered,它只会防止事情变得疯狂,同时与其他人相比,执行最少的读写操作。如果您的 CPU 在压缩时已达到最大值,您应该检查其他错误,因为它不应该消耗那么多(您怎么知道它的压缩?),您也可以随时限制压缩吞吐量。

    【讨论】:

    • 谢谢克里斯。然而,正如我在之前的评论中所说,我使用一个永远不会改变的历史表。那么,这些压缩是否真的需要在 sstablesloader 摄取后才触发?因为我已经使用 CQLSSTableWriter 确保单个分区最多可以访问 2 个 SSTables(90% 可以访问一个)。如果我真的必须让 Cassandra 自动压缩数据,即使是我的历史表用例,我如何才能防止压缩过程杀死我的 CPU(由于新表的压缩,我的所有 CPU 节点目前都达到 100%加载了 sstablesloader...)。再次感谢!
    【解决方案2】:

    最好让 Cassandra 决定何时执行压缩,不要尝试手动执行。

    【讨论】:

    • 问题是我有一个在摄取后永远不会改变的历史记录表。所以基本上,我更喜欢在使用 sstablesloader 之后避免任何压缩(如果可能的话!),因为压缩会触发数千个损害集群性能的任务,即使吞吐量上限为 16MB/s。所以创建表是安全的,在该表上完全禁用压缩(以避免压缩时 100% CPU),然后使用 sstablesloader 摄取?还是严格要求 Cassandra 在 sstablesloader 完成工作后进行压缩?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多