コンフィギュレーションの概要
2191 ワード
以下の解析はHadoop-0.19.2に基づく
私たちはjobを書くときよくこのような文を書きます.
これはHadoopをロードする構成であることが明らかになった.プロセス全体が単純にプロファイルの読み取りにほかならないが、内部がどのように処理されているかを簡単に分析してみましょう.ジョブConfというクラスの継承関係を見てみましょう
一般的に呼び出されるのは、上記のコンストラクタです.親コンストラクタのタイプが指定されていないため、new JobConfの場合、親のデフォルトコンストラクタが呼び出されます.では、コンフィギュレーションというクラスを見てみましょう.
一時停止...続行
私たちはjobを書くときよくこのような文を書きます.
JobConf conf = new JobConf(***.class)
これはHadoopをロードする構成であることが明らかになった.プロセス全体が単純にプロファイルの読み取りにほかならないが、内部がどのように処理されているかを簡単に分析してみましょう.ジョブConfというクラスの継承関係を見てみましょう
public class JobConf extends Configuration {
public JobConf(Class exampleClass) {
setJarByClass(exampleClass);
}
………
}
一般的に呼び出されるのは、上記のコンストラクタです.親コンストラクタのタイプが指定されていないため、new JobConfの場合、親のデフォルトコンストラクタが呼び出されます.では、コンフィギュレーションというクラスを見てみましょう.
public class Configuration implements Iterable<Map.Entry<String,String>>, Writable {
private static final Log LOG = LogFactory.getLog(Configuration.class);
//
private boolean quietmode = true;
//
private ArrayList<Object> resources = new ArrayList<Object>();
//
private Set<String> finalParameters = new HashSet<String>();
//
private Properties properties;
private Properties overlay;
private ClassLoader classLoader;
{
classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader == null) {
classLoader = Configuration.class.getClassLoader();
}
}
/** A new configuration. */
public Configuration() {
this(true);
}
/** A new configuration where the behavior of reading from the default
* resources can be turned off.
*
* If the parameter {@code loadDefaults} is false, the new instance
* will not load resources from the default files.
* @param loadDefaults specifies whether to load from the default files
*/
public Configuration(boolean loadDefaults) {
if (LOG.isDebugEnabled()) {
LOG.debug(StringUtils.stringifyException(new IOException("config()")));
}
if (loadDefaults) {
resources.add("hadoop-default.xml");
resources.add("hadoop-site.xml");
}
}
一時停止...続行