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核數等等都起作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM