您当前的位置: 首页 >  ar

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

解决sparn yarn-cluster第三方依赖包的加载

宝哥大数据 发布时间:2018-11-05 09:15:30 ,浏览量:0

1、最简单粗暴的方式, 打一个fatjar. 2、禁止应用程序将依赖的Jar包传到HDFS,将spark-assembly.jar放在该目录中。

是Spark自己将运行时候需要依赖的Java包上传到HDFS上,而且每次运行Spark Application的时候都会上传,这时候你会发现你的hdfs://mycluster/user/iteblog/.sparkStaging目录下面存在了大量的Jar文件,这最少存在两个不好的地方:   1、每次上传Jar文件,多少也会影响到程序的运行速度;   2、当在HDFS中上传了大量的Jar文件,这会产生大量的小文件,会对HDFS有影响。   所以我们想是否可以在HDFS上面建立一个公共的lib库存放目录,每次运行Spark的时候,只要我们程序依赖的Jar包存在HDFS中的lib库中,那么这时候我们就不上传该Jar 在spark-defaults.conf中配置。

   spark.yarn.jar 
   spark.yarn.jars hdfs://chb0-179004/spark_libs/*.jar
   spark.yarn.archive

设置后,将不会在上传了

	Source and destination file systems are the same. 
	Not copying hdfs://chb0-179004:8020/hdp/apps/2.6.1.0-129/spark/spark-hdp-assembly.jar
但是,将应用依赖的第三方依赖包上传到该目录中, 无法加载第三方依赖 3、通过--jars指定第三方依赖,由于这个方式, 每个jar都需要列出,使用","分割, 如果jar太多手动去写,肯定麻烦, 我们可以通过shell脚本
jarlib="lib"
CLASS_PATH="smsRun.sh"
for i in `ls $jarlib/*.jar`; do
CLASS_PATH="$CLASS_PATH","$i";   //格式化jar包路径
done
//执行命令   --jars  $CLASS_PATH
spark-submit  --master yarn-cluster --num-executors 1 --driver-memory 2g --executor-memory 512M --class com.nokia.uba.analysis.spark.mcSms.SmsAnalysisJob --jars  $CLASS_PATH walrusAnlysis.jar 20181102 02

可以从日志中看出第三方jar的上传。任务执行成功 在这里插入图片描述

4、突然运行程序, 显示依赖缺少, 但是运行日志开始显示,明明已经上传到了集群, 跑一会就包file not find. 一开始以为是内存不足,但是调节了driver-memory, executor-memory,都无效。 在这里插入图片描述

最后在程序中,发现初始化conf的时候, 还设置sc.setMaster("local[4]");, 但是我是提交yarn-cluster模式, 将改行注释,问题解决。

5、程序退出, 但是UI上显示正常 参考: https://blog.csdn.net/u011291159/article/details/51161977

ApplicationMaster: Final app status: SUCCEEDED, exitCode: 0
关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0404s