在阅读 SparkSubmit 源代码时,重点关注 Configuration 的资源文件的加载情况,默认通过 new Configuration() 构造方法创建时,只会加载 core-default.xml 和core-site.xml文件,但是 SparkSubmit 中打印 Configuration 时,发现还会加载 yarn-site.xmlSparkSubmit 代码中没有看到显示加载 yarn-site.xml 的地方,那 yarn-site.xml 从哪里加载进来的?

跟进 SparkSubmit 源代码,找到关键代码 lazy val secMgr = new SecurityManager(sparkConf), secMgr懒初始化,触发了 yarn-site.xml 的加载。如下图所示:

spark的SparkSubmit类关于Configuration的资源文件加载_xml

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

spark的SparkSubmit类关于Configuration的资源文件加载_spark_02

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

spark的SparkSubmit类关于Configuration的资源文件加载_加载_03

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

spark的SparkSubmit类关于Configuration的资源文件加载_加载_04

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

spark的SparkSubmit类关于Configuration的资源文件加载_xml_05

谷百特博客