由于磁盘空间不足,cassandra压缩未完成

时间:2018-08-17 22:34:49

标签: cassandra

所有三台机器的数据量均为1.6T,但是这种不平衡不允许在一个节点上完成压缩(10.8.5.61):

[root@is05 ~]# df -h /export/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg01-data
                  1.6T  1.6T   28G  99% /export
[root@10.8.5.61 ~]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                                       Rack
UN  10.8.5.61   1.56 TB    256     34.8%             d8ac5a47-6cd4-47b6-96c5-1d87ccaca71d  rack1
UN  10.8.7.49   1.18 TB    256     30.1%             5c860455-1b27-4a0b-a5ed-357c2fa3cb75  rack1
UN  10.8.5.179  1.49 TB    256     35.1%             9a080b1a-09df-42b7-b627-d5221408289f  rack1

是否可以将数据移动到第二个节点以留出更多的呼吸空间?我该怎么做才能回收其中数据最多的节点上的空间?

1 个答案:

答案 0 :(得分:2)

节点之间的数据分配取决于您的数据模型,并且看起来非常不对称(使用256个令牌分配应该是很好的)-您可以检查第一台和第三台计算机上是否存在大分区。

恕我直言,您有几种可能性(当然,取决于Cassandra的版本):

  • 将新服务器添加到群集中,然后等待重新平衡。无论如何,这是一个好主意,因为使用默认的压缩策略,您需要有高达50%的磁盘空间来执行压缩;
  • 在计算机上添加新磁盘,并配置第二个数据目录,以便Cassandra有执行任务的空间;
  • 尝试清理各个表中的垃圾(DataStax支持的blog post是尝试技术的很好概述);
  • 尝试通过JMX(CompactionManager bean,forceUserDefinedCompaction操作)来强制压缩单个SSTable(从小表开始)-例如,请参见此great article,以了解如何通过jmxterm运行它。您可以使用其他工具(例如JConsole)执行此操作