Spark on YARN 【Spark如何运行在Yarn上,圆周率案例和Wordcount案例提交测试】


属性配置

将Spark Application提交运行到YARN集群上,至关重要,企业中大多数都是运行在YANR上,文档:http://spark.apache.org/docs/2.4.5/running-on-yarn.html#launching-spark-on-yarn


设置环境变量

【$SPARK_HOME/conf/spark-env.sh】配置文件中,添加如下内容:

vim /export/server/spark/conf/spark-env.sh
## 添加内容
HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.3/etc/hadoop
YARN_CONF_DIR=/usr/hadoop/hadoop-2.7.3/etc/hadoop

注意:添加的路径是【$HADOOP_HOME/etc/hadoop】

同步配置到【slave1】和【slave2】机器,命令如下:

cd /export/server/spark/conf
scp -r spark-env.sh root@slave1:$PWD
scp -r spark-env.sh root@slave2:$PWD

历史服务MRHistoryServer地址

【$HADOOP_HOME/etc/hadoop/yarn-site.xml】配置文件中,指定 MRHistoryServer 地址信息,添加如下内容:

(在 master 上修改:vim $HADOOP_HOME/etc/hadoop/yarn-site.xml)

<property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
</property>
<property>
 <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>
<property>
 <name>yarn.log.server.url</name>
 <value>http://master:19888/jobhistory/logs</value>
</property>

同步配置到【slave1】和【slave2】机器,命令如下:

cd /export/server/hadoop/etc/hadoop
scp -r yarn-site.xml root@slave1:$PWD
scp -r yarn-site.xml root@slave2:$PWD

历史服务HistoryServer地址

【$SPARK_HOME/conf/spark-defaults.conf】文件增加SparkHistoryServer地址信息:

## 在 master 上修改
vim /export/server/spark/conf/spark-defaults.conf
## 添加内容
spark.yarn.historyServer.address master:18080

同步配置到【slave1】和【slave2】机器,命令如下:

cd /export/server/spark/conf
scp -r spark-defaults.conf root@slave1:$PWD
scp -r spark-defaults.conf root@slave2:$PWD

配置依赖Spark Jar包

当Spark Application应用提交运行在YARN上时,默认情况下,每次提交应用都需要将依赖Spark相关jar包上传到YARN 集群中,为了节省提交时间和存储空间,将Spark相关jar包上传到HDFS目录中,设置属性告知Spark Application应用。

## 启动HDFS,在node1.itcast.cn上操作
hadoop-daemon.sh start namenode
hadoop-daemons.sh start datanode
## hdfs上创建存储spark相关jar包目录
hdfs dfs -mkdir -p /spark/apps/jars/
## 上传$SPARK_HOME/jars所有jar包
hdfs dfs -put /export/server/spark/jars/* /spark/apps/jars/

在这里插入图片描述

【$SPARK_HOME/conf/spark-defaults.conf】文件增加Spark 相关jar包存储HDFS位置信息:

## 在master上操作
vim /export/server/spark/conf/spark-defaults.conf
## 添加内容
spark.yarn.jars hdfs://master:8020/spark/apps/jars/*

同步配置到【slave1】和【slave2】机器,命令如下:

## 在 master 上操作
cd /export/server/spark/conf
scp -r spark-defaults.conf root@slave1:$PWD
scp -r spark-defaults.conf root@slave2:$PWD

资源检查

由于使用虚拟机运行服务,默认情况下YARN检查机器内存,当内存不足时,提交的应用无法运行,可以设置不检查资源,命令如下:

编辑 yarn-site.xml 文件,在 master 上操作

vim /export/server/hadoop/etc/hadoop/yarn-site.xml

添加内容:

<property>
 <name>yarn.nodemanager.pmem-check-enabled</name>
 <value>false</value>
 </property>
<property>
 <name>yarn.nodemanager.vmem-check-enabled</name>
 <value>false</value>
</property>

同步配置到【slave1】和【slave2】机器,命令如下:

cd /export/server/hadoop/etc/hadoop
scp -r yarn-site.xml root@slave1:$PWD
scp -r yarn-site.xml root@slave2:$PWD


启动服务

Spark Application运行在YARN上时,上述配置完成,以此启动服务:HDFS、YARN、MRHistoryServer和Spark HistoryServer,命令如下:

## 启动HDFS和YARN服务,在node1.itcast.cn执行命令
hadoop-daemon.sh start namenode
hadoop-daemons.sh start datanode
yarn-daemon.sh start resourcemanager
yarn-daemons.sh start nodemanager
## 启动MRHistoryServer服务,在node1.itcast.cn执行命令
mr-jobhistory-daemon.sh start historyserver
## 启动Spark HistoryServer服务,,在node1.itcast.cn执行命令
/export/server/spark/sbin/start-history-server.sh


提交应用

提交运行 PI

先将圆周率PI程序提交运行在YARN上,命令如下:

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master yarn \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10

在这里插入图片描述

如下图所示:
在这里插入图片描述


提交运行 WordCount

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master yarn \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 1 \
--num-executors 2 \
--queue default \
--class cn.kaizi.spark.start.SparkSubmit \
hdfs://master:8020/spark/apps/spark-day02_2.11-1.0-SNAPSHOT.jar \
/datas/wordcount.data /datas/swc-output

在历史服务器查看运行状况:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/shuyv/article/details/116544969
今日推荐