背景问题:
使用kafka的路上踩过不少坑,其中一个就是在测试环境使用kafka一阵子以后,发现其日志目录变的很大,占了磁盘很大空间,定位到指定目录下发现其中一个系统自动创建的 topic,__consumer_offsets-45(kafka一共创建了50个分别从0~49标识)文件夹很大,上网搜了一翻,终得解决,记录一下。
问题环境:
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
然后系统在后台就清理对应过大的文件了,也就释放了磁盘空间。