IDEA远程提交运行HDFS的Spark程序--优化篇1

之前说到,我可以直接让spark程序去引用HDFS上的jar包路径,解决因为上传依赖jar包导致的时间过长的问题。

上次还有一个遗留问题,我必须要在hadoop-yarn-common-2.6.4.jar包下的 yarn-default.xml中修改hostname的值才可以正常提交,这显然不符合正常使用的要求,我配置了那么多信息,难道必须在各个jar包重新设置吗?

我重新观察了以下正常spark-submit提交,和我在idea中提交的区别。
在这里插入图片描述
非常直观,左边将hadoop的配置文件统统上传了,右边则没有。所以许多配置信息都无法读取到。

再打开下面这文件。
在这里插入图片描述
在这里插入图片描述
该属性指向了包含配置文件的zip包,让spark程序在运行中能引用。
那它可以设置,我在代码中是不是也能修改这个参数。

进入源码,关于该参数的解释如下。
在这里插入图片描述
调用时改了个名字。

 // This code forces the archive to be copied, so that unit tests pass (since in that case both
 // file systems are the same and the archive wouldn't normally be copied). In most (all?)
 // deployments, the archive would be copied anyway, since it's a temp file in the local file
 // system.
    val remoteConfArchivePath = new Path(destDir, LOCALIZED_CONF_ARCHIVE)
    val remoteFs = FileSystem.get(remoteConfArchivePath.toUri(), hadoopConf)
    sparkConf.set(CACHED_CONF_ARCHIVE, remoteConfArchivePath.toString())

那按源码的方式,修改一下是不是也可以。
我将hadoop的配置文件打成ZIP包上传,并添加代码

sparkConf.set("spark.yarn.cache.confArchive","hdfs://192.168.79.101:9000/user/hadoop/hadoop_conf.zip");

启动后,该部分发现该语句根本就没生效。
该属性是internal修饰了,是不是因为这个内部设置导致我无法用外部修改。
先发着帖子,看看有没有大神有办法。

猜你喜欢

转载自blog.csdn.net/weixin_41008393/article/details/86525580