首页 > 解决方案 > 新的 Kafka 消费者忽略最早的偏移量

问题描述

我有一个 kafka 主题(XYZ),只有一个分区和一个消费者(C1)在 RHEL6 机器上运行。我已将相同的设置复制到 RHEL7 机器上并停止 C1 并使用与 C1 相同的组 ID 启动新的使用者(C2)。C2 能够连接、交换心跳消息并重复打印以下调试语句,但不能消费消息。收到零记录。它使用“最早”的偏移重置,但似乎忽略了它。注意:所有消费者共享相同的代码版本。

日志:

Fetcher: [Consumer clientId=testclient-0, groupId=mcu] Fetch READ_UNCOMMITTED request at offset 1001 for partition XYZ-0 returned fetch data (error=none, highWaterMark=1001, lastStableOffset=1001, logStartOffset=10 ....

Adding READ_UNCOMMITTED request for partiion... Sending READ_UNCOMMITTED request for partition... Resetting offset for partition XYZ-0 to the committed offset 1001

我的问题是为什么它将偏移量重置为最新的偏移量值而不是从头开始使用消息。

以下是我试图解决的问题。

  1. 我能够使用来自同一集群上另一个主题的 C2 消费者的消息。
  2. 我能够在具有完全相同配置的不同 RHEL 6 机器上使用来自另一个消费者 C3 的同一主题 XYZ 的消息。
  3. 我使用了新的 Group id 但没有成功
  4. 首先盯着消费者但没有成功后产生消息。注意:Kafka 客户端版本 1.0

任何帮助将不胜感激。谢谢你。

标签: apache-kafkakafka-consumer-api

解决方案


设置以下 jvm 参数后,我能够修复它。

-Dorg.xerial.snappy.tempdir=/some/other/path/with/execpermissions/

我设置消费者的新主机没有 /tmp dir(default) 的写入权限,这是解压缩 snappy 库所需的。还要确保 /tmp 为这些库留有空间。具有旧消费者的 RHEL6 主机具有写入权限。压缩类型未在主题配置中设置,因此默认使用 snappy。我可以使用的其他主题将压缩类型设置为生产者,因此它不需要 snappy 库,因此可以工作。该问题与 RHEL 6 或 RHEL7 版本无关。

更多信息:Kafka Broker 为生成快速压缩消息的客户端引发错误


推荐阅读