在阅读SparkSubmit源代码时,重点关注Configuration的资源文件的加载情况,默认通过new Configuration()构造方法创建时,只会加载core-default.xml和core-site.xml文件,但是SparkSubmit中打印Configuration时,发现还会加载yarn-site.xml,SparkSubmit代码中没有看到显示加载yarn-site.xml的地方,那yarn-site.xml从哪里加载进来的?
跟进SparkSubmit源代码,找到关键代码 lazy val secMgr = new SecurityManager(sparkConf), secMgr懒初始化,触发了yarn-site.xml的加载。如下图所示:

跟进new SecurityManager(sparkConf),打印yarn-site.xml的相关堆栈,如下所示:

上述的关键代码,org.apache.hadoop.mapred.JobConf.(JobConf.java:119),打开JobConf这个类,如下图:

继续打开ConfigUtil.loadResources(),如下图,在ConfigUtil中显示加载了yarn-site.xml。

欢迎关注公众号和访问网站,了解更多技术资讯:

评论区