Логирование в 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, которая поддерживает следующие уровни логирования (от наименее информативного к наиболее информативному):
-
FATAL
— сообщает, что операция не может быть выполнена и будет завершена. -
ERROR
— уведомляет, что программа работает неправильно или прекратила работу. -
WARN
— предупреждает о потенциальных проблемах. Это означает, что программа работает не по стандартному сценарию и в будущем могут возникнуть проблемы. -
INFO
— передает информацию о жизненном цикле или состоянии программы. -
DEBUG
— выводит отладочную информацию о внутренних состояниях программы. -
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.log.server.url |
URL, по которому отображаются логи приложений. Если задан сервер JobHistory, логи будут доступны в веб-интерфейсе Resource Manager |
— |
yarn.log-aggregation-enable |
Включает агрегирование логов |
true |
yarn.log-aggregation.retain-seconds |
Время в секундах, по истечении которого логи будут удалены. Значение |
172800 |
yarn.nodemanager.remote-app-log-dir |
HDFS-директория для сохранения логов приложений |
/logs |
Чтобы изменить параметры логирования через ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите на вкладку Services и нажмите на YARN.
-
Найдите поле yarn-site.xml.
-
Выберите параметр и внесите необходимые изменения.
-
Подтвердите изменения в конфигурации, нажав Save.
-
В раскрывающемся меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение
true
, и нажмите Run.