Текущее поведение смещения, когда kafka-consumer-groups устанавливает самое раннее?

У меня кафка топик с 25 разделами и кластер работает 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? Это как-то связано с хранением данных?

Может ли кто-нибудь помочь понять это?

Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
4
0
2 131
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это именно сохранение данных. Весьма вероятно, что Kafka уже удалил старые сообщения со смещением 0 из ваших разделов, поэтому нет смысла начинать с 0. Вместо этого Kafka установит смещение на самое раннее доступное сообщение в вашем разделе. Вы можете проверить эти смещения, используя:

./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

Это где-то задокументировано? Я не уверен, что я должен искать. Я нашел параметр KAFKA_LOG_RETENTION_HOURS, но даже если я установлю значение на 3 года, я не смогу сбросить значение смещения до 0 после использования совершенно новых событий.

Michal Špondr 04.06.2021 09:32

Другие вопросы по теме