← Назад к вопросам

Из чего состоит YARN?

2.0 Middle🔥 171 комментариев
#Hadoop и распределенные системы#Архитектура и проектирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

YARN: Yet Another Resource Negotiator

YARN — это менеджер ресурсов и планировщик заданий в Hadoop 2.x и выше. Он отделил управление ресурсами от обработки данных, позволяя различным приложениям (не только MapReduce) использовать один кластер.

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

YARN состоит из четырёх основных компонентов:

1. Resource Manager (RM)

Главный мастер кластера, отвечающий за управление ресурсами.

Функции:

  • Отслеживание доступных ресурсов (CPU, память) на узлах
  • Приём заявок на ресурсы от приложений
  • Распределение ресурсов между приложениями
  • Контроль жизненного цикла приложений

Компоненты RM:

  • Scheduler — выбирает какие заявки удовлетворять (FIFO, Fair Scheduler, Capacity Scheduler)
  • Applications Manager — управляет запуском и отслеживанием приложений

2. Node Manager (NM)

Демон на каждом рабочем узле, управляющий локальными ресурсами и контейнерами.

Функции:

  • Мониторинг доступных ресурсов (CPU, RAM, disk)
  • Запуск и остановка контейнеров (Container)
  • Отправка heartbeat сигналов RM (каждые 3 сек)
  • Логирование и отслеживание использования ресурсов
  • Управление локальным кешем
Node Manager
├── Container 1 (256MB RAM, 1 CPU core)
├── Container 2 (512MB RAM, 2 CPU cores)
└── Container 3 (256MB RAM, 1 CPU core)

3. Application Master (AM)

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

Функции:

  • Управление жизненным циклом одного приложения
  • Запрос ресурсов у Resource Manager
  • Взаимодействие с Node Manager для запуска контейнеров
  • Обработка сбоев (переправка упавших задач)
  • Отправка статуса приложения RM

Пример для MapReduce:

  • AM запускается в контейнере
  • Запрашивает контейнеры для mapper и reducer задач
  • Координирует выполнение и shuffle/sort
  • Собирает результаты

4. Container

Это логическая единица ресурса (абстракция над CPU и памятью).

Container:
  id: container_1234567890_0001
  memory: 512 MB
  v_cores: 2
  status: RUNNING
  process: /bin/java ...mapper...

Поток выполнения задания

1. Client отправляет заявку на запуск приложения
   ↓
2. Resource Manager принимает заявку
   ↓
3. RM выделяет контейнер для Application Master
   ↓
4. Node Manager запускает AM в выделенном контейнере
   ↓
5. AM запрашивает ресурсы для выполнения задач
   ↓
6. RM отправляет контейнеры для задач
   ↓
7. AM отправляет команду NM на запуск контейнеров
   ↓
8. NM запускает контейнеры с задачами
   ↓
9. AM отслеживает выполнение, переправляет сбойные задачи
   ↓
10. AM отправляет результат и завершает приложение

Типы данных в YARN

# Заявка на ресурсы (Resource Request)
request = {
    "memory": 2048,        # MB
    "v_cores": 4,          # Virtual cores
    "rack_locality": "rack1"  # Локальность (опционально)
}

# Выделение контейнера (Container Allocation)
allocation = {
    "container_id": "container_1234567890_0001",
    "resource": request,
    "assigned_node": "hadoop-node-2.example.com:8042"
}

Планировщики в YARN

FIFO Scheduler:

  • Простой, первый пришёл — первый ушёл
  • Может блокировать малые задания

Capacity Scheduler (по умолчанию):

<queue name="production">
    <capacity>60</capacity>
    <maximum-capacity>100</capacity>
</queue>
<queue name="development">
    <capacity>40</capacity>
</queue>

Fair Scheduler:

  • Распределяет ресурсы поровну между заданиями
  • Динамически перебалансирует ресурсы

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

  • Multi-tenancy: разные приложения (Spark, Hive, Flink) могут работать одновременно
  • Лучшее использование ресурсов: контейнеры динамически выделяются
  • Масштабируемость: работает на кластерах из тысяч узлов
  • Отказоустойчивость: AM может переправить упавший контейнер

Современный статус

YARN остаётся стандартом в экосистеме Hadoop, но Kubernetes постепенно вытесняет YARN как платформу для оркестрации контейнеров в облаке.

Из чего состоит YARN? | PrepBro