由kafka-consumer-groups最早设置时的当前偏移行为?

时间:2019-05-26 14:05:18

标签: apache-kafka apache-kafka-streams

我有一个包含25个分区的kafka主题,集群已经运行了5个月。

据我对给定主题的每个分区的理解,偏移量从0,1,2 ...(无边界)开始

我看到log-end-offset值很高(现在-> 1230628032)

我创建了一个新的消费群,其偏移量设置为最早;因此,我希望该消费者组的客户从偏移量0开始。

我用来创建具有最早偏移量的新消费者组的命令:

kafka-consumer-groups  --bootstrap-server <IP_address>:9092 --reset-offsets --to-earliest --topic some-topic --group to-earliest-cons --execute

我看到正在创建消费者组。我期望当前偏移量为0。但是,当我描述消费者组时,当前的偏移量很高-> 1143755193。

记录保留期限设置为7天(标准值)。

我的问题是,为什么我们没有看到该消费者组中的消费者从其读取的第一个偏移量为0?它与数据保留有关系吗?

任何人都可以帮助理解这一点吗?

1 个答案:

答案 0 :(得分:2)

这正是数据保留。 Kafka很可能已经从分区中删除了偏移量为0的旧消息,因此从0开始没有意义。相反,Kafka会将offset设置为分区上最早的可用消息。您可以使用以下方法检查这些偏移量:

./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <IP_address>:9092 --topic some-topic --time -2

您可能会看到与新的消费者偏移量非常接近的值。

您也可以尝试将偏移量明确设置为0:

./kafka-consumer-groups.sh  --bootstrap-server <IP_address>:9092 --reset-offsets --to-offset 0 --topic some-topic --group to-earliest-cons --execute

但是,您将看到警告,提示偏移量0不存在,它将使用更高的值(上述最早的消息可用)

New offset (0) is lower than earliest offset for topic partition some-topic. Value will be set to 1143755193