清理offset_kafka 0.9.0.0 __consumer_offsets日志清理问题?

谢邀

1. __consumer_offsets的确与普通topic在清理策略上不同,也就是参数cleanup.policy上compact和delete的区别。compact策略会对消息按照key进行压实操作(compact),你可以简单地理解为每个key上只保存最新的一个value。__consumer_offsets topic就是这样的清理策略。

在你使用的0.9版本中,这个策略两者必选其一,即要么delete要么compact。的确有可能出现这个topic数据量很大的情况。也正是这个原因,之后的版本中允许同时指定两种策略,即delete,compact,这样你既可以“享受”普通topic的删除策略也能实现compact的效果。因此你可以尝试升级kafka的版本,另外尝试减少offsets.retention.minutes值通常会加速这个topic过期消息删除的速度。个人不建议手动清理该topic,毕竟有可能造成group数据的丢失。不过,国外有个用户的确是把该topic的策略设置成了delete(参见[Kafka-users] Consumer Offsets Topic cleanup.policy 注意:请确保完全理解了这个帖子中所说的使用场景之后再这么做!另外比起这种“另类”的使用方法,升级到新版本Kafka并设置cleanup.policy=delete,compact似乎更加稳妥。)

2. log.cleaner.enable参数就是清除compact型topic的开关,默认就是true,不建议调整此参数。

3. 当前删除日志段是一个异步过程,log.segment.delete.delay.ms参数控制了等待多少秒后再开始删除操作。默认是1分钟,表示Kafka发起删除操作后,等1分钟才会开始删除底层的物理文件。至于cleaner.delete.retention.ms参数,Kafka会定期清理过期consumer group的元数据信息,一旦发现dead group,会往__consumer_offsets对应分区写入一个特殊消息,这种消息被称为tombstone消息或delete消息。Log cleaner在清理日志段时会根据cleaner.delete.retention.ms参数来计算一个时间点。位于该时间点之前的所有delete消息都会被清理掉。

这就是这两个参数的区别,希望我解释清楚了:)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值