由于OffsetOutOfRangeException,因此无法重新启动Kafka Consumer应用程序

时间:2019-02-25 20:37:52

标签: apache-kafka offset kafka-consumer-api hadoop-streaming

当前,我的Kafka Consumer流应用程序正在将enable.auto.commit设置为false的偏移量手动提交到Kafka中。 当我尝试重新启动它并引发以下异常时,该应用程序失败:

org.apache.kafka.clients.consumer.OffsetOutOfRangeException: Offsets out of range with no configured reset policy for partitions:{partition-12=155555555}

假设上述错误是由于消息不存在/由于保留期限导致分区删除,我尝试了以下方法:

我禁用了手动提交并启用了自动提交(enable.auto.commit=trueauto.offset.reset=earliest) 仍然失败,并出现相同的错误

org.apache.kafka.clients.consumer.OffsetOutOfRangeException: Offsets out of range with no configured reset policy for partitions:{partition-12=155555555}

请提出重启作业的方法,以便它可以成功读取存在消息/分区的正确偏移量

2 个答案:

答案 0 :(得分:0)

您正在尝试从主题155555555的分区12读取偏移量partition,但是-根据您的保留策略,它很可能已经被删除。

您可以使用Kafka Streams Application Reset Tool来重置Kafka Streams应用程序的内部状态,以便它可以从头开始重新处理其输入数据

$ bin/kafka-streams-application-reset.sh

Option (* = required)         Description
---------------------         -----------
* --application-id <id>       The Kafka Streams application ID (application.id)
--bootstrap-servers <urls>    Comma-separated list of broker urls with format: HOST1:PORT1,HOST2:PORT2
                                (default: localhost:9092)
--intermediate-topics <list>  Comma-separated list of intermediate user topics
--input-topics <list>         Comma-separated list of user input topics
--zookeeper <url>             Format: HOST:POST
                                (default: localhost:2181)

或使用新的消费者组ID来启动您的消费者。

答案 1 :(得分:-1)

我遇到了同样的问题,并且在我的应用程序中使用了org.apache.spark.streaming.kafka010软件包。一开始,我认为auto.offset.reset策略无效,但是当我阅读了对它的描述时对象KafkaUtils中的fixKafkaParams方法,我发现配置已被覆盖。我猜想它为执行者调整ConsumerConsumerConfig.AUTO_OFFSET_RESET_CONFIG的原因是要保持驱动程序和执行者获得的一致偏移量。