【问题标题】:Duplicated Cassandra SSTable files重复的 Cassandra SSTable 文件
【发布时间】:2021-06-10 12:51:38
【问题描述】:

nodetool repair 操作不成功后,我得到了两个大的 sstable 文件(下面列表中的最后两个)而不是一个,每个文件的大小都与之前的单个文件相同。现在这些文件无法通过常用工具(nodetool clean、nodetool compact、nodetool repair)合并回来。表被复制到另一个 cassandra 节点(replication_factor:2),现在还有两个大的 sstable 文件。

-rw-r--r--   1 cassandra cassandra  16M Mar  5 12:36 mc-116413-big-Data.db
-rw-r--r--   1 cassandra cassandra  34M Mar  5 01:21 mc-116320-big-Index.db
-rw-r--r--   1 cassandra cassandra  39M Mar  3 22:46 mc-116125-big-Index.db
-rw-r--r--   1 cassandra cassandra  66M Mar  5 12:25 mc-116412-big-Data.db
-rw-r--r--   1 cassandra cassandra 262M Mar  5 05:51 mc-116365-big-Data.db
-rw-r--r--   1 cassandra cassandra 263M Mar  5 08:46 mc-116386-big-Data.db
-rw-r--r--   1 cassandra cassandra 263M Mar  5 11:42 mc-116407-big-Data.db
-rw-r--r--   1 cassandra cassandra 7.2G Mar  5 03:18 mc-116345-big-Data.db
-rw-r--r--   1 cassandra cassandra  43G Mar  3 22:46 mc-116125-big-Data.db
-rw-r--r--   1 cassandra cassandra  48G Mar  5 01:21 mc-116320-big-Data.db```

I suppose that one of this files contains duplicated data. How can I compact files back to a single file?

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    也许我没有正确查看,但我在您发布的文件列表中没有看到任何重复的 SSTable 文件。

    如果你指的是这两个:

    -rw-r--r--   1 cassandra cassandra  43G Mar  3 22:46 mc-116125-big-Data.db
    -rw-r--r--   1 cassandra cassandra  48G Mar  5 01:21 mc-116320-big-Data.db
    

    它们不是重复的,因为它们有 2 个不同的世代 ID——116125116320。这意味着它们也有不同的祖先。

    如果您指的是这些:

    -rw-r--r--   1 cassandra cassandra  39M Mar  3 22:46 mc-116125-big-Index.db
    -rw-r--r--   1 cassandra cassandra  43G Mar  3 22:46 mc-116125-big-Data.db
    
    -rw-r--r--   1 cassandra cassandra  34M Mar  5 01:21 mc-116320-big-Index.db
    -rw-r--r--   1 cassandra cassandra  48G Mar  5 01:21 mc-116320-big-Data.db
    

    同样,它们不是彼此的重复项。 *-Data.db 文件包含实际数据。 *-Index.db文件是包含分区索引的组件文件,即用于快速检索的数据文件中的分区索引。

    如果你有兴趣,我已经在这篇文章中更详细地解释了它——https://community.datastax.com/questions/5219/。干杯!

    [更新]回答这个后续问题:

    你能猜出为什么这两个文件没有压缩成一个文件吗? 像往常一样吗?

    假设表配置了SizeTieredCompactionStrategy,则在将它们压缩在一起之前,它将需要大小相似的 sstable 作为候选。

    default minimum sstable candidatesmin_threshold: 4,因此您需要 4 个大小相似的 sstable 才能触发压缩。

    【讨论】:

    • 嗨 Erick 说“重复”我不是说“完全相等”。我只是假设一个文件中的数据可能会在另一个文件中重复数据,因为在修复失败之前,整个表的总大小约为 50Gb,你能想象为什么这两个文件不像往常一样压缩在一个文件中吗? ?
    • 让我更新我的答案以回复您的后续问题,因为我可能会用完这里的空间。 :) 干杯!
    • 埃里克,你是对的,我使用 STCS。新的 sstable 文件在压缩之前会增长到 2Gb 大小,但我想这两个文件永远不会以这种方式压缩。那么,如何解决呢?我应该使用 sstablesplit 将这些文件拆分为许多较小的文件,还是临时更改一些压缩设置?
    • 是的,您可以使用sstablesplit,但这是一个离线工具,这意味着您不能在实时 SSTables 上运行它(即运行 C*)。另一种方法是手动触发压缩。请参阅我在此处发布的详细信息——community.datastax.com/questions/6385。干杯!
    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2020-07-11
    • 2021-06-01
    • 2023-03-03
    相关资源
    最近更新 更多