Архитектура YARN

YARN планирует запуск приложений и организует распределение ресурсов кластера между различными процессами обработки данных, такими как пакетная (batch processing), интерактивная (interactive processing) и потоковая (stream processing).

HadoopYARNArchitecture dark
Компоненты YARN
HadoopYARNArchitecture light
Компоненты YARN

YARN включает следующие компоненты:

  • Resource Manager — главный сервис по управлению распределением ресурсов в кластере.

  • Node Manager — сервис, устанавливаемый на каждую ноду HDFS DataNode и отвечающий за предоставление ресурсов приложениям, работающим на этой ноде. Он подчиняется Resource Manager.

  • Application Master  — временный процесс, координирующий полный цикл работы одного приложения. Он взаимодействует с Resource Manager и Node Managers для запуска и мониторинга работы приложений.

  • Container  — это логический набор ресурсов, включая часть оперативной памяти, ядер процессора, сетевых ресурсов, диска и других исчисляемых ресурсов одной ноды. Эти ресурсы выделяются для одного приложения.

Resource Manager

Resource Manager является главным "распорядителем" всех вычислительных ресурсов кластера. Он получает данные о наличии ресурсов и принимает решение о выделении доступных ресурсов конкурирующим между собой приложениям. Когда он получает запрос на выделение ресурсов, он распределяет его в виде запросов к Node Managers тех нод, где будет производиться обработка данных. Resource Manager состоит из двух главных компонентов: планировщика (Scheduler) и менеджера приложений (Application Manager).

Scheduler

Планировщик является частью Resource Manager и выполняет следующие функции:

  • Отвечает за предоставление ресурсов приложениям с учетом ограничений на ресурсы, очереди и так далее.

  • Выполняет исключительно функции планирования, не затрагивая функции мониторинга и отслеживания состояния приложений. Если приложение перестает работать, планировщик не обеспечивает его восстановление.

  • Планирует запуск заданий (job), исходя из запросов ресурсов, приходящих от приложений.

  • Реализует свой алгоритм с помощью встраиваемого сервиса планирования. Им может быть Capacity Scheduler или Fair Scheduler, встраиваемые в Resource Manager. По умолчанию используется Capacity Scheduler.

Application Manager

Это еще одна часть Resource Manager, реализующая следующие возможности:

  • Принимает запросы на создание заданий (job).

  • Запрашивает Resource Manager создать первый контейнер для запуска в нем процесса Application Master, специфичного для приложений определенного типа.

  • Управляет работающими процессами Application Master и обеспечивает повторный старт такого процесса в случае сбоев.

Node Manager

Node Manager обеспечивает выделение ресурсов и управление приложениями в пределах одной ноды. Его главной функцией является управление контейнерами для приложений по запросам от Resource Manager.

Node Manager выполняет следующие операции:

  • Посылает в Resource Manager отчеты о состоянии ноды и наличии ресурсов.

  • Создает и контролирует контейнеры, в которых запускает процессы по запросам от Application Master.

  • Контролирует использование ресурсов в контейнерах.

  • Предоставляет сервис ведения журналов для контейнерных процессов.

  • Удаляет контейнеры по запросам от Application Master или Resource Manager.

Application Master

Любое приложение начинает свою работу в YARN в качестве отдельного задания (job). У каждого работающего приложения есть свой Application Master. Каждый тип приложений имеет свой Application Master, реализованный в виде JAR-файла и являющийся одним из необходимых приложению ресурсов. Например, задачи MapReduce используют MRAppMaster.

Application Master координирует процессы приложения в кластере, включая слежение за сбоями и восстановление после них. Он запрашивает выделение ресурсов через Resource Manager и взаимодействует с Node Managers для запуска приложений в контейнерах и мониторинга процесса их выполнения. После своего старта он посылает периодические сигналы (heartbeat), содержащие данные о собственном состоянии и обновленный список необходимых ресурсов.

Container

Контейнер представляет собой коллекцию физических ресурсов, таких как оперативная память, ядра процессора и дисковое пространство, выделенные для определенного приложения в ноде кластера. Каждый контейнер YARN имеет собственный контекст запуска (launch context), используемый в течение всего жизненного цикла контейнера. Это запись, содержащая значения переменных окружения, токены безопасности, данные для передачи в Node Manager, команду для запуска процесса в контейнере и другие параметры. Контекст запуска гарантирует заданию (job) привилегии на использование определенного количества ресурсов (памяти, ядер процессора и другие) в данной ноде.

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