Логирование в 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, которая поддерживает следующие уровни логирования (от наименее информативного к наиболее информативному):

  1. FATAL — сообщает, что операция не может быть выполнена и будет завершена.

  2. ERROR — уведомляет, что программа работает неправильно или прекратила работу.

  3. WARN — предупреждает о потенциальных проблемах. Это означает, что программа работает не по стандартному сценарию и в будущем могут возникнуть проблемы.

  4. INFO — передает информацию о жизненном цикле или состоянии программы.

  5. DEBUG — выводит отладочную информацию о внутренних состояниях программы.

  6. 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.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней