Apache Hadoop纱线-芯线利用率不足

Apache Hadoop纱线-芯线利用率不足,hadoop,apache-spark,yarn,resourcemanager,Hadoop,Apache Spark,Yarn,Resourcemanager,无论我如何修改warn 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 我仍然无法让我的应用程序即Spark利用集群

无论我如何修改
warn 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
我仍然无法让我的应用程序即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,但不起作用。
如何解决此问题?

问题不在于
warn site.xml
spark defaults.conf
,而在于将核心分配给执行器的资源计算器,或者在MapReduce作业的情况下,分配给映射器/还原器的资源计算器

默认资源计算器,即
org.apache.hadoop.warn.util.resource.DefaultResourceCalculator
仅使用内存信息分配容器,默认情况下不启用CPU调度。要同时使用内存和CPU,需要在
capacity scheduler.xml
文件中将资源计算器更改为
org.apache.hadoop.warn.util.resource.DominantResourceCalculator

以下是需要改变的

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

纱线.scheduler.capacity.resource-calculator
org.apache.hadoop.warn.util.resource.DominantResourceCalculator

我遇到了类似的问题,从我的代码中,我将
spark.executor.cores设置为5
。 尽管它只是取1,这是默认的核心。在spark UI和环境选项卡中,我看到了5个内核。但在检查executors选项卡时,我只能看到一个进程针对一个执行者处于运行状态。 我使用的是spark版本1.6.3

因此,我尝试使用spark submit命令作为
--conf spark.executor.cores=5
与使用5个内核一样工作正常

或者只是


——执行器核心5
,也可以工作

好吧,stackoverflow鼓励你分享自己的知识,所以就这么做:)干得好-我只是经历了很多麻烦才找到完全相同的东西,包括用纱线填充一个bug(它不是bug)。真希望我早点找到这个。看见复制粘贴时要小心,我还发现原始文档在配置(s vs c)中错误地将
Resource
作为
Resource
。。。仅配置了2个内核,但mapreduce的负载平均值很高。。有时cpu%也会提高。。有什么想法吗?