Hadoop技术内幕——Hadoop配置信息处理

  配置系统是复杂软件必不可少的一部分,org.apache.hadoop.conf.Configuration在Hadooop各个子项目中发挥着重要作用。

  windows系统广泛使用一种特殊批的ASCII文件.ini作为其主要配置文件标准,被称为(Initialization File)或概要文件(profile);java中JDK提供了java.util.Properties类处理简单的配置文件。而Hadoop采用自己独有的配置文件管理系统。

  Hadoop的配置文件的根元素是configuration,一般只包含子元素property,每个property元素就是一个配置项,配置文件不支持分层或分级。在configuration中,每个属性都是String类型,值类型可以是多种类型。

  合并资源指交将多个配置文件合并,通过loadResources()方法实现的。如果两个配置资源包含了相同的配置项,而且前一个没有标记为final,那么后面的配置将覆盖前面的配置。

  hadoop系统还有一个重要 功能 ,就是支持属性扩展。如dfs.name.dir的值为${hadoop,tmp.dir}/dfs/name。其中${hadoop,tmp.dir}会使用Configuration中的相应属性进行扩展。

  使用Configuration类的一般过程是:构造Configuration对象 ,并通过类的addResource()方法添加需要加载的资源;然后就可以使用get*方法和set*方法访问/设置配置项,资源会在第一次使用的时候自动加载到对象中。

  Configuration的成员变量包括:

  (1)-quietmode:boolean,用来设置加载配置的模式。默认true,在加载解析配置文件的过程中,不输出日志信息。

  (2)-loadDefaults:boolean,服务业确定是否加载默认资源,这些资源保存在defaultResources中。

  (3)-defaultResources:ArrayList<String>,是个静态成员变量,通过方法addDefaultResource()可以添加系统的默认资源。

  (4)-resources:ArrayList<Object>,保存所有通过 addResource()方法添加Configuration对象的资源。

  (5)-properties:Properties,Hadoop配置文件解析后的键-值对都存放在properties中。

  (6)-finalParameters:Set<String>,用来保存所有配置文件中已经被声明为final的键-值对的键。

  (7)-overlay:Properties,用来记录通过set()方式改变的配置项,即,是应用设置的,不是通过配置资源解析得到的。

  (8)-classLoader:ClassLoader,是一个类加载器变量,可以用来加载指定类,也可以是相关的资源。

  资源通过对象的addResource()方法或类的静态addDefaultResource()方法添加到了Configuration对象中,添加的资源并不会立即被加载,只是通过 reloadConfiguration()方法清空properties和finalParameters。静态方法addDefaultResource()通过 静态成员REGISTRY来清空Configuration对象中的数据。

  Hadoop的配置文件都是古非今XML形式,JAXP(java API for XML Processing)是一种稳定、可靠的XML处理API,支持SAX(simple API for XML)和DOM两种XML处理方法。SAX提供一种流式的、事件驱动的XML处理方式,但编写处理逻辑比较复杂,比较适合处理大的XML文件。DOM是首先将XML文档一次性装入内存;然后根据文档中定义的元素和属性在中建立一个“树形结构”,也就是一个文档对象模型,将文档对象 化,文档中每个节点对应着模型中一个对象;然后 使用对象 提供 的编程接口,访问XML文档进行操作XML文档。

  Configurable是一个简单的接口,如果一个类实现了它,意味着这个类是可配置的。即可通过 为这个类的对象传入一个Configuration实例,来提供对象工作需要的一些配置信息。

  

转载于:https://www.cnblogs.com/edward-tj/p/3799263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值