Hadoop Configuration介绍

本文详细介绍了Hadoop配置的各个方面,包括配置信息来源、Configuration类的核心属性和方法、构造方法、添加配置资源的方式以及获取和设置配置信息的机制。强调了配置的层次结构,如默认配置、项目配置和任务特定配置,并指出在分布式系统中配置的序列化和一致性的重要性。还提到了配置的动态更新和覆盖策略。
摘要由CSDN通过智能技术生成

配置信息来源

static{
    // print deprecation warning if hadoop-site.xml is found in classpath
    ClassLoader cL = Thread.currentThread().getContextClassLoader();
    if (cL == null) {
      cL = TestConf.class.getClassLoader();
    }
    if(cL.getResource("hadoop-site.xml")!=null) {
      LOG.warn("DEPRECATED: hadoop-site.xml found in the classpath. " +
          "Usage of hadoop-site.xml is deprecated. Instead use core-site.xml, "
          + "mapred-site.xml and hdfs-site.xml to override properties of " +
          "core-default.xml, mapred-default.xml and hdfs-default.xml " +
          "respectively");
    }
if(cL.getResource("core-default.xml")!=null) {
		LOG.warn("1:" + cL.getResource("core-default.xml"));
    }
    if(cL.getResource("core-site.xml")!=null) {
	LOG.warn("2:" + cL.getResource("core-site.xml"));
    }
    addDefaultResource("core-default.xml");
    addDefaultResource("core-site.xml");
  }
通过红色新增代码可以发现,配置信息来自:

1、系统默认配置文件core-default.xml(位于hadoop-core-1.0.3.jar文件下);

2、项目classpath下的core-site.xml文件。


 Configuration类的属性清单

LOG是记录日志的对象。

quietmode对应的是配置信息加载过程中是否属于静默(安静、不写日志)的模式,如果处于静默的模式下,则在配置信息加载的过程中的一些信息不会被记录在日志中,默认情况是设置为true的。

resources是一个对象数组,用于存放有关包含配置信息的对象。

finalParameter是所有配置值被声明为final的变量的一个集合。

loadDefault从表面字段上可以理解为是否要加载默认的配置。

REGISTRY是一个WeakHashMap,用于多有个对象的相关配置的注册对它们进行管理,弱哈希可以自动清除不在正常使用的键对应的条目。

defaultResources是一个CopyOnWriteArrayList的字符串数组,用于存储默认的配置资源名或者路径。

{…}是一个静态初始化块,用于加载默认的配置资源。

overlay则是进行覆盖的属性。

properties存储的是Configuration对象中的全部配置信息,它的类型是Properties的,这个类型是Java提供的对KV配置的一个属性集,提高了对KV配置参数的存储和操作方法。

classLoader主要是用于配置冲根据配置的参数构造相应的对象实例时提供上下文环境的类加载器

 

MAX_SUBST是设定对带有环境变量的值所能够深入解析的层次数,超出这个最大的层数的值将不能够解析。

varPat是一个对含有环境变量的值的进行转换的正则表达式对象,比如我们设定的一个路径变量的值为$HOME/data,那么这个变量就会以一定的规则把该变量的值分为字串$HOME和/data,之后会把$HOME解析成系统上的目录了。


构造方法

第二个是可以指定是否加载默认设置,默认为true,第三个是用一个configuration对象构造一个新的configuration对象。


添加配置资源的方法

分别是添加默认的或者指定的各种来源的配置资源,而reloadConfiguration()则是一个清除所有原有配置信息,以便于重新加载配置信息的方法,这可以在值的覆盖中或者用新的配置资源覆盖之前的配置资源的时候用到。


获取一些配置信息的set或者get方法和其他方法

set和get方法主要是获取各种参数值的方法,它的主要机制是通过getPros()调用loadResources(Properties,ArrayList,boolean)方法再调用loadResource(Properties,Object,boolean)加载配置资源中的配置信息,而set(String,String)和get(String)的方法中会调用getPros()方法获取当前Configuration对象的properties对象,如果该对象为空,则调用loadResources(Properties&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值