apache-kafka - 新的 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
我的问题是为什么它将偏移量重置为最新的偏移量值而不是从头开始使用消息。
以下是我试图解决的问题。
- 我能够使用来自同一集群上另一个主题的 C2 消费者的消息。
- 我能够在具有完全相同配置的不同 RHEL 6 机器上使用来自另一个消费者 C3 的同一主题 XYZ 的消息。
- 我使用了新的 Group id 但没有成功
- 首先盯着消费者但没有成功后产生消息。注意:Kafka 客户端版本 1.0
任何帮助将不胜感激。谢谢你。
解决方案
设置以下 jvm 参数后,我能够修复它。
-Dorg.xerial.snappy.tempdir=/some/other/path/with/execpermissions/
我设置消费者的新主机没有 /tmp dir(default) 的写入权限,这是解压缩 snappy 库所需的。还要确保 /tmp 为这些库留有空间。具有旧消费者的 RHEL6 主机具有写入权限。压缩类型未在主题配置中设置,因此默认使用 snappy。我可以使用的其他主题将压缩类型设置为生产者,因此它不需要 snappy 库,因此可以工作。该问题与 RHEL 6 或 RHEL7 版本无关。
推荐阅读
- google-people-api - people.searchContacts 的最大结果数是多少?
- php - 如何在两个不同的 php 文件中使用 GET 方法打印我的用户名/密码?
- sql - shell脚本环境中的连接池
- javascript - 仅显示一次数组数据
- sql - sql如何将多行作为一行返回
- apache-spark - 当我创建数据框时,我收到“Nullpointer Exception”
- python - urllib 和 requests 模块有什么区别?
- xml - 从单元格导入 XML 内容 - Google 电子表格
- c++ - 为什么在“{”之前不允许函数定义?
- python - 将字节数据列表转换为字符串