Hadoop學習筆記3:org.apache.hadoop.conf

主要講解org.apache.hadoop.conf包裏的3個類的做用。 java

看完這個,你絕對能夠對配置項這一塊很是清楚了。 算法

類的個數: 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指向的對象的引用
}
}
相關文章
相關標籤/搜索