问题描述:
配置一个yarn的container可以使用多个vcores,因为capacity schedule使用的是DefaultResourceCalculator,那么DefaultResourceCalculator它在加载Container时其实仅仅只会考虑内存而不考虑vcores,默认vcore就是1。
yarn 默认情况下,只根据内存调度资源,所以 spark on yarn 运行的时候,即使通过–executor-cores 指定 core 个数为 N,但是在 yarn 的资源管理页面上看到使用的 vcore 个数还是 1。
解决方法:
修改${HADOOP_HOME}/etc/hadoop/capacity-scheduler.xml
---------
<property> <name>yarn.scheduler.capacity.resource-calculator</name> <!-- <value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value> --> <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value> </property>
重启hadoop集群使其配置生效即可!