mapreduce 运行的时候 hdfs-default.xml 和 hdfs-site.xml 是在哪加载的?

分享 苏牛 ⋅ 于 2020-08-07 20:24:05 ⋅ 2874 阅读

首先 调用 FileSystem.get() 的时候会进入到FileSystem类中进行对象的获取,其中 通过 loadFileSystems() 这个方法不难发现使用了ServiceLoader 进行数据的加载
ServiceLoader<FileSystem> serviceLoader = ServiceLoader.load(FileSystem.class);
在遍历的时候

while (it.hasNext()) {
           FileSystem fs = null;
           try {
             fs = it.next();
             try {
               SERVICE_FILE_SYSTEMS.put(fs.getScheme(), fs.getClass());
             } catch (Exception e) {
               LOG.warn("Cannot load: " + fs + " from " +
                   ClassUtil.findContainingJar(fs.getClass()), e);
             }
           } catch (ServiceConfigurationError ee) {
             LOG.warn("Cannot load filesystem", ee);
           }
        }

加载了一个叫做 DistributedFileSystem 的子类
file
在这个子类中找到static静态块
file
观察 HdfsConfiguration 类
file
找到了,又是一个开开心心的一天

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-苏牛,http://hainiubl.com/topics/75277
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter