Пряжа не почитает пряжу .nodemanager.resource.cpu-vcores

Я использую Hadoop-2.4.0, а мои системные конфигурации - 24 ядра, 96 ГБ ОЗУ.

Я использую следующие конфиги

mapreduce.map.cpu.vcores=1
yarn.nodemanager.resource.cpu-vcores=10
yarn.scheduler.minimum-allocation-vcores=1
yarn.scheduler.maximum-allocation-vcores=4
yarn.app.mapreduce.am.resource.cpu-vcores=1

yarn.nodemanager.resource.memory-mb=88064
mapreduce.map.memory.mb=3072
mapreduce.map.java.opts=-Xmx2048m

Конфигурации планировщика производительности

queue.default.capacity=50
queue.default.maximum_capacity=100
yarn.scheduler.capacity.root.default.user-limit-factor=2

С вышеприведенными конфигурациями я ожидаю, что пряжа не запустит более 10 карт на node, но запускает 28 карт на node. Я что-то делаю неправильно?

Ответ 1

YARN выполняет больше контейнеров, чем выделенных ядер, потому что по умолчанию используется DefaultResourceCalculator. Это учитывает только память.

public int computeAvailableContainers(Resource available, Resource required) {
// Only consider memory
return available.getMemory() / required.getMemory();
  }

Используйте DominantResourceCalculator, он использует как процессор, так и память.

Установите ниже config в Емкость-scheduler.xml

yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

Подробнее о ДоминантРесурсКалькулятор