hadoop配置文件的加载机制

hadoop通过Configuration类来保存配置信息

1、通过Configuration.addResource()来加载配置文件

2、通过Configuration.get***()来获取配置属性

1、创建一个新的Configuration实例时,会加载core-default.xml与core-site.xml,若还有其它配置,则调用addResource()继续添加。

package org.jediael.hadoopdemo;

import org.apache.hadoop.conf.Configuration;

public class ConfigurationDemo {

public static void main(String[] args){

Configuration conf = new Configuration();

//conf.addResource("/opt/jediael/hadoop-1.2.1/conf/core-site.xml");

Configuration.addDefaultResource("mapred-default.xml");

//System.out.println(conf.get("fs.default.name"));

System.out.println(conf.get("hadoop.tmp.dir"));

System.out.println(conf.get("io.sort.mb"));

}

}

输出结果为:

www:Downloads liaoliuqing$ hadoop jar hdemo.jar org.jediael.hadoopdemo.ConfigurationDemo

hdfs://localhost:9000

/opt/tmp

null

2、可以通过Configuration.addDefaultResource()加载CLASSPATH下的内容,主要用于加载hdfs-default.xml  hdfs-site.xml  mapred-default.xm  mapred-site.xml

package org.jediael.hadoopdemo;

import org.apache.hadoop.conf.Configuration;

public class ConfigurationDemo {

public static void main(String[] args){

Configuration conf = new Configuration();

//conf.addResource("/opt/jediael/hadoop-1.2.1/conf/core-site.xml");

Configuration.addDefaultResource("mapred-default.xml");

System.out.println(conf.get("fs.default.name"));

System.out.println(conf.get("hadoop.tmp.dir"));

System.out.println(conf.get("io.sort.mb"));

}

}

输出结果为:

www:Downloads liaoliuqing$ hadoop jar hdemo.jar org.jediael.hadoopdemo.ConfigurationDemo

hdfs://localhost:9000

/opt/tmp

100

若color.xml位于$HADOOP_HOME/conf

package org.jediael.hadoopdemo;

import org.apache.hadoop.conf.Configuration;

public class ConfigurationDemo {

public static void main(String[] args){

Configuration conf = new Configuration();

//conf.addResource("/opt/jediael/hadoop-1.2.1/conf/color.xml");

Configuration.addDefaultResource("color.xml");

Configuration.addDefaultResource("mapred-default.xml");

System.out.println(conf.get("fs.default.name"));

System.out.println(conf.get("hadoop.tmp.dir"));

System.out.println(conf.get("io.sort.mb"));

System.out.println(conf.get("color"));

}

}

输出结果为:

www:Downloads liaoliuqing$ hadoop jar hdemo.jar org.jediael.hadoopdemo.ConfigurationDemo

hdfs://localhost:9000

/opt/tmp

100

yellow

若color.xml不位于$HADOOP_HOME/conf,则color的输出值为null。

3、conf.addResource()与Configuration.addDefaultResource()的区别

时间: 2024-11-05 16:29:50

hadoop配置文件的加载机制的相关文章

MyBatis --- 映射关系【一对一、一对多、多对多】,懒加载机制

映射(多.一)对一的关联关系 1)若只想得到关联对象的id属性,不用关联数据表 2)若希望得到关联对象的其他属性,要关联其数据表 举例: 员工与部门的映射关系为:多对一 1.创建表 员工表 确定其外键是部门表的 id DROP TABLE IF EXISTS emp; CREATE TABLE emp( id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, emp_name VARCHAR(255) DEFAULT NULL, gender CHAR(1

Mybatis懒加载机制

懒加载会按需要是否执行关联查询语句.如果用到了关联查询语句的信息,就需要执行关联查询,否则就只执行主查询 1.在mybatis的全局配置文件中加入两个属性: <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 开启懒加载机制 ,默认值为true--> <setting name="lazyLoadingEnabled&quo

Dubbo 扩展点加载机制:从 Java SPI 到 Dubbo SPI

SPI 全称为 Service Provider Interface,是一种服务发现机制.当程序运行调用接口时,会根据配置文件或默认规则信息加载对应的实现类.所以在程序中并没有直接指定使用接口的哪个实现,而是在外部进行装配. 要想了解 Dubbo 的设计与实现,其中 Dubbo SPI 加载机制是必须了解的,在 Dubbo 中有大量功能的实现都是基于 Dubbo SPI 实现解耦,同时也使得 Dubbo 获得如此好的可扩展性. Java SPI 通过完成一个 Java SPI 的操作来了解它的机

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

Yii2的深入学习--自动加载机制

Yii2 的自动加载分两部分,一部分是 Composer 的自动加载机制,另一部分是 Yii2 框架自身的自动加载机制. Composer自动加载 对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件.你可以简单的引入这个文件,你会得到一个自动加载的支持. 在之前的文章,入口文件的介绍中,我们可以看到如下内容: // 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类 require(__DIR__ .

Python模块动态加载机制

本文和大家分享的主要是python中模块动态加载机制相关内容,一起来看看吧,希望对大家学习python有所帮助. import 指令 来看看 import sys 所产生的指令: co_consts : (0, None) co_names : ('sys',) 0 LOAD_CONST               0 (0) 2 LOAD_CONST               1 (None) 4 IMPORT_NAME              0 (sys) 6 STORE_NAME  

20150112--抽象类+接口+重载+自动加载机制-02

重载 重载:overload,被重新加载.在面向对象里,重载指的当一个函数(方法),具有不同的返回值或者参数列表的时候,可以有不同的存在形式(允许同名函数存在:返回值或者参数列表不一样) class Person{ public string function eat(){//吃饭方法;return '吃饱了';} public string function eat(水果){//吃水果;return '好吃';} public string function eat(主食){//吃主食;ret

java动态加载机制

假设有一个class,ClassLoader首先把它load到内存里的code segment(内存里存放代码段的),站在ClassLoader的角度,内存里的一个一个的class就是一个一个的对象,这个对象就是xx.class,实际就是Class类的对象.Load完class,找到main函数开始执行,然后会把很多其他的类Load进来,动态加载机制. 测试动态加载机制: 新建项目Reflection,new一个class,TestDynamicLoading: public class Tes

深入理解ClassLoader(四)—类的父委托加载机制

上几次我们介绍到了JVM内部的几个类加载器,我们来重新画一下这个图,再来看一下他们之间的关系. JVM的ClassLoader采用的是树形结构,除了BootstrapClassLoader以外?每个ClassLoader都会有一个parentClassLoader,用户自定义的ClassLoader默认的parentClassLoader是SystemClassLoader,当然你可以自己指定需要用哪一个ClassLoader的实例,我们来看他的API 默认的无参构造方法使用的是SystemCl