Apache Hadoop纱线 - 核心利用不足

Ner*_*rve 27 hadoop resourcemanager hadoop-yarn apache-spark

无论我多少修改设置,yarn-site.xml即使用以下所有选项

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
Run Code Online (Sandbox Code Playgroud)

我仍然无法获得我的应用程序,即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
Run Code Online (Sandbox Code Playgroud)

请注意,spark.executor.cores设置为3,但它不起作用.我该如何解决?

Ner*_*rve 50

问题不在于yarn-site.xml或者spark-defaults.conf实际上是资源计算器将核心分配给执行者,或者在MapReduce作业的情况下,分配给Mappers/Reducers.

默认资源计算器即org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator仅使用内存信息来分配容器,并且默认情况下不启用CPU调度.使用这两种内存以及CPU,资源计算器需要改变,以org.apache.hadoop.yarn.util.resource.DominantResourceCalculatorcapacity-scheduler.xml文件.

这是需要改变的.

<property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
Run Code Online (Sandbox Code Playgroud)

  • 好吧,stackoverflow鼓励你分享一个人的知识,所以这样做:) (18认同)
  • 干得好 - 我刚刚发现完全相同的麻烦,包括用纱线填写错误(这不是一个错误).只是希望我早点发现这个.请参阅[官方Hadoop文档](https://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html).在复制粘贴时要小心,我还发现原始文档在配置中错误地将`Resource`拼写为`Resourse`(s vs c). (2认同)