Обзор федерации YARN

Обзор

Федерация YARN — это архитектурное решение, которое позволяет нескольким кластерам YARN работать как единая логическая система управления ресурсами. Каждый подкластер самостоятельно управляет своими вычислительными ресурсами, планированием задач и жизненным циклом приложений, в то время как федерация предоставляет пользователям и приложениям единый эндпойнт для запуска задач. Для приложений федерация YARN выглядит как один большой YARN-кластер.

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

ПРИМЕЧАНИЕ
Федерация YARN и федерация HDFS используются совместно для создания полноценной федерации ADH.

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

Федеративная архитектура YARN предоставляет следующие преимущества:

  • Горизонтальное масштабирование. При использовании федерации управление ресурсами распределяется между несколькими ResourceManager, что позволяет избежать ограничений масштабируемости отдельного YARN-кластера. Для увеличения вычислительной мощности к федерации можно подключать новые подкластеры.

  • Высокая пропускная способность планировщика. Каждый ResourceManager в федерации самостоятельно планирует выполнение приложений в своем подкластере. Распределяя планирование между несколькими ResourceManager, федерация позволяет выполнять больше приложений параллельно.

  • Единая точка для запуска приложений. Приложения запускаются через единую точку входа (компонент YARN Federation Router), а не напрямую через ResourceManager. Компонент YARN Federation Router выбирает подходящий подкластер и перенаправляет в соответствующий ResourceManager все последующие запросы, например, запросы статуса или завершения приложения.

  • Изоляция ошибок. Каждый подкластер работает независимо. Если один из подкластеров YARN становится недоступен, остальные подкластеры продолжают принимать и выполнять приложения, что позволяет минимизировать последствия сбоя.

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

Компоненты федерации YARN

Ниже представлена высокоуровневая схема федерации YARN.

Федерация YARN
Федерация YARN
Федерация YARN
Федерация YARN

Основные компоненты YARN-федерации описаны ниже.

Подкластеры YARN

Подкластер YARN — это обычный YARN-кластер, который является частью федерации. Каждый подкластер содержит собственные ResourceManager, NodeManager, планировщик и вычислительные ресурсы. Приложения и клиенты взаимодействуют с подкластерами через специальные компоненты федерации — YARN Federation Router.

При отправке приложения (submit) в YARN-федерацию выбирается подкластер, в котором приложение будет запущено. Такой подкластер называется домашним подкластером (home subcluster), а остальные подкластеры — вторичными подкластерами (secondary subclusters). По умолчанию YARN пытается выполнить приложение, используя вычислительные ресурсы только домашнего подкластера. Однако при необходимости YARN может запросить ресурсы у вторичных подкластеров в соответствии с настроенными политиками федерации.

На следующей схеме показаны основные этапы взаимодействия между подкластерами YARN в рамках типовой задачи.

Взаимодействие подкластеров YARN
Взаимодействие подкластеров YARN
Взаимодействие подкластеров YARN
Взаимодействие подкластеров YARN

YARN Federation Router

Компонент сервиса YARN, который служит точкой входа в YARN-федерацию для клиентов. В YARN-федерации клиенты YARN обращаются к компоненту YARN Federation Router по тому же протоколу, как если бы это был обычный ResourceManager, а уже роутер направляет запрос в нужный ResourceManager федерации. "Нужный" ResourceManager определяется на основе данных из хранилища состояний.

Основные функции YARN Federation Router:

  • Получение запросов на запуск (submit) YARN-приложений от клиентов.

  • Выбор домашнего подкластера для запуска YARN-приложения в соответствии с политикой федерации.

  • Перенаправление клиентских запросов (запуск, запросы статуса, завершение приложения и другие) в соответствующий ResourceManager федерации.

AMRMProxy

Внутренний компонент YARN, который функционирует внутри каждого NodeManager и выступает в качестве прокси между процессом ApplicationMaster и компонентом ResourceManager. В федерации YARN процессы ApplicationMaster взаимодействуют через AMRMProxy, а не обращаются напрямую к ResourceManager.

Основные функции AMRMProxy:

  • Доставка запросов ресурсов между подкластерами.

  • Соблюдения квот приложений.

  • Применение политик балансировки нагрузки.

AMRMProxy предоставляет тот же протокол ApplicationMasterService, что и ResourceManager, поэтому с точки зрения YARN-приложения взаимодействие происходит с обычным ResourceManager.

Хранилище состояния

Хранилище состояния (State store) — это распределенное хранилище, в котором хранятся метаданные федерации, необходимые для корректной работы всей федерации YARN, например:

  • Membership-данные о подкластерах. Каждый ResourceManager регистрирует свой подкластер в хранилище состояния и периодически отправляет heartbeat-сигналы. Благодаря этому компоненты федерации могут определять, какие подкластеры федерации доступны в данный момент.

  • Мэппинг домашних подкластеров. Данные, которые связывают каждое YARN-приложение с его домашним подкластером. Эта информация позволяет роутерам определить, где выполняется конкретное приложение и куда следует направлять соответствующие запросы.

Хранилище состояния поддерживает подключаемый бэкенд. В ADH в качестве бэкенд-системы по умолчанию для данных хранилища состояний используется ZooKeeper.

Хранилище политик федерации

Содержит политики федерации, которые определяют распределение приложений и запросов ресурсов между подкластерами YARN.

Политики федерации YARN

Политики федерации YARN управляют распределением приложений и запросов ресурсов между подкластерами YARN. В YARN-федерации используются политики двух типов:

  • Политики роутера. Используются компонентом YARN Federation Router для выбора домашнего подкластера для новых приложений YARN.

  • Политики AMRMProxy. Определяют распределение запросов ресурсов приложения между домашним и вторичными подкластерами YARN.

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

Пример файла с конфигурацией весов
{
  "routerPolicyWeights": {
    "entry": [
      {
        "key": {
          "id": "${root-cluster-id}"
        },
        "value": "0.5"
      },{
        "key": {
          "id": "${sub-cluster-id}"
        },
        "value": "0.5"
      }
    ]
  },
  "amrmPolicyWeights": {
    "entry": [
      {
        "key": {
          "id": "${root-cluster-id}"
        },
        "value": "0.5"
      },{
        "key": {
          "id": "${sub-cluster-id}"
        },
        "value": "0.5"
      }
    ]
  },
  "headroomAlpha": "1.0"
}

Включение федерации YARN

Вы можете создавать YARN-федерации с помощью ADCM. Процедура подразумевает следующие этапы:

Шаг 1. Включение и настройка федерации YARN
  1. Для каждого подкластера YARN установите yarn.federation.enabled=true в ADCM (Services → YARN → Primary configuration → Federation).

  2. Для каждого подкластера YARN укажите весовые коэффициенты политик (Services → YARN → Primary configuration → Federation → yarn.federation.policy-manager-params).

  3. Перезапустите подкластеры.

Шаг 2. Импорт конфигураций подкластеров
  1. Импортируйте конфигурации подкластеров друг в друга. Для этого перейдите на страницу Import и выберите кластеры ADH для импорта, как показано на следующем изображении.

    Импорт кластера
    Импорт кластера
  2. Перезапустите подкластеры.

Шаг 3. Выбор общего ZooKeeper

В YARN-федерации все подкластеры должны использовать один и тот же сервер ZooKeeper.

  1. Скопируйте адрес ZooKeeper из корневого кластера (Services → Core configuration → Primary configuration → core-site.xml → hadoop.zk.address)

  2. В каждом подкластере укажите один и тот же адрес ZooKeeper корневого кластера (Services → Core configuration → Primary configuration → Custom core-site.xml → hadoop.zk.address).

  3. В каждом подкластере укажите параметр yarn.resourcemanager.zk-state-store.parent-path в разделе Services → YARN → Custom yarn-site.xml.

    Этот параметр указывает на корневой znode, в котором будут храниться данные состояния ResourceManager. Параметр необходимо указать явно, иначе информация в znode по умолчанию будет перезаписана. Например:

    yarn.resourcemanager.zk-state-store.parent-path=/yarn/myfed/resourcemanager
  4. Перезапустите подкластеры.

Больше информации о настройке YARN-федерации доступно на странице YARN Federation.

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