删除未使用的Kafka分区

时间:2019-09-05 10:24:08

标签: apache-kafka

我在集群中执行了主题的重新分配。整个过程中都存在一些问题(目标代理之一中的磁盘空间用尽了),但是我设法解决了该问题,该过程成功完成。

但是,似乎将一个分区重新分配给另一个代理时,并没有从源代理的磁盘中删除数据。而且由于部分很大,我希望它消失了。

出于明显的原因,我不想登录到shell和rm -rf目录。我将采取什么步骤调试为什么不删除数据,然后如何“鼓励”群集执行清理?

有一阵子以为保留策略可能会生效并删除数据,但是它设置为每10分钟运行一次,而且自重新分配完成以来已经过去了一天。

副本如下:

# bin/kafka-topics.sh -describe --zookeeper 1.2.3.4 --topic topic-name
Topic:topic-name    PartitionCount:4        ReplicationFactor:3     Configs:retention.ms=3153600000000,compression.type=lz4
        Topic: topic-name   Partition: 0    Leader: 1014    Replicas: 1014,1012,1002        Isr: 1012,1002,1014
        Topic: topic-name   Partition: 1    Leader: 1007    Replicas: 1007,1006,1003        Isr: 1006,1007,1003 <--- this is the partition
        Topic: topic-name   Partition: 2    Leader: 1013    Replicas: 1013,1008,1001        Isr: 1013,1008,1001
        Topic: topic-name   Partition: 3    Leader: 1011    Replicas: 1011,1016,1010        Isr: 1010,1011,1016

在这里我们可以看到代理1008拥有两个分区:2(应该)和1(应该,我们不应该这样做)。

/data_disk_0/kafka-logs# cat meta.properties | grep broker.id
broker.id=1008

/data_disk_0/kafka-logs# du -h --max-depth=1 . | grep topic-name-1
295G    ./topic-name-2
292G    ./topic-name-1

edit :奇怪的是,主题目录(/data_disk_0/kafka-logs/topic-name-1/*)中的所有文件都是由Kafka打开的(已通过lsof选中)。我不知道Kafka读取其数据目录中的所有文件(不管它们的状态如何)是否是默认行为,或者这意味着这些文件仍在以某种方式被使用。

0 个答案:

没有答案