CapacityScheduler

CapacityScheduler — это подключаемый планировщик в Hadoop. Он в наибольшей степени подходит для планирование заданий в кластере, арендуемом множеством организаций (multi-tenancy), путем выделения части ресурсов кластера для каждой организации.

Система безопасности

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

В кластере с общим доступом безопасность становится очень важной. Для каждой очереди существует список контроля доступа (Access Control List, ACL), который определяет, какие пользователи могут подавать заявки в отдельные очереди. Система безопасности гарантирует, что пользователи не смогут просматривать и изменять приложения других пользователей в других очередях. Кроме того, эта система позволяет создавать роль администратора для каждой очереди и роль системного администратора.

Поддержка иерархических очередей

CapacityScheduler поддерживает иерархические очереди. Очередь является иерархической, если можно создавать дочерние очереди внутри нее. Часть ресурсов кластера, выделенная для очереди, может быть далее распределена между дочерними очередями. CapacityScheduler имеет предопределенную очередь, называемую корневой (root). Все очереди в системе являются дочерними по отношению к корневой очереди.

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

Конфигурация

Чтобы использовать CapacityScheduler в YARN, необходимо начать с назначения соответствующего класса планировщика в файле yarn-site.xml:

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

Настройка очередей

Чтобы настроить очереди, отредактируйте конфигурационный файл capacity-scheduler.xml:

  • Настройте очереди верхнего уровня с помощью параметра yarn.scheduler.capacity.root.queues. Необходимо ввести список очередей, разделенных запятыми.

  • Настройте дочерние очереди в соответствии со структурой дерева очередей. Для каждой очереди вида <queue-path>, которая должна иметь дочерние очереди, введите эти очереди в параметре yarn.scheduler.capacity.<queue-path>.queues.

  • Укажите объем ресурсов для каждой очереди в процентах с помощью параметра yarn.scheduler.capacity.<queue-path>.capacity. Сумма этих величин для всех очередей (на каждом уровне) должна быть равна 100.

  • Укажите максимально допустимый объем ресурсов очереди в процентах с помощью параметра yarn.scheduler.capacity.<queue-path>.maximum-capacity. Это ограничивает гибкость потребления ресурсов для приложений в очереди. По умолчанию параметр равен -1, что отключает ограничение.

Пример конфигурации очереди

Пусть есть две очереди верхнего уровня (нисходящие от корневой):

  • sales — очередь продаж.

  • finance — очередь для финансовых операций.

В очереди продаж есть две дочерние очереди:

  • apac

  • emea

Очереди следует настроить следующим образом:

<property>
  <name>yarn.scheduler.capacity.root.queues</name>
  <value>sales, finance</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.sales.queues</name>
  <value>apac,emea</value>
</property>

Чтобы выделить 70% ресурсов для очереди sales и 30% для finance, используйте следующую настройку:

<property>
  <name>yarn.scheduler.capacity.root.sales.capacity</name>
  <value>70</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.finance.capacity</name>
  <value>30</value>
</property>

Для того чтобы выделить 65% ресурсов очереди sales на apac и 35% на emea, используйте следующую настройку:

<property>
  <name>yarn.scheduler.capacity.root.sales.apac.capacity</name>
  <value>65</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.sales.emea.capacity</name>
  <value>35</value>
</property>

Для того чтобы очередь продаж не использовала более 80% ресурсов кластера (даже если ресурсы доступны), примените следующую настройку:

<property>
  <name>yarn.scheduler.capacity.root.sales.maximum-capacity</name>
  <value>80</value>
</property>

Если пользователь, например yarn, поставляет приложения без указания очереди и при этом отсутствует очередь default, то необходимо настроить очередь по умолчанию. В следующем примере очередь marketing объявлена как очередь по умолчанию для пользователя yarn:

<property>
   <name>yarn.scheduler.capacity.queue-mappings</name>
   <value>u:yarn:marketing</value>
</property>

где:

  • u означает, что это настройка для пользователя (g — для группы);

  • yarn — имя пользователя;

  • marketing — название очереди по умолчанию.

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