重复的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

它们不是重复的,因为它们有两个不同的代号——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。

默认的最小sstable候选是min_threshold: 4,因此您需要4个大小相似的sstable来触发压缩。

相关内容

  • 没有找到相关文章

最新更新