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);
を呼び出します....おや?戻っちまったなぁ.おかしいなぁ?