当前位置: 首页 > news >正文

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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

主要讲解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指向的对象的引用
}
}


转载于:https://my.oschina.net/qiangzigege/blog/228694

相关文章:

  • 远程桌面与远程控制
  • [leetcode] Balanced Binary Tree
  • 运维的我要学开发--Python(4)
  • Ubuntu 14.04配置记录
  • 【笔记】设计模式——装饰者模式
  • IsBadStringPtr、IsBadWritePtr
  • OC语言BLOCK和协议
  • js学习记录
  • C++容器操作
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • 引用动态链接库Dll文件 引用失败 未能添加对HD.dll的引用。请确保此文件可访问并且是一个有效的程序集或COM组件...
  • IOS 基于APNS消息推送原理与实现(JAVA后台)--转
  • asp.net解决:当前上下文中不存在名称“Session”
  • thinkphp问题记录phpQuery使用错误
  • CTreeCtrl 父结点联动子结点CheckBox
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 2017前端实习生面试总结
  • JavaScript学习总结——原型
  • Netty 4.1 源代码学习:线程模型
  • Object.assign方法不能实现深复制
  • October CMS - 快速入门 9 Images And Galleries
  • Python3爬取英雄联盟英雄皮肤大图
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Service Worker
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vue的全局变量和全局拦截请求器
  • Web标准制定过程
  • 翻译:Hystrix - How To Use
  • 聊聊directory traversal attack
  • 如何解决微信端直接跳WAP端
  • 如何学习JavaEE,项目又该如何做?
  • 软件开发学习的5大技巧,你知道吗?
  • 使用common-codec进行md5加密
  • 我从编程教室毕业
  • 我的面试准备过程--容器(更新中)
  • 我有几个粽子,和一个故事
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • raise 与 raise ... from 的区别
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • "无招胜有招"nbsp;史上最全的互…
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (待修改)PyG安装步骤
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (四)Linux Shell编程——输入输出重定向
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)Thymeleaf用法——Thymeleaf简介
  • .bat批处理(九):替换带有等号=的字符串的子串