Spark-Yarn模式部署
1. 解压缩文件
将spark-3.0.0-bin-hadoop3.2.tgz文件上传到linux并解压缩,放置在指定位置。
# 在/opt/software中
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark
2.修改配置文件
-
修改hadoop配置文件/opt/module/hadoop-3.1.3/etc/hadoop/yarn-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>
-
修改conf/spark-env.sh,添加JAVA_HOME和YARN_CONF_DIR配置
mv spark-env.sh.template spark-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_381 YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
3.提交应用
先启动HDFS以及YARN集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
4.配置历史服务器
-
修改spark-defaults.conf.template文件名为spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
-
修改spark-defaults.conf文件,配置日志存储路径
spark.eventLog.enabled true spark.eventLog.dir hdfs://cloud1:8020/directory
注意:需要启动hadoop集群,HDFS上的目录需要提前存在
hadoop fs -mkdir /directory
-
修改spark-env.sh文件,添加日志配置
export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://cloud1:8020/directory -Dspark.history.retainedApplications=30"
- 参数1含义:web ui访问的端口号为18080
- 参数2含义:指定历史服务日志存储路径
- 参数3含义:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个时内存中的应用数,而不是页面上显示的应用数。
-
修改spark-defaults.conf
spark.yarn.historyServer.address=cloud1:18080 spark.history.ui.port=18080
-
启动历史服务
sbin/start-history-server.sh
-
重新提交应用
bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
Spark-on Yarn作业提交缓慢优化之spark jar包处理
spark on yarn方式运行计算作业,发现作业提交缓慢,日志如下
WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
INFO yarn.Client: Uploading resource file:/tmp/spark-293d2659-5df4-4445-8e6a-2d46103402e4/__spark_conf__938847757818885511.zip -> hdfs://cloud1:8020/user/hadoop/.sparkStaging/application_1537843134586_0005/__spark_conf__.zip
原因分析:由于没有设置spark.yarn.jars或者spark.yarn.archive这两个参数,spark就会把$SPARK_HOME/jars/下所有的jar包上传到hdfs中,造成提交缓慢
解决办法:
-
将$SPARK_HOME/jars/下面所有的jar包都上传到hdfs上
hadoop fs -mkdir -p /spark/jars/ hadoop fs -put /opt/module/spark/jars/*.jar /spark/jars/
-
在spark-defaults.conf文件中添加参数
spark.yarn.jars hdfs://cloud1:8020/spark/jars/*.jar