微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重复的 Cassandra SSTable 文件

如何解决重复的 Cassandra SSTable 文件

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?

解决方法

也许我没看清楚,但我在您发布的文件列表中没有看到任何重复的 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,那么在将它们压缩在一起之前,它将需要类似大小的 sstables 作为候选对象。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。