__consumer_offsets
占用磁盘空间过大,2T的磁盘空间,现在__consumer_offsets-44
占用了869G的空间,请问大佬这是什么导致的呀?从来没有遇到过这个问题。请求大佬解决一下
发表于 2021-07-09
__consumer_offsets
占用磁盘空间过大,2T的磁盘空间,现在__consumer_offsets-44
占用了869G的空间,请问大佬这是什么导致的呀?从来没有遇到过这个问题。请求大佬解决一下
原因
Kafka 中用于保存消费者消费位移的主题
__consumer_offsets
与普通topic在清理策略上不同,使用的就是Log Compaction
策略。Log Compaction是kafka提供的一种整理offset数据的方式。Log Compaction对于有相同key的的不同value值,只保留最后一个版本。如果应用只关心key对应的最新value值,可以开启Kafka的日志清理功能,Kafka会定期将相同key的消息进行合并,只保留最新的value值。
清理
查看现有的
__consumer_offsets
清理策略bin/kafka-configs.sh --zookeeper xxxx:2181 --entity-type topics --entity-name __consumer_offsets --describe
查看第一行输出可以看到
cleanup.policy=compact
,则说明cleanup.policy
是compact
__consumer_offsets
的确与普通topic在清理策略上不同,也就是参数cleanup.policy
上,给__consumer_offsets
手动添加了清理策略bin/kafka-configs.sh --zookeeper xxxx:2181 --entity-type topics --entity-name __consumer_offsets --alter --add-config 'cleanup.policy=delete'
添加完后,等了一会磁盘占用就会减少
错误: 代理抛出异常错误:
java.rmi.server.ExportException: Port already in use: 19988; nested exception is: java.net.BindException: 地址已在使用
我的按照上面执行后出现了这个错误,这个pid是我的kafka进程。
这个是网上的通俗的做法,但是不管用。我的kafka版本是1.1.1
这个是需要在每台kafka broker机器执行吗?
不用,一台就可以了。
你上面的那个错,是地址被占用了,跟这个问题无关呀?
我占用的这个进程就是kafka的进程,那你的意思是不用关闭kafka进程,直接进行操作吗?我在kafka运行的过程中,执行这个命令显示地址已经被使用,不知道你是如何操作的。
把__consumer_offsets的cleanup.policy设置为delete,对消费服务有影响吗
你的答案