Пропущенные сообщения на компактную тему Кафки - PullRequest
0 голосов
/ 02 мая 2019

У меня есть тема, которая уплотнена:

/opt/kafka/bin/kafka-topics.sh --zookeeper localhost --describe --topic myTopic
Topic:myTopic   PartitionCount:1    ReplicationFactor:1 Configs:cleanup.policy=compact

На ней нет сообщений:

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic myTopic --from-beginning --property print-key=true
^CProcessed a total of 0 messages

Как самое раннее, так и самое последнее смещение для единственного раздела, который существует 12Хотя.

/opt/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic myTopic --time -2
myTopic:0:12

/opt/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic myTopic --time -1
myTopic:0:12

Интересно, что могло произойти с этими 12 сообщениями?Цифра верна, я ожидал, что они будут там, но по какой-то причине они исчезли.

Насколько я понимаю, даже если бы у этих 12 сообщений был один и тот же ключ, я бы по крайней мере виделодин - так работает сжатие.

Тема была создана как уплотненная.Единственная странная вещь, которая могла произойти за это время, это то, что экземпляр Kafka полностью потерял свои данные Zookeeper.Возможно ли, что это также привело к потере данных?

Перефразируя последний вопрос: Может ли что-то плохое случиться с физическими данными на Kafka, если я удалю все связанные с Kafka ZNodes на Zookeeper?

Кроме того, здесь приведены некоторые журналы запуска Kafka.

[2019-04-30 12: 02: 16,510] WARN [раздел журнала = myTopic-0, dir =/ var / lib / kafka] Обнаружен поврежденный индексный файл, соответствующий файлу журнала /var/lib/kafka/myTopic-0/00000000000000000000.log из-за найденного поврежденного индекса, индексный файл (/ var / lib / kafka / myTopic-0 /00000000000000000000.index) имеет ненулевой размер, но последнее смещение равно 0, что не больше базового смещения 0.}, восстановление сегмента и восстановление файлов индекса ... (kafka.log.Log)

[2019-04-30 12: 02: 16,524] ИНФОРМАЦИЯ [Раздел журнала = myTopic-0, dir = / var / lib / kafka] Завершена загрузка журнала с 1 сегментами, смещение начала журнала 0 и смещение конца журнала 12 за 16 мс (kafka.log.Log)

[2019-04-30 12: 35: 34,530] ИНФОРМАЦИЯ Получил KeeperException на уровне пользователя, гдеn обработка sessionid: 0x16a6e1ea2000001 тип: setData cxid: 0x1406 zxid: 0xd11 txntype: -1 reqpath: n / a Путь ошибки: / config / themes / myTopic Ошибка: KeeperErrorCode = NoNode для / config / themes / myTopic (org.apache.z..server.PrepRequestProcessor)

[2019-04-30 12: 35: 34,535] ИНФОРМАЦИЯ Карта создания темы (myTopic-0 -> ArrayBuffer (0)) (kafka.zk.AdminZkClient)

[2019-04-30 12: 35: 34,547] ИНФОРМАЦИЯ [ReplicaFetcherManager on broker 0] Удалено средство извлечения для разделов myTopic-0 (kafka.server.ReplicaFetcherManager)

[2019-04-30 12:35:34 580] INFO [Partition myTopic-0 broker = 0] Не найдена контрольная точка верхнего знака для раздела myTopic-0 (kafka.cluster.Partition)

[2019-04-30 12: 35: 34 580] INFO Реплика загруженадля раздела myTopic-0 с начальным верхним водяным знаком 0 (kafka.cluster.Replica)

[2019-04-30 12: 35: 34,580] INFO [Partition myTopic-0 broker = 0] myTopic-0 начинается сЭпоха Лидера 0 со смещения 12. Предыдущая Эпоха Лидера была: -1 (kafka.cluster.Partition)

И сообщения действительно были удалены:

[2019-04-30 12: 39: 24,199] INFO [Журнал раздел = myTopic-0, dir = / var / lib/ kafka] Найдены удаляемые сегменты с базовыми смещениями [0] из-за нарушения времени хранения 10800000ms (kafka.log.Log)

[2019-04-30 12: 39: 24,201] INFO [Журнал раздела = myTopic-0, dir = / var / lib / kafka] Свернутый новый сегмент журнала со смещением 12 за 2 мс.(kafka.log.Log)

1 Ответ

0 голосов
/ 02 мая 2019

NoNode для / config / themes / myTopic

Кафка больше не знает, существует ли эта тема и что она должна быть уплотнена, что очевидно по журналам очистки журналов

из-за нарушения времени хранения 10800000ms

Так что да, Zookeeper очень важен.Но так же изящно завершается работа брокера с помощью kafka-server-stop, иначе принудительное завершение процесса или хост-машина могут получить поврежденные сегменты раздела


Я не совсем уверен, какие условия приведут к этому

последнее смещение равно 0, которое не превышает базовое смещение 0

Но при условии, что у вас был полный кластер и что коэффициент репликации в теме был выше, чем1, то можно надеяться, что хотя бы одна реплика была здоровой.

Чтобы восстановить посредника с поврежденным индексом / разделом, можно остановить процесс kafka, удалить папку поврежденного раздела с диска, перезапустить kafka на этом компьютере и затем разрешить репликацию обратно из исправного экземпляра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...