spark on yarn提交后vcore数不对

Posted yesecangqiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark on yarn提交后vcore数不对相关的知识,希望对你有一定的参考价值。

一、现象描述

比如提交命令:

./bin/spark-submit --class org.apache.spark.examples.SparkPi     --master yarn     --deploy-mode cluster     --driver-memory 4g     --executor-memory 2g 
--num-executors 6 --executor-cores 3 --queue thequeue lib/spark-examples*.jar 10

理论上:vcores使用数 = executor-cores * num-executors + 1 = 6 * 3 = 18 + 1 = 19,
但是实际中很可能你会在yarn监控界面上看到vcores数使用只是7,也就是executor-cores没起作用。
二、解决方法
这其实不是spark的问题,而是yarn调度器的一个特性,只需要修改“capacity-scheduler.xml”文件中的配置“yarn.scheduler.capacity.resource-calculator”即可,
value由原来的“org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator”修改为“org.apache.hadoop.yarn.util.resource.DominantResourceCalculator”
可能需要重启hadoop
三、参考
出处:http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html
配置“yarn.scheduler.capacity.resource-calculator”的解释为:
The ResourceCalculator implementation to be used to compare Resources in the scheduler. The default i.e. org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator only uses Memory while DominantResourceCalculator uses Dominant-resource to compare multi-dimensional resources such as Memory, CPU etc. A Java ResourceCalculator class name is expected.
也没翻译很明白,大概意思就是:默认的那个配置,只对内存起作用,而后改的那个配对内存、CPU核数等等都起作用。












以上是关于spark on yarn提交后vcore数不对的主要内容,如果未能解决你的问题,请参考以下文章

Flink 实战系列Flink on yarn 为什么 Allocated CPU VCores 显示不正确?

Flink 实战系列Flink on yarn 为什么 Allocated CPU VCores 显示不正确?

YARN 上的 Spark 使用的 vcore 太少

Spark on Yarn模式提交任务后,会进行以下几个过程

Spark on yarn遇到的问题

Spark on Yarn提交配置没有生效