Hadoopのソースを読もう

つづきます.

submitter::submitJob(JobConf conf)


へ入ります.この返り値は,RunningJob インターフェースが帰ってくるので,mapreduceがどこまで進んだかをチェックするために利用するわけですね.

// default map output types to BytesWritable

if (!getIsJavaMapper(conf)) {

conf.setMapRunnerClass(PipesMapRunner.class);

// Save the user's partitioner and hook in our's.

setJavaPartitioner(conf, conf.getPartitionerClass());

conf.setPartitionerClass(PipesPartitioner.class);

}

if (!getIsJavaReducer(conf)) {

conf.setReducerClass(PipesReducer.class);

if (!getIsJavaRecordWriter(conf)) {

conf.setOutputFormat(NullOutputFormat.class);

}

}



なんだかよくわからないですが,まぁ,また後で追いかけましょう.多分,confの中にmapクラスやらreduceクラスやらがきちんと定義されているかをチェックしてなければ,デフォルトの設定を行うのでしょう.しかし,リフレクション便利だなー.C++では,中々大変なんですね.でまぁ,その後,何か設定をやっていて.DistributedFileCacheをなんかいじってますね.

で,最終的に

JobClient.runJob(conf);


を呼び出します....おや?戻っちまったなぁ.おかしいなぁ?