Apache Hadoop Yarn-недоиспользование ядер

независимо от того, сколько я возиться с настройками в yarn-site.xml i.e используя все приведенные ниже параметры

yarn.scheduler.minimum-allocation-vcores
yarn.nodemanager.resource.memory-mb
yarn.nodemanager.resource.cpu-vcores
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.maximum-allocation-vcores

Я просто до сих пор не могу получить мое приложение i.E Spark для использования всех ядер кластера. Исполнители spark, похоже, правильно занимают всю доступную память, но каждый исполнитель просто продолжает принимать одно ядро и не более.

вот параметры, настроенные в spark-defaults.conf

spark.executor.cores                    3
spark.executor.memory                   5100m
spark.yarn.executor.memoryOverhead      800
spark.driver.memory                     2g
spark.yarn.driver.memoryOverhead        400
spark.executor.instances                28
spark.reducer.maxMbInFlight             120
spark.shuffle.file.buffer.kb            200

обратите внимание, что spark.executor.cores имеет значение 3, но это не так работа. Как это исправить?

1 ответов


проблема не в yarn-site.xml или spark-defaults.conf но на самом деле с калькулятором ресурсов, который назначает ядра исполнителям или в случае заданий MapReduce, картографам/редукторам.

калькулятор ресурсов по умолчанию i.e org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator использует только информацию о памяти для выделения контейнеров, а планирование ЦП по умолчанию не включено. Чтобы использовать как память, так и процессор, калькулятор ресурсов должен быть изменен на org.apache.hadoop.yarn.util.resource.DominantResourceCalculator на capacity-scheduler.xml файл.

вот что нужно менять.

<property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>