Cassandra为列族创建了数万个高清文件

时间:2014-06-02 09:32:00

标签: cassandra

我有一个包含大量数据的列族。数以千计的密钥包含小数据项,并且正在增长。

我注意到cassandra创建了大约170k文件,如下所示:

my_col_family-hd-702036-Data.db
my_col_family-hd-702036-Index.db
my_col_family-hd-702036-Digest.db
my_col_family-hd-702036-Statistics.db
my_col_family-hd-702036-Filter.db

它们仅与文件名中的数字不同。

当我重新启动cassandra时,它需要大约一个小时起床,日志说:

 INFO 09:26:34,649 Opening /var/lib/cassandra/data/foo/my_col_family-hd-805240 (5243383 bytes)
 INFO 09:26:34,649 Opening /var/lib/cassandra/data/foo/my_col_family-hd-731915 (5242896 bytes)
 INFO 09:26:34,714 Opening /var/lib/cassandra/data/foo/my_col_family-hd-797692 (5243454 bytes)
 INFO 09:26:34,753 Opening /var/lib/cassandra/data/foo/my_col_family-hd-688013 (5243541 bytes)

在读取所有170k文件之前大约需要一个小时

我想问这是否正常?为什么它会创建这么多小文件,每个5 MB,然后在启动时读取所有这些文件?

1 个答案:

答案 0 :(得分:1)

您有很多文件,因为您使用的旧版Cassandra使用默认文件大小5mb进行Leveled压缩。进一步测试表明,对于这种特定的压缩策略,~160mb是更优的文件大小。我建议尽快切换到更大的尺寸。 https://issues.apache.org/jira/browse/CASSANDRA-5727

至于在启动时检查所有这些,它实际上并没有全部读取它们。 Cassandra只是打开文件句柄,以便在从数据库读取时可以从文件中访问数据。这是必要和正常的。