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%也会提高。。有什么想法吗?