博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Hadoop 源码解读(二) - Configuration

Posted on 2013-09-06 23:47  鱼囬  阅读(311)  评论(0)    收藏  举报

hadoop里面没有用到平时我们在Java中比较常用的properties文件来配置相关信息。 而是通过xml实现了一个简单的参数配置框架。 这里面最核心的类应该是org.apache.hadoop.conf.Configuration

一般我们在安装使用hadoop的时候都需要自定义县官配置, 如core-site.xml, mapred-site.xml 等

一般类说,我们的配置想可能有如下的形式,其实本质上和properties文件的键值对差不多,一个parameter name 对应一个 parameter value

<property>
  <name>dfs.datanode.address</name>
  <value>0.0.0.0:50010</value>
  <final>true<final>  <!-- 用于表明相应参数是否允许后续的configuration文件overwrite -->
  <description>
    The datanode server address and port for data transfer.
    If the port is 0 then the server will start on a free port.
  </description>
</property>

我们也可以采用Hadoop的配置框架实现程序中的参数配置,简单的可以如下:

Configuration conf = new Configuration();
conf.addResource("core-default.xml");
conf.addResource("core-site.xml");

然后就可以通过getXXX, setXXX对属性进行操作了, 这里Configuration的addResource重载实现了从不同的位置获取配置文件, 可以参考Configuration源码

hadoop中许多实现了Configurable接口的类都可以接受Configuration对象,在运行时获取相应的配置信息。

最后,更给力的是,configuration中的parameter value还支持变量替换, 变量替换语法类似于以往ant及spring中的常见形式, 类似${ParamName}的形式,hadoop Configuration配置框架可以取得当前JVM的相关参数,如${user.home},其次可以引用已经配置过的参数。但要特别注意不要出现循环引用