Логирование в YARN

Обзор

YARN записывает выводы команд и события процессов в текстовые логи. Эта информация может быть полезна при диагностике технических проблем.

Каждый компонент YARN хранит логи локально, на хосте, на котором он установлен. Логи имеют расширение .log и расположены в директории var/log/hadoop-yarn/. Здесь же находятся файлы .out, содержащие информацию о запуске компонентов.

Просмотреть логи YARN в браузере можно через веб-интерфейсы YARN.

Имена файлов с логами имеют следующий формат: hadoop-yarn-<компонент>-<хост>.log.

Здесь:

  • <компонент> — имя компонента, например, ResourceManager;

  • <хост> — FQDN хоста компонента.

 
Конфигурация логов YARN настраивается в файле log4j.properties вместе с HDFS.

Поиск по логам

Чтобы найти в логах интересующую вас информацию, например, сообщения об ошибках, подключитесь к хосту с компонентом, логи которого вы хотите просмотреть, и воспользуйтесь командой grep.

Например:

$ cat /var/log/hadoop-yarn/hadoop-yarn-nodemanager-elenas-adh3.ru-central1.internal.log | grep -i -A3 -B1 error

Эта команда просматривает лог компонента NodeManager, расположенного на хосте elenas-adh3.ru-central1.internal, и ищет сообщения, содержащие слово error. Опция -i позволяет игнорировать различия в регистре, а опции -A3 -B1 добавляют к найденной строке с ошибкой одну строчку до нее и три строчки после.

Пример вывода команды:

2024-04-08 13:26:24,910 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl: ContainerManager bound to 0.0.0.0/0.0.0.0:8041
2024-04-08 13:26:24,912 ERROR org.apache.hadoop.yarn.server.nodemanager.containermanager.scheduler.ContainerScheduler: Unknown event arrived at ContainerScheduler: EventType: RECOVERY_COMPLETED
2024-04-08 13:26:24,915 INFO org.apache.hadoop.yarn.server.nodemanager.webapp.WebServer: Instantiating NMWebApp at 0.0.0.0:8042
2024-04-08 13:26:24,935 INFO org.eclipse.jetty.util.log: Logging initialized @56117ms
2024-04-08 13:26:25,004 INFO org.apache.hadoop.security.authentication.server.AuthenticationFilter: Unable to initialize FileSignerSecretProvider, falling back to use random secrets.

Уровни логирования

YARN использует для создания логов библиотеку 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, которая копирует логи приложений в один файл в HDFS после завершения работы приложения.

По умолчанию агрегированные логи сохраняются в директорию hdfs://<адрес NameNode>:8020/logs/yarn/logs/, где <адрес NameNode> — это IP-адрес или FQDN активной NameNode.

Агрегирование логов можно настроить с помощью параметров логирования в файле конфигурации yarn-site.xml.

Параметры агрегирования логов YARN
Параметр Описание Значение по умолчанию

yarn.log.server.url

URL, по которому отображаются логи приложений. Если задан сервер JobHistory, логи будут доступны в веб-интерфейсе Resource Manager

 — 

yarn.log-aggregation-enable

Включает агрегирование логов

true

yarn.log-aggregation.retain-seconds

Время в секундах, по истечении которого логи будут удалены. Значение -1 или ниже отключит удаление логов. Использование слишком маленького отрезка времени создаст большую нагрузку на NameNode

172800

yarn.nodemanager.remote-app-log-dir

HDFS-директория для сохранения логов приложений

/logs

Чтобы изменить параметры логирования через ADCM:

  1. На странице Clusters выберите нужный кластер.

  2. Перейдите на вкладку Services и нажмите на YARN.

  3. Найдите поле yarn-site.xml.

  4. Выберите параметр и внесите необходимые изменения.

  5. Подтвердите изменения в конфигурации, нажав Save.

  6. В раскрывающемся меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение true, и нажмите Run.

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