我有一个包含大量数据的列族。数以千计的密钥包含小数据项,并且正在增长。
我注意到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,然后在启动时读取所有这些文件?
答案 0 :(得分:1)
您有很多文件,因为您使用的旧版Cassandra使用默认文件大小5mb进行Leveled压缩。进一步测试表明,对于这种特定的压缩策略,~160mb是更优的文件大小。我建议尽快切换到更大的尺寸。 https://issues.apache.org/jira/browse/CASSANDRA-5727
至于在启动时检查所有这些,它实际上并没有全部读取它们。 Cassandra只是打开文件句柄,以便在从数据库读取时可以从文件中访问数据。这是必要和正常的。