Логирование в 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.