分享

hadoop Configuration类解析【小知识分享】

lzw 2015-5-17 12:46:35 发表于 小知识点 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 26939



1.configuration类简介
   Hadoop没有使用java.util.Properties管理配置文件,也没有使用Apache Jakarta Commons Configuration管理配置文件,而是使用了一套独有的配置文件管理系统,并提供自己的API,即使用org.apache.hadoop.conf.Configuration处理配置信息。这个类是作业的配置信息类,任何作用的配置信息必须通过Configuration传递,因为通过Configuration可以实现在多个mapper和多个reducer任务之间共享信息。

2.Hadoop配置文件的格式:

[mw_shl_code=xml,true]<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<property>
        <name>dfs.name.dir</name>
        <value>/home/hdfs/name</value>
        <description>.......</description>
        <final>true</final>
</property>
<property>
        <name>dfs.data.dir</name>
        <value>/home/hdfs/data</value>
</property>
</configuration> [/mw_shl_code]


说明:Configuration实现了Iterable和Writable两个接口,其中实现Iterable是为了迭代,迭代出Configuration对象加载到内存中的所有name-value键值对。实现Writable是为了实现hadoop框架要求的序列化,可以将内存中的name-value序列化到硬盘,关于这两个接口的具体实现的话,我想不用再多说了,应该想的明白。

4.Configuration使用
   合并资源指将多个配置文件合并,产生一个配置。如果有两个配置文件,也就是两个资源,如core-default.xml和core-site.xml,通过Configuration类的loadResources()方法,把它们合并成一个配置。代码如下:
[mw_shl_code=xml,true]Configuration conf = new Configuration();  
conf.addResource("core-default.xml");  
conf.addResource("core-site.xml"); [/mw_shl_code]

如果这两个配置资源都包含了相同的配置项,而且前一个资源的配置项没有标记为final,那么,后面的配置将覆盖前面的配置。
   Hadoop配置系统还有一个很重要的功能,就是属性扩展。如配置项dfs.name.dir的值是${hadoop.tmp.dir}/dfs/name,其中,${hadoop.tmp.dir}会使用Configuration中的相应属性值进行扩展。
   使用Configuration类的一般过程是:构造Configuration对象,并通过类的addResource()方法添加需要加载的资源;然后就可以使用get*方法和set*方法访问/设置配置项,资源会在第一次使用的时候自动加载到对象中。

configuration代码
config.zip (11.53 KB, 下载次数: 16)
欢迎加入about云群9037177932227315139327136 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(2)人评论

跳转到指定楼层
lcl 发表于 2016-12-3 09:56:24
您好,请问您研究过LZW压缩算法么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条