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>