spark on yarn 升级更新 spark

spark | 2020-03-06 16:25:47

spark on yarn 不需要部署spark,升级也和spark程序无关,网上的帖子包括我之前整理的关于spark on yarn的文章,都是先配置spark集群,然后配置hadoop集群,这样是不对的,spark的客户端(就是提交spark-submit的程序)需要可以配置spark-default.conf。其他的是不用配置的。hadoop spark集群配置参考hive on spark集群环境搭建


所以升级的时候也可以不用管各个节点是否有spark程序。那是如何升级spark,要修改什么?


1.回顾spark on yarn 集群配置

hadoop的配置可以直接参考之前的帖子,spark又不需要配置集群,那么spark只有客户端需要配置,spark客户端只会读取spark-env.sh和spark-defaults.conf这两个配置文件

1.1 spark-env.sh

export SCALA_HOME=/opt/hadoop/scala-2.12.2
export JAVA_HOME=/opt/hadoop/jdk1.8.0_77
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/opt/hadoop/spark-2.3.0-bin-hadoop2.7
export SPARK_MASTER_IP=master
#export SPARK_LOCAL_IP=master
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_YARN_USER_ENV=$HADOOP_HOME/etc/hadoop
export SPARK_WORKER_DIR=/opt/hadoop/data/spark/work/
export SPARK_EXECUTOR_MEMORY=8G

这个配置是我spark Standalone集群时的配置,放在客户端无所谓,客户端也会使用这个配置。

最重要的是export HADOOP_HOME=/opt/hadoop/hadoop-2.7.7,当spark-submit提交模式为yarn时,通过这个配置来找到yarn的配置,从而提交到yarn的集群。

所以你的spark客户端程序,需要把hadoop集群的程序复制一份过来,放在一起。


1.2 spark-default.conf

spark 应用提交的参数都可以配置在spark-default.conf

spark.master                      yarn
spark.submit.deployMode                cluster
spark.executor.cores             10
spark.num.executors              5
#spark.executor.instances         2
spark.driver.memory            8g
spark.executor.memory          16g
#动态资源分配
#spark.dynamicAllocation.enabled               true
#spark.shuffle.service.enabled                 true
#spark.dynamicAllocation.minExecutors        2
#spark.dynamicAllocation.maxExecutors        2
#spark.dynamicAllocation.initialExecutors    2
spark.eventLog.enabled                     true
spark.eventLog.compress                    true
spark.eventLog.dir                         hdfs://master:9000/tmp/logs/root/logs
spark.history.fs.logDirectory              hdfs://master:9000/tmp/logs/root/logs
spark.yarn.historyServer.address           http://master:18080
spark.sql.parquet.writeLegacyFormat        true
spark.sql.autoBroadcastJoinThreshold       10485760
spark.shuffle.memoryFraction 0.8
spark.shuffle.file.buffer            6400k
spark.reducer.maxSizeInFlight               960M
spark.network.timeout                     300s
spark.rpc.askTimeout                  300s
spark.shuffle.io.serverThreads         8
spark.yarn.jars                 hdfs://master:9000/sparkJars/*.jar
spark.executor.extraClassPath   /opt/hadoop/spark-2.3.0-bin-hadoop2.7/external_jars/*
spark.driver.extraClassPath     /opt/hadoop/spark-2.3.0-bin-hadoop2.7/external_jars/*

最终要的配置就时spark.yarn.jars,如果没有这个配置,提交应用时spark jars里面的jar都会复制上去,如果有这个配置,就会用这个配置里面的jar,所以这个里面的jar,才是运行时依赖的包。


2.如何升级spark?

你只需要将新版本的jars里面的jar重新上传到spark.yarn.jars 对应的位置就可以了


是的前面说了一大堆,整个升级就只干这么简单的一件事情。

要注意的是你原来的spark.yarn.jars ,可能自己添加了很多jar,比如mysql,mongo等等,你不要忘记保留这些包了。

登录后即可回复 登录 | 注册
    
关注编程学问公众号