• 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实例,来提供对象工作需要的一些配置信息。

      

  • 相关阅读:
    设计模式之代理模式
    Java面试总结系列之Collections.sort()
    Scala基础
    Win7 电脑设置临时网络,无法加入网络;internet禁止网络共享
    Java面试题系列 提高Java I/O 性能
    电子商务中:B2C、B2B、C2B、C2C、O2O、P2P
    JVM内存格局总结
    Dubbo相关博文整理
    Java面试题汇总(一)
    Java多线程总结
  • 原文地址:https://www.cnblogs.com/edward-tj/p/3799263.html
Copyright © 2020-2023  润新知