Ответ
YARN (Yet Another Resource Negotiator) — это фреймворк для управления ресурсами кластера и планирования задач в экосистеме Hadoop, начиная с версии 2.0. Он отделяет функции управления ресурсами и планирования от модели программирования MapReduce, что позволяет запускать разнообразные распределенные приложения (например, Spark, Tez, Flink) поверх одного кластера.
Ключевые компоненты:
- ResourceManager (RM): Главный демон, управляющий ресурсами всего кластера (CPU, память). Он состоит из Scheduler (только планирует ресурсы) и ApplicationsManager (принимает提交 приложений).
- NodeManager (NM): Агент на каждой машине кластера, отвечающий за контейнеры (единицы ресурсов), отслеживание их использования и отчетность RM.
- ApplicationMaster (AM): Специфичный для каждого приложения процесс, который запрашивает ресурсы у RM и работает с NM для выполнения и мониторинга задач приложения.
Как это работает:
- Клиент отправляет приложение RM.
- RM выделяет контейнер для запуска ApplicationMaster этого приложения.
- ApplicationMaster регистрируется у RM и запрашивает ресурсы (контейнеры) для своих задач.
- RM через Scheduler выделяет ресурсы на NodeManager'ах.
- ApplicationMaster инициирует выполнение задач в выделенных контейнерах и отслеживает их прогресс.
Преимущества YARN:
- Высокая утилизация кластера: Разные типы workload (ETL, ML, streaming) делят одни ресурсы.
- Масштабируемость: Поддерживает кластеры с десятками тысяч узлов.
- Совместимость: Позволяет запускать приложения, отличные от MapReduce.