使能Spark资源动态分配
进入${SPARK_HOME}/conf/目录,在spark-defaults.conf文件中新增如下配置
如果spark-defaults.conf文件不存在,从spark-defaults.conf.template模板文件拷贝
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
# Configuring the Dynamic Resource Allocation
spark.dynamicAllocation.enabled true
使能External Shuffle Service
在spark-defaults.conf文件中新增如下配置
# Configuring the External Shuffle Service
spark.shuffle.service.enabled true
External Shuffle Service配置
1、拷贝${SPARK_HOME}/yarn/目录下的spark--yarn-shuffle.jar到${HADOOP_HOME}/share/hadoop/yarn/lib/目录下;
2、在${HADOOP_HOME}/etc/hadoop/yarn-site.xml文件中添加如下配置:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle,spark_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
注意:如果 “yarn.nodemanager.aux-services” 配置项已存在,则在 value 中添加 “spark_shuffle”,且用逗号和其他值分开。
3、增大NodeManager的heap size
通过在${HADOOP_HOME}/etc/hadoop/yarn-env.sh文件中设置YARN_HEAPSIZE的值(默认为1000)来实现,此处以配置为6000为例。
export YARN_HEAPSIZE=6000
4、重启集群中所有节点的Spark
5、重启集群中所有的YARN