У меня кафка топик с 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? Это как-то связано с хранением данных?
Может ли кто-нибудь помочь понять это?
Это именно сохранение данных. Весьма вероятно, что 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 после использования совершенно новых событий.