【问题标题】:Kafka reset tool Consumer offset not resetting to zeroKafka重置工具消费者偏移量未重置为零
【发布时间】:2017-05-08 15:09:38
【问题描述】:

我正在尝试了解一些基本的 Kafka 概念,以便我可以正确监控基于 KafkaStreams 的应用程序的进度。

特别是出于调试目的,我需要能够让我的应用程序重新使用整个主题。为此,我使用了reset tool

在执行脚本后,查看 Kafka 管理器的一些输入主题,我看到Consumer Offset 减少了,Lag 增加了(这是有道理的)。尽管Consumer Offset 不会归零。我试图解释这一点,但我还没有找到关于 Kafka Manager 中的 Consumer OffsetLogsize 所指内容的具体解释。

为了使它符合我所看到的,我假设Logsize 是自该主题开始以来放置到该主题中的消息总量,但不一定是该主题中当前的消息量。因为有些可能由于年龄超过保留期而被丢弃。我说的对吗?

如果不是,那么在为某些输入主题运行重置工具后,我观察到Consumer Offset 等于Logsize(而不是零)和Lag 为零的事实背后的解释是什么?

【问题讨论】:

  • 你确定主题中的第一个偏移量是0吗?

标签: apache-kafka kafka-consumer-api apache-kafka-streams yahoo-kafka-manager


【解决方案1】:

我不熟悉yahoo-kafka-manager,但是,您也可以使用bin/kafka-consumer-groups.sh(Kafka 自带的工具)。那里 LOG-END-OFFSET 意味着你所描述的。从命名的角度来看,我不清楚 Logsize 是否与“日志结束偏移量”相同或分区中最高和最低偏移量之间的差异。

在执行脚本后,查看 Kafka 管理器的一些输入主题,我看到消费者偏移量减少了,而延迟增加了。

这是有道理的——因为“滞后”是“日志结束偏移”和“提交偏移”的差异,所以在重置应用程序后应该增加滞后。 但是,我不确定为什么承诺的消费者组偏移量不为零(您能否非常了解使用bin/kafka-consumer-group.sh 观察到的情况——也许yahoo-kafka-manager 会报告一些不同的情况)。

更新:但是该工具不会将偏移设置为零,而是设置为“日志开始”。 (文档不正确。)

另外请注意,auto.offset.reset 策略可能会在您重置应用程序并重新启动后生效(如果日志被截断,[committed] offset zero 可能无效)。这可以解释您观察到的行为吗?

这篇博文也可能有助于了解更多细节:https://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/

【讨论】:

  • 通过将数据写入某个测试主题,我验证了我对 Logsize 含义的假设是正确的。但我认为auto.offeset.reset 与我所看到的无关。我认为重置工具本身会选择最新的可用偏移量,如果零不可用,则不会将偏移量重置为零。我通过将值设置为最新和最早并没有看到任何变化来检查这一点。如果重置工具将偏移设置为零,auto.offset.reset 在每种情况下的行为都会有所不同。重置工具会不会是这样更新的?
  • 嗯...不确定。顺便说一句:文档并不完全正确。输入主题的“seeksToBeginning”工具(参见github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/…)所以auto.offset.reset在重置后启动Streams应用程序时不应触发(有什么意义——文档不正确:(——我会打开一个PR为下一个版本修复文档)
猜你喜欢
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 2017-12-13
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多