我有一个12节点的Cassandra集群(版本3.11.4),在所有非简单数据表上的复制因子为3(使用org.apache.cassandra.locator.SimpleStrategy)和org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.
我的一个节点比其他节点使用更多的磁盘空间(~10GB对~4GB),尽管只有相同的%年龄Owns"nodeool status"中的值。该节点上的sstable比其他节点上的sstable大100-150%(该系统上没有快照)。它不仅影响一个表——DB中所有较大的表都受到影响(以相同的比例)
我已经查看了sstable,看看该节点上的文件是否有可疑的旧日期(表明一些压缩问题),但所有文件都是相对较新的,并且与数据的生命周期加上墓碑的生命周期一致。卡桑德拉。在节点之间,yaml是相同的(除了配置的IP地址)。
据我所知,这个集群最近没有伸缩操作,最近也没有网络连接问题。
是否有Cassandra专家可以建议这个磁盘空间不平衡可能是什么和可能的解决方案?我打算尝试在受影响的节点上重新启动Cassandra,如果没有帮助,可以使用显式的"节点工具修复—full",看看它们是否解决了磁盘空间占用问题,但我有点担心后者的消耗时间。
您是否使用allocate_tokens_for_keyspace?该算法在Cassandra 3中实现,有助于防止热点。
更多信息可以在这里和这里找到