[Hadoop] Configuration Class Introduciton

2 篇文章 0 订阅
1 篇文章 0 订阅

提供接口和方法让我们访问hadoop配置参数。

public class Configuration implements Iterable<Map.Entry<String,String>>, Writeable{
  // 创建Configuration对象,并且加载默认资源, core-default.xml和core-site.xml
  public Configuration();
  // 创建Configuration对象,通过loadDefaults控制是否加载默认配置资源
  public Configuration(boolean loadDefaults);
  // 拷贝构造函数,两个Configuration拥有完全相同的配置参数
  public Configuration(Configuration other);
  // 添加默认配置资源,资源必须要在classpath下面
  public static synchronized void addDefaultResource(String name);
  // 添加配置资源,资源必须在classpath下面
  public void addResource(String name);
  // 添加配置资源,会在本地文件系统下查找资源
  public void addResource(URL url);
  // 添加配置资源,会在本地文件系统下查找资源
  public void addResource(Path file)}

Resource

Configuration由各种配置资源指定。资源也就是包含一组name/value对的xml格式的数据。如上Configuration的代码可以看到,可以通过String, Path, URL指定一个资源。如果通过String指定一个资源,那么表示classpath下面的一个文件。如果通过Path/URL指定一个资源,那么表示local filesystem下面的一个文件。

Default Configuration Resource

除非显示的把加载默认配置资源的选项关闭,否则当我们在新建Configuration对象时会加载默认的配置资源。目前,默认配置资源包括core-default.xml和core-site.xml, 我们可以通过Configuration.addDefaultResource添加额外的默认配置资源,或者在Configuration对象创建好之后添加其它的配置资源。需要注意的是默认配置资源必须要在classpath下面。

Resource Load Order

资源加载顺序和资源添加顺序完全相同

Configuration Property/Parameters

通过下面这段代码来定义一个配置参数。

<property>
    <name>dfs.hosts.include</name>
    <value>/etc/hadoop/conf/hosts.include</value>
    <final>true</final>
</property>

如果想要查看某个配置参数的含义和默认值,可以参考hadoop 官方文档所提供的下面几个配置文件。
core-default.xml
hdfs-default.xml
mapred-default.xml
yarn-default.xml
Deprecated Properties

Final Parameters

我们可以在一个配置文件里把一个配置参数定义成final的,防止后续添加的配置文件或者用户应用程序对这个参数进行修改。

<property>
    <name>dfs.hosts.include</name>
    <value>/etc/hadoop/conf/hosts.include</value>
    <final>true</final>
</property>

Variable Expansions

我们在定义一个Property的value的时候,可以利用其它属性的值,下面是一个例子:

<property>
    <name>basedir</name>
    <value>/user/${user.name}</value>
</property>  
<property>
    <name>tempdir</name>
    <value>${basedir}/tmp</value>
</property>

使用其它属性的语法规则是${property_name}
可以使用的属性包括两类:

  1. Configuration里面包括的其它属性${basedir}
  2. System.getProperty()里面包括的系统属性,例如${user.name}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值