1,配置/etc/profile中HADOOP_CONF_DIR
目的是为了让Spark找到core-site.xml、hdfs-site.xml和yarn-site.xml【让spark知道NameNode、ResourceManager】
export HADOOP_CONF_DIR=/bigdata/hadoop-2.7.7/etc/hadoop/
2,修改hadoop-2.7.7/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>
配置一个yarn的container可以使用多个vcores,因为capacity schedule使用的是DefaultResourceCalculator
,那么DefaultResourceCalculator它在加载Container时其实仅仅只会考虑内存而不考虑vcores,默认vcore就是1。
yarn 默认情况下,只根据内存调度资源,所以 spark on yarn 运行的时候,即使通过--executor-cores 指定 core 个数为 N,
但是在 yarn 的资源管理页面上看到使用的 vcore 个数还是 1,(否则一个child只能使用一个core)
3,(可选)关闭内存资源检测
修改yarn-sit.xml,避免测试环境内存过小而直接关闭程序
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>