个人博客地址:Spark On Yarn External Shuffle Service | 一张假钞的真实世界
本文基于spark-3.1.2-bin-without-hadoop.tgz版本,所以spark-3.1.2-yarn-shuffle.jar已经在节点的${SPARK_HOME}/yarn
目录下。
HADOOP_CLASSPATH
在所有NodeManager节点上设置环境变量:
export HADOOP_CLASSPATH=${SPARK_HOME}/yarn/spark-3.1.2-yarn-shuffle.jar:$HADOOP_CLASSPATH
yarn-site.xml
在yarn-site.xml中添加以下配置,并分发至所有NodeManager节点。
<!-- Spark Configuration -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>spark_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<property>
<name>spark.yarn.shuffle.stopOnFailure</name>
<value>true</value>
</property>
重启NodeManager
yarn --daemon stop nodemanager
yarn --daemon start nodemanager
检查
在NodeManager节点上使用以下命令查看7337端口是否已被监听:
netstat -ntlp|grep 7337
该端口通过spark.shuffle.service.port指定,默认是7337。
启用
在${SPARK_HOME}/conf/spark-defaults.conf
中添加以下配置,并分发至所有节点。
spark.shuffle.service.enabled true