1.前言
Spark集群模式包括:Local,Standalong,Yarn,Kubernetes,但在生产环境中Spark On Yarn是主流。其中,Spark提供计算服务,Yarn提供资源调度能力,HDFS提供存储。
本文介绍如何部署Spark3.1.3 On Yarn,这种模式下,Spark没有集群的概念,而是作为一个客户端组件向Yarn提交自定义Jar包程序任务,只需要将Spark相关配置配好并部署到hadoop集群中任意一个节点上即可。
本文的Spark对接的是Yarn HA高可用集群,Yarn的高可用部署《Hadoop3.x入门-搭建3节点Hadoop HA集群_-小末的博客-CSDN博客_hadoop3 ha搭建》
2.前置条件
JDK1.8,一个Hadoop集群。
3.Spark on Yarn 提交jar包任务的简单流程
Cluster模式:
而Client模式会将driver启动在提交任务的客户端SparkSubmit进程中,由于Driver会和Executor有数据交互,Client模式下会导致用户本机网卡流量激增,导致用户本机内存增高导致OOM等问题,生产环境谨慎使用。
4.On Yarn 部署
4.1下载Spark3.1.3 bin包
下载完成后,上传到其中任意一台Hadoop节点服务器中,本文解压到hd1.dev.loval节点的/opt/module目录下。
4.2修改配置文件
4.2.1yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
分发配置到所有节点,并重启hdfs和yarn集群。
4.2.2spark-env.sh
cd conf/
mv spark-env.sh.template spark-env.sh
vim spark-env.sh
#设置jdk路径
export JAVA_HOME=/opt/module/jdk1.8.0_311
#配置yarn配置文件位置,spark默认读取yarn-site.xml等配置,获取yarn信息,向yarn提交任务
export YARN_CONF_DIR=opt/module/hadoop-3.3.2/etc/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
4.3配置Spark历史服务
4.3.1 创建存放日志hdfs路径
hdfs dfs -mkdir /directory
4.3.2修改配置文件
注意对接的hadoop ha集群,非ha需要指明hdfs端口,默认是8020
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
#加入以下内容
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hacluster/directory
spark.yarn.historyServer.address=hd1.dev.local:18080
spark.history.ui.port=18080
vim spark-env.sh
#history ui端口,历史日志存放的路径,保存提交Application历史记录个数
#注意对接的是HDFS HA集群
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hacluster/directory -Dspark.history.retainedApplications=30"
4.3.3启动历史服务进程
sbin/start-history-server.sh
查看是否启动成功:
netstat -nltp|grep 18080
如果存在则代表启动成功
4.4提交spark任务测试集群可用性
提交一个client模式的计算PI的任务:
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.1.3.jar \
5
查看Yarn页面:
查看Spark JobHistory页面:
至此Spark on Yarn一个简单demo测试完毕。