Bootstrap

Spark On Yarn External Shuffle Service

个人博客地址: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

;