文档章节

Hadoop学习笔记3:org.apache.hadoop.conf

强子大叔的码田
 强子大叔的码田
发布于 2014/04/30 01:33
字数 1174
阅读 1.3K
收藏 27

主要讲解org.apache.hadoop.conf包里的3个类的作用。

看完这个,你绝对可以对配置项这一块非常清楚了。

类的个数: 3个

1 包: 【org.apache.hadoop.conf】
描述:本包与【配置参数配置】相关,包含3个类(接口),
Configurable,
Configuration,
Configured.
1.1)	Configurable 【接口】
public interface Configurable 
{
函数成员:

	void  setConf ( Configuration conf) ;
//接口函数,设置Configuration对象

Configuration   getConf() ;
 //接口函数,获取Configuration 对象。

}



1.2)Configuration 【类】
public class Configuration
{
	变量成员:
    private static final Logger LOG =
LogFormatter.getLogger("org.apache.hadoop.conf.Configuration");

private ArrayList defaultResources = new ArrayList();
    private ArrayList finalResources = new ArrayList();

    private Properties properties;
    private ClassLoader classLoader = 
    Thread.currentThread().getContextClassLoader();





函数成员:

public Configuration()
{
1-	在本地的defaultResources列表中添加"hadoop-default.xml"
2-	在本地的finalResources列表中添加"hadoop-site.xml"
}

public Configuration(Configuration other)
{
1-	本地的defaultResources无条件设置为other相应的defaultResources的复制版本。
2-	本地的finalResources无条件设置为other相应的defaultResources的复制版本。
3-	只有当other的properties有效时,才把本地的properties设置为other的properties 的复制版本。
}

public void addDefaultResource(String name)
{
1-	defaultResources列表中添加name
2-	设置本地properties为null
}

public void addDefaultResource(File file)
{
1-	defaultResources里添加file
2-	设置本地properties为NULL
}

public void addFinalResource(String name)
{
1-	finalResources里添加name
2-	设置本地properties为NULL
}

public void addFinalResource(File file)
{
1-		finalResources里添加file
2-	设置本地properties为NULL
}

private synchronized void addResource(ArrayList resources, Object resource)
{
1-	往resources列表里添加resource
2-	设置本地properties为NULL
}

public Object getObject(String name)
{
 	直接从本地properties中查询name对应的对象Object.
通过方法get(name)
}

public void setObject(String name, Object value)
{
	直接put(name,value)放入properties中。
}

public Object get(String name, Object defaultValue)
{
	如果properties中存在name对应的object(通过getObject函数),则返回查询结果
否则返回参数defaultValue.
}

public String get(String name)
{
	直接从properties中查询getProperty(name)
}

public void set(String name, Object value)
{
	直接对properties设置setProperty(name,value.toString());
}

public String get(String name, String defaultValue)
{
	如果从properties中查询getProperty(name不为空,则返回结果
否则返回defaultValue.
}

public int getInt(String name, int defaultValue)
{
尝试查询name对应的整数,失败则返回defaultValue.

}

public void setInt(String name, int value)
{
	在本地properties中加入(name,value).
}

public long getLong(String name, long defaultValue)
{
	尝试获取name对应的long,失败则返回defaultValue.
}

public void setLong(String name, long value)
{
	 设置(name,value).
}

public float getFloat(String name, float defaultValue)
{
	尝试获取name对应的float,失败则返回defaultValue.
}

public boolean getBoolean(String name, boolean defaultValue)
{
	尝试获取name对应的boolean,失败则返回defaultValue.
}

public void setBoolean(String name, boolean value)
{
	往properties中添加(name,value);
}

public String[] getStrings(String name)
{
	尝试将name通过", \t\n\r\f"来分割,结果作为数组返回。
}

public Class getClass(String name, Class defaultValue) 
{
	
尝试找到name对应的class,不存在的话则返回defaultValue.
}

public Class getClass(String propertyName, Class defaultValue,Class xface)
{
	尝试找到propertyName对应的class,没有则赋值为defaultValue.
总之,这两者任意一个结果必须满足可以转化为xface类型。

}

public URL getResource(String name)
{
	通过本地的classLoader找到name对应的URL
}

public void setClass(String propertyName, Class theClass, Class xface)
{
	在保证theClass可以转化为xface的前提下
设置(propertyName,theClass).
}

private synchronized Properties getProps()
{
1-	如果本地properties未初始化,则基于defaultResources&finalResources来初始化properties.
2-	保证properties初始化后,返回properties.
}

private void loadResources(Properties props,
                             ArrayList resources,
                             boolean reverse, boolean quiet)
{
	基于resources里的各个item,来赋值props.
}

private void loadResource(Properties properties, Object name, boolean quiet)
{
	基于单个name指定的文件,来赋值props.
}

public InputStream getConfResourceAsInputStream(String name)
{
	尝试做这样的事情
1-	name找到对应的URL
2-	URL.openStream().
}

public Reader getConfResourceAsReader(String name)
{
	尝试做这样的事情
1-	name找到对应的URL
2-	new InputStreamReader(url.openStream()).
3-	当然失败了,则返回NULL

}

private void toString(ArrayList resources, StringBuffer sb)
{
	遍历resources,将内容添加到sb中去
1-	文件,直接添加文件内容
2-	字符串,那就直接添加字符串吧。
}

public String toString()
{
	格式如下:
Configuration:
+defaults: 
+ defaultResources对应的字符串
+final: 
+finalResources对应的字符串

}

public void write(OutputStream out) throws IOException
{
	遍历本地的properties 中的key,value.
过滤掉value不为 string类型的配置项。
合法的配置项通过out写。
}

public File getFile(String dirsProp, String path) throws IOException {
1-	把dirsProp 分割成若干数组
2-	从数组中通过某个算法从某个下标(不一定是0,并且会保证遍历数组一遍)开始遍历数组每一项。
3-	当这个数组对应的文件夹存在或者可以被创建时,返回(选中的数组项,path)构成的file.
}
}


1.3)Configured【类】
Public class Configured implements Configurable
{
	private Configuration conf;

函数成员如下:
public void setConf(Configuration conf)
{
	设置本地conf为参数conf指向的对象的引用
}

public Configuration getConf()
{
	返回本地的 conf
}

public Configured(Configuration conf)
{
	设置本地conf为参数conf指向的对象的引用
}
}


© 著作权归作者所有

强子大叔的码田

强子大叔的码田

粉丝 922
博文 1505
码字总数 1256463
作品 9
南京
架构师
私信 提问
org.apache.hadoop.conf

org.apache.hadoop.conf Configuration of system parameters. 主要作用为配置系统参数 Interface Summary Configurable Something that may be configured with a Configuration. Class Su......

cloudyak
2013/02/14
2.2K
0
解决hadoop jobconf限制为5M的问题

把数据放入数据conf: 在mapper,reduce,或者mongoSpiltter里拿出conf里的数据: 由于conf只能放入boolean、int、string的值,而我需要给hadoop Configuration放入的是list或者其他对象,所以...

zachary124
2013/11/06
1.9K
10
用java从hadoop中读数据

如果用eclipse 连接hadoop测试 一定要把core-site.xml hdfs-site.xml 放到和包test同目录下 不然会报错程序会报File not found错误,并且加载相对应版本的的hadoop-core-xx.jar包 package te...

有些服务器
2015/09/21
137
0
【转】Hadoop是什么

文章转自:http://www.cnblogs.com/leeqianjun/articles/1269408.html 1.1Hadoop是什么 Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分...

张玉涛
2012/04/25
0
0
好程序员大数据笔记之:Hadoop集群搭建

在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天集中总结以下笔记,希望对各位同学...

好程序员IT
2019/05/21
17
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring AOP-06-切入点类型

切入点是匹配连接点的拦截规则。之前使用的是注解@Pointcut,该注解是AspectJ中的。除了这个注解之外,Spring也提供了其他一些切入点类型: • 静态方法切入点StaticMethodMatcherPointcut •...

moon888
昨天
90
0
Class Loaders in Java

1. Introduction to Class Loaders Class loaders are responsible for loading Java classes during runtime dynamically to the JVM (Java Virtual Machine). Also, they are part of the ......

Ciet
昨天
68
0
以Lazada为例,看电商系统架构演进

什么是Lazada? Lazada 2012年成立于新加坡,是东南亚第一电商,2016年阿里投资10亿美金,2017年完成对lazada的收购。 业务模式上Lazada更偏重自营,类似于亚马逊,自建仓储和为商家提供服务...

春哥大魔王的博客
昨天
60
0
【自用】 Flutter Timer 简单用法

dart: void _startTime() async { _timer = Timer(Duration(seconds: sec), () { fun(xxx,yyy,zzz); }); } @override void dispose() { _timer.cancel()......

Tensor丨思悟
昨天
65
0
计算机实现原理专题--自动化(六)

目前实现的加减法器可以扩充到更高位宽的数值范围,不仅可以实现连续n个数的相加减,还可以实现其中几个数的相加减,并保存相应的结果。但是还不能应对某些场景,例如需要复用中间的临时结果...

FAT_mt
昨天
58
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部