kafka清理数据日志

时间:2022-12-29 08:13:56

背景问题

使用kafka的路上踩过不少坑,其中一个就是在测试环境使用kafka一阵子以后,发现其日志目录变的很大,占了磁盘很大空间,定位到指定目录下发现其中一个系统自动创建的 topic,__consumer_offsets-45(kafka一共创建了50个分别从0~49标识)文件夹很大,上网搜了一翻,终得解决,记录一下。

 kafka清理数据日志

 

问题环境

kafka版本:kafka_2.12-0.10.2.1

 

解决方法

假如server.properties有以下配置项:

...
log.dirs=/data/kafka-logs
log.cleaner.enable=true log.cleanup.policy
= delete    // delete|compact log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000
...

以上配置对于特殊的topic,比如__consumer_offsets不一定有效,可以通过bin目录自带的kafka-configs.sh脚本查看下,操作如下:

 ./kafka-configs.sh --zookeeper 172.19.228.188:2181 --entity-type topics --entity-name __consumer_offsets --describe 

显示如下:

Configs for topic '__consumer_offsets' are segment.bytes=104857600,cleanup.policy=compact,compression.type=producer

看的出来,segment.bytes、cleanup.policy、compression.type这三个配置项是针对topics的,server.conf配置log.cleanup.policy, log.segment.bytes 没有起效,如果想让该配置跟随server.conf配置,则执行以下命令,删除特殊配置 :

 ./kafka-configs.sh --zookeeper 172.19.228.188:2181 --entity-type topics --entity-name __consumer_offsets --alter --delete-config cleanup.policy 

然后系统在后台就清理对应过大的文件了,也就释放了磁盘空间。