1.hadoop学习之org.apache.hadoop.conf
来源:互联网 发布:淘宝steam充值卡知乎 编辑:程序博客网 时间:2024/06/06 15:47
org.apache.hadoop.conf是hadoop common(core)模块的一个包,主要作用是读取配置文件
主要有三个类和接口,分别是
Configurable,
Configuration,
Configured.
一
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指向的对象的引用
}
}
0 0
- 1.hadoop学习之org.apache.hadoop.conf
- org.apache.hadoop.conf
- #org.apache.hadoop.conf.Configuration.addDeprecations
- 2.hadoop学习之org.apache.hadoop.util包
- hadoop源码分析系列之(一)——org.apache.hadoop.conf包
- hadoop源码分析系列之(一)——org.apache.hadoop.conf包
- Hadoop源码详解 org.apache.hadoop.conf (配置类) (二)
- 一脸懵逼加从入门到绝望学习hadoop之 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlE
- java:5: error: package org.apache.hadoop.conf does not
- org.apache.hadoop.conf.Configuration.getFloat(String arg0, float arg1)
- org.apache.hadoop.io
- Hadoop--org.apache.hadoop.fs.FileSystem
- ERROR org.apache.hadoop.conf.Configuration: Failed to set setXIncludeAware(true) for parser
- spark插入数据到hbase: org.apache.hadoop.conf.Configuration not Serializable Exeception
- hive报错 java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf
- sqoop把mysql导入hive时报错:Could not load org.apache.hadoop.hive.conf.HiveConf.
- 安装sqoop-1.99.7报caused by java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
- 【hadoop hive】hive启动报错java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.unset(Ljava/l
- UTF-8详解
- 线程和进程的区别是什么
- 不知道为什么?
- LinuxMint(Ubuntu Ver) 查看进程端口号及运行的程序
- Effective C++ 24,25
- 1.hadoop学习之org.apache.hadoop.conf
- 自己动手制作一台四位计算机
- 矩阵乘法的计算和来源
- CentOS开机启动时间修改及保存
- leetcode - Reverse Linked List II
- Linux 环境zookeeper HA配置注意事项
- UVA 10054.The Necklace(递归求欧拉回路)
- WEB开发三层架构概述
- ubuntu下软件安装卸载与查看