Spark-Yarn模式部署

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.修改配置文件

  1. 修改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>
    
  2. 修改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.配置历史服务器

  1. 修改spark-defaults.conf.template文件名为spark-defaults.conf

    mv spark-defaults.conf.template spark-defaults.conf
    
  2. 修改spark-defaults.conf文件,配置日志存储路径

    spark.eventLog.enabled	true
    spark.eventLog.dir		hdfs://cloud1:8020/directory
    

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

    hadoop fs -mkdir /directory
    
  3. 修改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历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个时内存中的应用数,而不是页面上显示的应用数。
  4. 修改spark-defaults.conf

    spark.yarn.historyServer.address=cloud1:18080
    spark.history.ui.port=18080
    
  5. 启动历史服务

    sbin/start-history-server.sh
    
  6. 重新提交应用

    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中,造成提交缓慢

解决办法:

  1. 将$SPARK_HOME/jars/下面所有的jar包都上传到hdfs上

    hadoop fs -mkdir -p /spark/jars/
    hadoop fs -put /opt/module/spark/jars/*.jar /spark/jars/
    
  2. 在spark-defaults.conf文件中添加参数

    spark.yarn.jars	hdfs://cloud1:8020/spark/jars/*.jar
    
posted @   还是做不到吗  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示