kafka __consumer_offsets主题日志的大小快速增长,从而减少了磁盘空间

用户名

我发现__consumer_offsets主题日志的大小正在迅速增长,并且在对其进行研究之后,进一步发现主题日志的数量最大。我更改了有关这些主题的保留策略以阻止增长率,但想增加磁盘空间并删除该__consumer_offsets主题的所有旧日志

但这将导致所有其他主题和消费者/生产者损坏或丢失有价值的元数据。有没有办法可以做到这一点?我正在查看配置的参数,其中包括清理策略和压缩,但不确定如何专门针对导致快速增长的主题进行指定。

https://docs.confluent.io/current/installation/configuration/topic-configs.html

感谢您的协助。

Giorgos Myrianthous

在Kafka中,有两种日志保留方式:大小保留时间前者由触发,log.retention.bytes而后者由触发log.retention.hours

在您的情况下,您应注意保留大小,这有时可能很难配置。假设您需要delete清理策略,则需要配置以下参数以

log.cleaner.enable=true
log.cleanup.policy=delete

然后,你需要考虑的配置log.retention.byteslog.segment.byteslog.retention.check.interval.ms为此,您必须考虑以下因素:

  • log.retention.bytes对主题单个分区的最低保证,这意味着,如果您将其设置log.retention.bytes为512MB,则意味着磁盘上(每个分区)将始终具有512MB的数据。

  • 同样,如果在任何给定时间将其设置log.retention.bytes为512MB并设置log.retention.check.interval.ms5分钟(这是默认值),则触发保留策略之前,您将至少有512MB数据+ 5分钟窗口内生成的数据大小。

  • 磁盘上的主题日志由段组成。段大小取决于log.segment.bytes参数。对于log.retention.bytes=1GBlog.segment.bytes=512MB,您在磁盘上将始终最多有3个段(2个达到保留的段,第3个将是当前写入数据的活动段)。

最后,您应该进行数学运算,并计算Kafka日志在磁盘上任何给定时间可能保留的最大大小,并相应地调整上述参数。当然,我也建议您同时设置一个时间保留策略并进行相应配置log.retention.hours如果两天后您不再需要数据,请设置log.retention.hours=48


现在,为了更改仅适用于该__consumer_offsets主题的保留策略,您可以简单地运行:

bin/kafka-configs.sh \
    --zookeeper localhost:2181 \
    --alter \
    --entity-type topics \
    --entity-name __consumer_offsets \
    --add-config retention.bytes=...

附带说明一下,您必须非常小心的保留政策,__consumer_offsets因为这可能会使您的所有消费者困惑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章