Cassandra数据文件夹中的多个版本的db文件

时间:2016-11-30 19:32:47

标签: cassandra spark-cassandra-connector cassandra-2.1

我一直在运行我的代码来读取/写入cassandra列族。我观察到我的表大小大约为10 GB,但是同一个表的db文件占用的磁盘空间大约为400 GB,文件的版本不同。

  • la-2749-big-Statistics.db la-2750-big-Index.db la-2750-big-Filter.db la-2750-big-Summary.db la-2750-big-Data.db la-2750-big-Digest.adler32 la-2750-big-CRC.db la-2750-big-TOC.txt la-2750-big-Statistics.db

  • la-2751-big-Filter.db la-2751-big-Index.db la-2751-big-Summary.db
    la-2751-big-Data.db la-2751-big-Digest.adler32 la-2751-big-CRC.db
    la-2751-big-Statistics.db la-2751-big-TOC.txt

  • la-2752-big-Index.db la-2752-big-Filter.db la-2752-big-Summary.db
    la-2752-big-Data.db la-2752-big-Digest.adler32 la-2752-big-CRC.db
    la-2752-big-TOC.txt la-2752-big-Statistics.db

想了解文件集的最新版本是否包含所有必需的数据,是否可以删除旧版本? cassandra是否提供滚动删除此类文件的工具?

1 个答案:

答案 0 :(得分:1)

您引用的数字是SSTable的编号(我认为它在技术上称为 generation )。具体来说,文件名的格式为:

CFName-Generation-SSTableFormat-ComponentFile

在你的情况下:

CFName = la
Generation = 275x
SSTableFormat = BIG
ComponentFile = Data.db, TOC.txt, etc...

您无法确定最后一个SSTable是否包含所有您需要的数据。如果不再引用的数据(快照会浮现在脑海中),并且它们的墓碑年龄大于gc_grace_seconds,那么旧代使用的磁盘空间可能只发布

首先应检查是否有快照,并最终使用nodetool删除它们。然后你应该调查你的墓碑如何在这些SSTable之间分配,在这种情况下,如果墓碑不能被压缩,你可能有更大的问题需要解决(例如架构重新设计或数据迁移到新的群集)。