解决spark on yarn每次都传递一堆jars的问题

问题复现
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,这样执行效率会高点


————————————————
版权声明:本文为CSDN博主「阿顾同学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010452388/article/details/102644376

原文地址:https://www.cnblogs.com/javalinux/p/15075007.html