как найти все исправленные файлы индексов в кафке - PullRequest
0 голосов
/ 27 февраля 2019

у нас есть 3 машины kafka в нашем кластере,

версия kafka - 0.10.0.2.6 ,

и версия 3 серверов zookeeper - 3.4.6

у нас проблема в том, что один из брокеров kafka не может запуститься, и, похоже, это из-за поврежденных файлов индексов

мы заметили, что журнал kafka (/ var / log / kafka/server.log), на каждом компьютере kafka укажите около тысячи поврежденных файлов индексов в качестве следующего

примера из server.log

[2019-02-25 12:34:44,907] INFO Completed load of log topic.pop.control.gtp.enrichment-38 with 14 log segments and log end offset 200458117 in 1583 ms (kafka.log.Log)
[2019-02-25 12:34:45,044] WARN Found a corrupted index file due to requirement failed: Corrupt index found, index file (/var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.index) has non-zero size but the last offset is 8068079 which is no larger than the base offset 8068079.}. deleting /var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.timeindex, /var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.index and rebuilding index... (kafka.log.Log)
[2019-02-25 12:34:45,217] INFO Recovering unflushed segment 8068079 in log topic.pop.control.gtp.state-50. (kafka.log.Log)
[2019-02-25 12:34:45,255] INFO Completed load of log topic.pop.control.gtp.state-50 with 6 log segments and log end offset 8095839 in 347 ms (kafka.log.Log)
[2019-02-25 12:34:45,261] WARN Found a corrupted index file due to requirement failed: Corrupt index found, index file (/var/kafka/kafka-logs/topic.pop.pri.wnr-38/00000000001979940988.index) has non-zero size but the last offset is 1979940988 which is no larger than the base offset 1979940988.}. deleting /var/kafka/kafka-logs/topic.pop.pri.wnr-38/00000000001979940988.timeindex, /var/kafka/kafka-logs/topic.pop.pri.wnr-38/00000000001979940988.index and rebuilding index... (kafka.log.Log)
[2019-02-25 12:34:47,607] INFO Recovering unflushed segment 1979940988 in log topic.pop.pri.wnr-38. (kafka.log.Log)
[2019-02-25 12:34:48,872] INFO Completed load of log topic.pop.pri.wnr-38 with 21 log segments and log end offset 1980403224 in 3617 ms (kafka.log.Log)
[2019-02-25 12:34:48,935] WARN Found a corrupted index file due to requirement failed: Corrupt index found, index file (/var/kafka/kafka-logs/topic.pop.control.gtp-88/00000000000216947511.index) has non-zero size but the last offset is 216947511 which is no larger than the base offset 216947511.}. deleting /var/kafka/kafka-logs/topic.pop.control.gtp-88/00000000000216947511.timeindex, /var/kafka/kafka-logs/topic.pop.control.gtp-88/00000000000216947511.index and rebuilding index... (kafka.log.Log)
[2019-02-25 12:34:52,436] INFO Recovering unflushed segment 216947511 in log topic.pop.control.gtp-88. (kafka.log.Log)
[2019-02-25 12:34:54,508] INFO Completed load of log topic.pop.control.gtp-88 with 21 log segments and log end offset 217830559 in 5635 ms (kafka.log.Log)
[2019-02-25 12:34:54,531] WARN Found a corrupted index file due to requirement failed: Corrupt index found, index file (/var/kafka/kafka-logs/topic.pop.pri.lop-10/00000000000000000000.index) has non-zero size but the last offset is 0 which is no larger than the base offset 0.}. deleting /var/kafka/kafka-logs/topic.pop.pri.lop-10/00000000000000000000.timeindex, /var/kafka/kafka-logs/topic.pop.pri.lop-10/00000000000000000000.index and rebuilding index... (kafka.log.Log)
[2019-02-25 12:34:57,540] INFO Recovering unflushed segment 0 in log topic.pop.pri.lop-10. (kafka.log.Log)

примерфайлов поврежденных индексов

/var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.index
/var/kafka/kafka-logs/topic.pop.pri.wnr-38/00000000001979940988.index
/var/kafka/kafka-logs/topic.pop.control.gtp-88/00000000000216947511.index
/var/kafka/kafka-logs/topic.pop.pri.lop-10/00000000000000000000.index

Каков правильный подход для удаления файлов поврежденных индексов?

один из вариантов - найти файлы поврежденных индексов в servcer.log(на каждой машине kafka) и составьте список, а затем удалите их на каждом брокере kafka как

rm -f /var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.index

, но этот подход не обещает нам, что log - server.log включает в себя все поврежденные файлы индексов, поэтому, возможно,файл поврежденных индексовчто не указано в журнале!так как найти все файлы, которые повреждены командой или любым другим синтаксисом, который показывает все поврежденные файлы индексов?

Я думаю, что если у нас есть этот список, то мы можем создать простой скрипт в bash, который будет работать насписок и удаление файлов автоматически

1 Ответ

0 голосов
/ 27 февраля 2019

При запуске Kafka автоматически перестроит все индексные файлы, которые выглядят поврежденными.Вы можете видеть, что в строке журнала указано «перестроение индекса»:

Обнаружен поврежденный файл индекса из-за сбоя требования: найден поврежденный индекс, файл индекса (/ var / kafka / kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.index) имеет ненулевой размер, но последнее смещение равно 8068079, которое не больше базового смещения 8068079.}.удаление /var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.timeindex, /var/kafka/kafka-logs/topic.pop.control.gtp.state-50/00000000000008068079.indexи восстановление индекса ...

Обычно вы получаете «поврежденные» индексы, когда Kafka не завершает работу корректно

...