Spark Yarn模式

一、安装

spark官网:http://spark.apache.org

spark3.1.2下载地址:https://mirrors.bfsu.edu.cn/apache/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz

  1. # 下载安装包
  2. wget https://mirrors.bfsu.edu.cn/apache/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz
  3. # 解压安装包
  4. tar -zxvf spark-3.1.2-bin-hadoop3.2.tgz
  5. # 修改目录名称
  6. mv spark-3.1.2-bin-hadoop3.2 spark-yarn

二、修改配置

  1. 修改hadoop配置文件yarn-site.xml,并分发到各服务器
  1. # 修改yarn-site.xml文件配置
  2. vim /opt/hadoop-3.2.2/etc/hadoop/yarn-site.xml

增加如下配置

  1. <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
  2. <property>
  3. <name>yarn.nodemanager.pmem-check-enabled</name>
  4. <value>false</value>
  5. </property>
  6. <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
  7. <property>
  8. <name>yarn.nodemanager.vmem-check-enabled</name>
  9. <value>false</value>
  10. </property>

分发配置

xsync /opt/hadoop-3.2.2/etc/hadoop/yarn-site.xml
  1. 配置spark-env.sh
# 模板复制spark-env.sh
mv spark-env.sh.template spark-env.sh
# 修改spark-env配置
vim spark-env.sh
# 增加如下配置
YARN_CONF_DIR=/opt/hadoop-3.2.2/etc/hadoop
  1. 启动hdfs以及yarn集群
myhadoop.sh start

三、提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.1.2.jar \
10

—class 表示要执行的jar包的主类

—master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟CPU数量

spark-examples_2.12-3.1.2.jar 运行的应用所在的jar包

数字10表示程序的入参

查看http://192.168.8.103:8088/页面,查看执行记录

image.png

四、配置历史服务器

  1. 修改配置文件名称
# 进入spark-yarn的conf目录下
cd spark-yarn/conf
# 修改spark-defaults.conf.template文件名
mv spark-defaults.conf.template spark-defaults.conf
  1. 修改spark-defaults.conf配置文件
vim spark-defaults.conf
# 增加如下内容
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/spark-log
spark.yarn.historyServer.address=hadoop102:18080
spark.history.ui.port=18080

注意:需要启动hadoop集群,HDFS上的/spark-log目录需要提前存在

hadoop fs -mkdir /spark-log

  1. 修改spark-env.sh文件,添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/spark-log
-Dspark.history.retainedApplications=30"

-Dspark.history.ui.port: webUI访问的端口号为18080

-Dspark.history.fs.logDirectory:指定历史服务器日志存储路径

-Dspark.history.retainedApplications:指定保存Application历史记录的个数,如果超过这个值,旧的应用信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数

  1. 启动历史服务器
sbin/start-history-server.sh
  1. 重新提交应用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.1.2.jar \
10
  1. Web页面查看日志:http://192.168.8.103:8088