2016-09-20 4 views
0

В hadoop 1.X у нас было несколько фиксированных jvms на каждом узле. В новой версии у нас есть контейнеры, которые будут созданы при необходимости.Как диспетчер ресурсов выделяет контейнер для отправленного задания?

Я хочу знать, что диспетчер ресурсов создает контейнеры, на которых представлены параметры поданной работы?

ответ

0

На основе документации YARN предназначен для того, чтобы отдельные приложения (через ApplicationMaster) могли использовать ресурсы кластера совместно используемым, безопасным и многопользовательским способом. Кроме того, он по-прежнему осознает топологию кластера, чтобы эффективно планировать и оптимизировать доступ к данным, т. Е. Максимально сократить движение данных для приложений.

Для достижения этих целей центральный планировщик (в ResourceManager) имеет обширную информацию о потребностях ресурса приложения, что позволяет ему принимать более четкие решения о планировании для всех приложений в кластере. Это приводит нас к ResourceRequest и результирующему контейнеру.

По существу приложение может запрашивать конкретные запросы ресурсов через ApplicationMaster для удовлетворения своих потребностей в ресурсах. Планировщик отвечает на запрос ресурса, предоставляя контейнер, который удовлетворяет требованиям, изложенным ApplicationMaster в исходном ResourceRequest.

Как вы знаете, у нас есть три метода планирования в ПРЯЖИ:

  • Fair Scheduler
  • Емкость Планировщик
  • FIFO Планировщик

Каждый из них имеет свои собственные способы расчета потребность в ресурсах приложений.

Например, CapacityScheduler имеет концепцию ResourceCalculator - подключаемый слой, который используется для выполнения математики распределения, просматривая все идентифицированные ресурсы. Это включает в себя служебные программы, которые могут принимать следующие решения:

  • У этого узла достаточно ресурсов каждого типа ресурсов для удовлетворения этого запроса?
  • Сколько контейнеров можно разместить на этом узле, сортируя список узлов с различными доступными ресурсами. Существует два вида калькуляторов, доступных в настоящее время в YARN - DefaultResourceCalculator и DominantResourceCalculator.

DefaultResourceCalculator учитывает память только при выполнении вычислений. Вот почему требования CPU игнорируются при выполнении распределений в CapacityScheduler по умолчанию. Вся математика распределений сводится к простому изучению памяти, требуемой запросами ресурсов, и памяти, доступной на узле, на который смотрят в течение определенного цикла планирования.

+0

Итак, вы имеете в виду, что каждый планировщик имеет свои приоритеты, иногда процессор важен или иногда память? Что происходит, когда задачи завершены? все еще есть контейнеры? – mndn

+0

@mndn Да, но оба они важны. Контейнер представляет собой двумерное пространство, состоящее как из процессора, так и из памяти. Приоритет будет рассчитываться планировщиком и передаваться в ResourceRequest. Когда задачи закончатся, контейнеры будут удалены. –

+0

Спасибо за помощь. Мой последний вопрос - как планировщик оценивает количество ресурсов? Используют ли они историческую информацию? – mndn