Логирование в MapReduce
Обзор
MapReduce записывает выводы команд и события процессов в текстовые логи. Эта информация может быть полезна при диагностике технических проблем.
Каждый компонент MapReduce хранит логи локально, на хосте, на котором он установлен. Логи имеют расширение .log и расположены в директории var/log/hadoop-mapreduce/. Здесь же находятся файлы .out, содержащие информацию о запуске компонентов.
Просмотреть логи MapReduce и других компонентов YARN в браузере можно через веб-интерфейсы YARN.
Имена файлов с логами имеют следующий формат: hadoop-mapred-<компонент>-<хост>.log.
Здесь:
-
<компонент>— имя компонента, например, History Server; -
<хост>— FQDN хоста компонента.
MapReduce и HDFS используют один файл log4j.properties для управления логированием.
Поиск по логам
Чтобы найти в логах интересующую вас информацию, например, сообщения об ошибках, подключитесь к хосту с компонентом, логи которого вы хотите просмотреть, и воспользуйтесь командой grep.
Например:
$ cat /var/log/hadoop-mapreduce/hadoop-mapred-historyserver-elenas-adh2.ru-central1.internal.log | grep -i -A3 -B1 error
Эта команда сканирует лог компонента History Server, расположенного на хосте elenas-adh2.ru-central1.internal, и ищет сообщения, содержащие слово error. Опция -i позволяет игнорировать различия в регистре, а опции -A3 -B1 добавляют к найденной строке с ошибкой одну строчку до нее и три строчки после.
Пример вывода команды:
2024-04-20 08:53:57,337 INFO org.apache.hadoop.mapreduce.v2.hs.JobHistory: Starting scan to move intermediate done files 2024-04-20 08:55:59,664 ERROR org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer: RECEIVED SIGNAL 15: SIGTERM 2024-04-20 08:55:59,668 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping JobHistoryServer metrics system... 2024-04-20 08:55:59,668 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: JobHistoryServer metrics system stopped. 2024-04-20 08:55:59,669 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: JobHistoryServer metrics system shutdown complete.
Уровни логирования
MapReduce использует для создания логов библиотеку Log4j2, которая поддерживает следующие уровни логирования (от наименее информативного к наиболее информативному):
-
FATAL— сообщает, что операция не может быть выполнена и будет завершена. -
ERROR— уведомляет, что программа работает неправильно или прекратила работу. -
WARN— предупреждает о потенциальных проблемах. Это означает, что программа работает не по стандартному сценарию и в будущем могут возникнуть проблемы. -
INFO— передает информацию о жизненном цикле или состоянии программы. -
DEBUG— выводит отладочную информацию о внутренних состояниях программы. -
TRACE— выводит сообщения, отслеживающие ход выполнения программы.
Logger Log4j также принимает значения уровня логирования: OFF — для отключения логирования, и ALL — для разрешения всех типов сообщений.
Включение одного уровня логирования включит этот уровень и все уровни до него. Например, если установлен уровень логирования WARN, то в логи будут попадать только события WARN, ERROR и FATAL, но не INFO, DEBUG и TRACE.
Логи контейнеров
Приложения, запущенные в YARN, генерируют собственные логи. Чтобы посмотреть логи приложения, используйте команду logs.
Например:
$ yarn logs -applicationId application_1714649647710_0001
Архивация логов
Логи MapReduce можно архивировать с помощью команды archive-logs. Этот процесс аналогичен функции агрегирования логов в YARN.
Пример команды для создания архива из десяти log-файлов:
$ mapred archive-logs -minNumberLogFiles 10
Значение по умолчанию для -minNumberLogFiles — 20. Это значит, что запуск команды mapred archive-logs создаст архив только в том случае, если существует 20 или более логов MapReduce.