我在集群中执行了主题的重新分配。整个过程中都存在一些问题(目标代理之一中的磁盘空间用尽了),但是我设法解决了该问题,该过程成功完成。
但是,似乎将一个分区重新分配给另一个代理时,并没有从源代理的磁盘中删除数据。而且由于部分很大,我希望它消失了。
出于明显的原因,我不想登录到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读取其数据目录中的所有文件(不管它们的状态如何)是否是默认行为,或者这意味着这些文件仍在以某种方式被使用。