__consumer_offsets管理consumer
说明: 公司的kafka(1.0.0)要清理一些过期的消费组。开始以为像旧版的kafka(好像是0.9.0.0及以后的是新版本)那样,topic和consumer都交给zookeeper保管,傻乎乎地通过shell命令查看:
上图的是我们通过shell命令直接消费topic时的consumer,不是生产中代码中的。原来新版本的kafka为了避免在zookeeper上频繁地进行写操作,把consumer的元数据信息统一保存在一个topic里面,即:__consumer_offsets(这个topic的具体知识可以搜索了解一下)。
由于以前的默认配置被更改为cleanup.policy=compact,即7天前的旧日志段不会被删除,而是启用该topic的日志压缩 。因此__consumer_offsets的超时内容不会被删除,很久不用的consumer也保留下来了。找到了问题就好办了,只需要修改这个topic的相关配置就行了。
查看这个topic覆盖默认值的配置:
bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name __consumer_offsets --describe
删除一个覆盖值:
bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name my-topic --alter --delete-config cleanup.policy
这样cleanup.policy就变回默认值delete了,以后超时的旧日志段就会自动删除。
可以查看kafka官方文档,3.2 Topic 配置,中文版的哦。