Hadoop配置信息处理(源码解析)

本文详细介绍了Hadoop配置文件的格式,包括Windows配置文件和Java配置文件的特性。重点讲解了Hadoop自有的Configuration类,它使用XML格式管理配置信息,支持属性扩展和资源加载。Configuration类的成员变量、资源加载机制以及get*和set*方法的使用被详细阐述,同时指出Configurable接口如何使其他类能获取配置信息。
摘要由CSDN通过智能技术生成

一、配置文件简介

    配置文件是一个系统灵活不可缺少的一部分

1.1windows配置文件

  1. 1
    windows系统广泛使用一种特殊化ASCII文件(以“ini”为文件扩展命)作为它的主要配置文件标准。以下为INI文件片段。
    在这里插入图片描述
    应用程序可以拥有自己的配置文件,来存储应用的设置信息。INI文件将配置信息分为一部分一部分“节”,上图[info]就是节标题。

每一节就是对各个项进行赋值。

ro

1. 2 Java配置文件

JDK提供了java.util.Properties类,他继承于Hashtable,由于它继承Hashtable它只支持键-值类型,并没有INI文件的“节”标题。

java.util.Properties用于处理属性列表主要方法如下

//在属性列表中搜索属性并提供默认值
public String getProperty(String key,String defautValue)
//用于更新属性列表更新属性值
public synchronized object setProperty(String key,String value )

Properties中的属性通过load()方法加载,从输入流中读取键-值对,store()方法将Properties表中的属性列表写入输出流。
Propertice也可用XML格式保存

二、Hadoop Configuration详解

他并没有使用java.util.Properties管理配置文件,也没有使用Apach Jakarta Commons Configuration管理配置文件,而是使用自己独有的org.apache.hadoop.conf.Configuration处理配置信息。

2. 1Hadoop配置文件格式

采用XML格式,以下为例子

<property>
    <name>fs.defaultFS</name>
<value>hdfs://hadp01:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
<value>/home/root/apps/hadoop-2.9.2/tmp</value>
</property>

hadoop配置文件根元素configuration,一般只包含子元素property,每个property就是一个配置项。每个配置项一般包含name ,value,以及对他的描述describe,final表示固定不变

合并多个配置文件
Configuration conf= new Configuration() ; conf.addResource("core -default.xml" ) ; conf.addResouce("core-site.xml");

属性扩展
如配置项dfs.name.dir值是${hadoop.tmp.dir}/dfs/name
如hadoop.tmp.dir的值是/data
那么扩展后原配置项的值就为/data/dfs/name

使用Configuration类的一般步骤
1.构造Configuration对象,并通过addResouce()方法加载需要的资源,
2.用get和set方法访问配置项,资源会第一次使用的时候自动加载到配置项。

2.2Configuration的成员变量

org.apache.hadoop.conf.configuration类图如下
在这里插入图片描述
如图可以看出Configuration有七个非静态成员变量
1.布尔变量quietmode,设置加载配置的模式,如为ture则不输出日志信息。
2.数组resource:保存了所有通过addResource()方法添加到 Configuration对象的资源
Configurationg.addResouce()有四种形式
在这里插入图片描述

  • 一个输入流
  • Hadoop文件路径org.apache,hadoop.fs.Path形式的资源
  • URI
  • core-default.xml形式

3.布尔变量loadDefaults:是否加载默认资源,这些默认资源加载在defaultResource中,defaultResouce是个静态成员变量,通过方法addDefaultrResource()可以添加。在hdfs中hdfs-default.xml和hdfs-site.xml作为默认资源

456.properties,overlay,finalParameters都是和配置项相关的成员变量
hadoop解析后的键-值对都存放在properties,finalParameters存放已经被声明为final的键-值对,overlay记录通过方法设置的键-值对,他是应用设置的,而不是资源解析到的。

7.classLoader:他是一个累加器变量,可加载指定类或相关资源,上面提到的addResource()可以通过字符串的方式加载CLASSPATH资源,他其实是通过Configuration中的getResource()将字符串转换为URL资源

public URL getResouce(String name){
   
return classLoder.getResource(name)
}

2.3资源加载

资源通过对象的addResource()或者类的静态addDefaultResource()方法添加到Configuration对象中。添加的对象并不会立即加载,而通过reloadConfiguration()清空properties和finalParameters。
addResource()清空如下

public void addResouce(String name){
   
	addResourceObject(name);
}
private synchronized void addResourceObject(Object resouce){
   
	resources.add(resource);
	reloadConfiguration();
}
public synchronized reloadConfiguration
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值