Расскажи про суть YARN в Hadoop

«Расскажи про суть YARN в Hadoop» — вопрос из категории Hadoop и HDFS, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

YARN (Yet Another Resource Negotiator) — это фреймворк для управления ресурсами кластера и планирования задач в экосистеме Hadoop, начиная с версии 2.0. Он отделяет функции управления ресурсами и планирования от модели программирования MapReduce, что позволяет запускать разнообразные распределенные приложения (например, Spark, Tez, Flink) поверх одного кластера.

Ключевые компоненты:

  • ResourceManager (RM): Главный демон, управляющий ресурсами всего кластера (CPU, память). Он состоит из Scheduler (только планирует ресурсы) и ApplicationsManager (принимает提交 приложений).
  • NodeManager (NM): Агент на каждой машине кластера, отвечающий за контейнеры (единицы ресурсов), отслеживание их использования и отчетность RM.
  • ApplicationMaster (AM): Специфичный для каждого приложения процесс, который запрашивает ресурсы у RM и работает с NM для выполнения и мониторинга задач приложения.

Как это работает:

  1. Клиент отправляет приложение RM.
  2. RM выделяет контейнер для запуска ApplicationMaster этого приложения.
  3. ApplicationMaster регистрируется у RM и запрашивает ресурсы (контейнеры) для своих задач.
  4. RM через Scheduler выделяет ресурсы на NodeManager'ах.
  5. ApplicationMaster инициирует выполнение задач в выделенных контейнерах и отслеживает их прогресс.

Преимущества YARN:

  • Высокая утилизация кластера: Разные типы workload (ETL, ML, streaming) делят одни ресурсы.
  • Масштабируемость: Поддерживает кластеры с десятками тысяч узлов.
  • Совместимость: Позволяет запускать приложения, отличные от MapReduce.