hadoop系列之Configuration类解析

本文详细剖析了Hadoop中的核心类Configuration,介绍了类的初始化过程,包括静态变量、非静态变量和构造函数的加载顺序。重点讲解了配置加载和修改的机制,特别是loadResources()函数的作用。此外,还讨论了配置信息如何在不同组件间共享,以及在配置信息修改后如何处理。
摘要由CSDN通过智能技术生成

前言

Configuration是hadoop中五大组件的公用类,所以放在了core下,org.apache.hadoop.conf.Configruration。这个类是作业的配置信息类,任何作用的配置信息必须通过Configuration传递,因为通过Configuration可以实现在多个mapper和多个reducer任务之间共享信息。hadoop作为Apache旗下hadoop系列最早出现的组件,该组件的核心类Configuration对后续出现的hbase,have,spark的配置都有一定的借鉴意义。

概述

Configuration类最重要的作用是传递配置信息,所以其重要的属性应该是成员变量而非成员函数。

  1. resources 资源列表,用来存储配置文件名
  2. loadDefaults bool值,用来存储是否读取默认配置。默认是true
  3. REGISTRY hashmap,作用未知
  4. defaultResources 资源列表 默认的配置
  5. storeResource bool值 是否备份用户设置的配置信息到overlay
  6. updatingResource hashmap 本进程修改过的配置信息
  7. properties 最终的配置信息
  8. overlay 存放用户设置的配置信息(不包括配置文件的配置信息)

类初始化

我们按着类加载顺序和类实例化顺序来分析

1. 静态变量和静态代码块

静态代码块在defaultResources里添加了两个资源名:

    addDefaultResource("core-default.xml");
    addDefaultResource("core-site.xml");
  public static synchronized void addDefaultResource(String name) {
    if(!defaultResources.contains(name)) {
      defaultResources.add(name);
      for(Configuration conf : REGISTRY.keySet()) {
        if(conf.loadDefaults) {
          conf.reloadConfiguration();
        }
      }
    }
  }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值