Каждый очереди в качестве планировщика имеет 2 важные свойства (которые определены в процентах от общего объема ресурсов), которые определяют планирование:
- Гарантированная мощность очереди (определяется конфигурацией "yain.scheduler.capacity. {queue-path} .capacity ")
- Максимальная емкость, на которую может увеличиваться очередь (определяется конфигурацией " yarn.scheduler.capacity. {queue-path}. max-capacity "). Это ограничивает использование ресурсов очередью. Очередь не может превышать этот предел.
Планировщик мощности организует очереди в иерархическом порядке. Очереди двух типов "parent" и "leaf" очереди. Работы могут подаваться только на очереди .
"ROOT" queue является родительским для всех остальных очередей.
Каждая родительская очередь сортирует дочерние очереди в зависимости от спроса (какова текущая используемая емкость очереди? Недостаточно или недостаточно обслуживается?).
Для каждой очереди отношение (Используемая емкость/общая емкость кластера) дает указание об использовании очереди. Родительская очередь всегда дает приоритет самой младшей дочерней очереди..
Когда свободные ресурсы предоставляются родительской очереди, ресурсы рекурсивно распределяются по дочерним очередям в зависимости от текущей используемой емкости очереди.
В очереди листа, распределение мощности может произойти на основе определенных пользовательских пределов (для параметра конфигурации, например:. yarn.scheduler.capacity {очереди пути} .minimum-пользователем предельных процентов, определяет минимальная емкость очереди, гарантированная каждому пользователю).
В вашем примере, для простоты, предположим, что очереди q1, q2 и q3 находятся непосредственно под «ROOT». Как упоминалось ранее, родительская очередь хранит очереди отсортированными на основе их использования.
Поскольку q3 вообще не используется, родитель может распределять неиспользуемые ресурсы q3 между q1 и q2.
имеющиеся ресурсы распределяются на основе следующих факторов:
Если оба q1 и q2 имеют достаточно ресурсов, чтобы продолжать планировать свою работу, то нет никакой необходимости распределять имеющиеся ресурсы от q3
Если и q1, и q2 достигли максимальной емкости ("yarn.scheduler.capacity. {Queue-path} .maximum-capacity", эта конфигурация ограничивает эластичность очередей. Очереди не могут требовать больше, чем процент, этот параметр), то свободный res ources не предоставляется
Если какая-либо один из очередей q1 или q2 находятся под обслужено, то свободные ресурсы выделяются в рамках обслужена очередь
Если оба q1 и q2 под обслужены, то наибольшей приоритетной задачей является самая недоработанная очередь.
спасибо @Manjunath Ballur – armourbear