问题复现
spark-submit \
--master yarn \
--deploy-mode cluster \
--class com.bigdata.homework.standby.JDBCApp \
--jars /home/hadoop/lib/mysql-connector-java-5.1.47.jar,/home/hadoop/lib/config-1.2.1.jar \
--driver-class-path /home/hadoop/lib/mysql-connector-java-5.1.47.jar \
/home/hadoop/lib/rzdata-spark-1.0.jar
每次执行上面脚本spark on yarn时,日志会出现如下的提示,上传SPARK_HOME/jars里的jar包都会打包到hdfs
图上面提示了spark.yarn.jars
或者sparl.yarn.archive
都没有设置,我们看下官网的说明
http://spark.apache.org/docs/latest/running-on-yarn.html
官网的意思:如果spark.yarn.jars
或者sparl.yarn.archive
这2个属性没有设置的话,spark会把$SPARK_HOME/jars
下的jar包打包,然后上传到分布式缓存,也就是hdfs
解决方法
下面是官网的说明
http://spark.apache.org/docs/latest/running-on-yarn.html
先创建hdfs目录
$ hdfs dfs -mkdir /spark-yarn-jars
然后把$SPARK_HOME/jars
上传到此目录
$ hdfs dfs -put ${SPARK_HOME}/jars/*.jar /spark-yarn-jars
配置spark-defaults.conf
文件
vi ${SPARK_HOME}/conf/spark-defaults.conf
添加如下的配置
spark.yarn.jars hdfs://hadoop001:9000/spark-yarn-jars/*.jar
重新执行spark on yarn,会发现不会再上传jars,这样执行效率会高点