Yarn — Как работает yarn.scheduler.capacity.root.queue-name.maximum-capacity?

У меня есть 4 очереди в корневой очереди со следующей конфигурацией.

|-------------|-----------------|---------------------|-------------------|
| Queue Name  | Capacity (in %) | Max Capacity (in %) | User Limit Factor |
|-------------|-----------------|---------------------|-------------------|
| default     | 10              | 30                  | 10                |
|-------------|-----------------|---------------------|-------------------|
| thriftsvr   | 5               | 30                  | 10                |
|-------------|-----------------|---------------------|-------------------|
| stream      | 70              | 70                  | 10                |
|-------------|-----------------|---------------------|-------------------|
| batch       | 15              | 30                  | 10                |
|-------------|-----------------|---------------------|-------------------|

Я установил емкость по свойству yarn.scheduler.capacity.root.<queue-name>.capacity и максимальную емкость по свойству yarn.scheduler.capacity.root.<queue-name>.maximum-capacity.

Насколько я понимаю, выше 2 свойств устанавливают АБСОЛЮТНУЮ емкость и АБСОЛЮТНУЮ максимальную емкость соответственно. Это означает, что 100% потока очереди равны 70% общей емкости кластера, и он может заполнить до 100% емкости очереди, что также составляет 70% общей емкости кластера.

Теперь проблема заключается в том, что когда «поток» очереди заполнен на 66,4% (т.е. когда используемая емкость: 66,4% и абсолютная используемая емкость: 46,5%), тогда новые задания переходят в состояние ожидания, которое отправляется в очередь «поток», говоря: «ожидание выделения контейнера AM, его запуска и регистрации в RM».

Когда я проверил конфигурацию очереди в пользовательском интерфейсе пряжи, он показывает настроенную максимальную емкость: 70,0% и абсолютную настроенную максимальную емкость: 70,0%, но в соответствии с конфигурацией «поток» очереди может быть заполнен до используемой емкости: 100% и абсолютной используемой емкости: 70% введите здесь описание изображения

Есть идеи, почему новые задания не могут использовать пропускную способность потока очереди на 100%?


person Vikash Pareek    schedule 07.06.2019    source источник


Ответы (3)


Я подозреваю, что сбивает с толку то, что свойства .capacity и .maximum-capacity могут быть определены как

  • относительно родительской очереди root в процентах (как число с плавающей запятой, например 12.5)
  • абсолютное значение ресурса (с использованием синтаксиса значения ресурса, например, [memory=204800,vcores=122])

Если у вас есть дополнительные вопросы, пожалуйста, задавайте.

Для полного ознакомления просто прочитайте документ: https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html#Queue_Properties

person mvk_il    schedule 19.11.2019

Я возьму пример из этой книги чтобы понять, как работает yarn.scheduler.capacity.root.queue-name.maximum-capacity.

Пример файла конфигурации планировщика ресурсов, который называется capacity-scheduler.xml. Он определяет две очереди под корневой очередью, prod и dev, которые имеют 40% и 60% емкости соответственно. Обратите внимание, что конкретная очередь настраивается путем установки свойств конфигурации формы yarn.scheduler.capacity.., где иерархический (точечный) путь очереди, такой как root.prod.

    <?xml version="1.0"?>
<configuration>
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>prod,dev</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.queues</name>
    <value>eng,science</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.prod.capacity</name>
    <value>40</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.capacity</name>
    <value>60</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
    <value>75</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.eng.capacity</name>
    <value>50</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.science.capacity</name>
    <value>50</value>
  </property>
</configuration>

Как видите, очередь разработчиков далее делится на очереди инженеров и ученых равной емкости. Чтобы очередь разработки не использовала все ресурсы кластера, когда очередь производства простаивает, ее максимальная емкость установлена ​​на 75%. Другими словами, очередь prod всегда имеет 25% кластера, доступного для немедленного использования. Поскольку для других очередей не были установлены максимальные емкости, задания в очередях eng или science могут использовать всю емкость очереди dev (до 75% кластера) или даже для очереди prod использовать весь кластер. .

См. документ YARN, чтобы узнайте больше о конфигурациях очереди.

person san    schedule 13.03.2020

https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-instances-guidelines.html

Согласно приведенной выше ссылке, AWS удалила эти метки, начиная с версии EMR 6 и выше.

Таким образом, это работает для EMR выше 6, но для более низких версий может быть полезно удалить метку ядра.

person ashish    schedule 23.07.2021