Hadoopのソースを読もう

シマッタ!!どうやら,JobClient.java

running = jc.getJob(jobId);


がメインルートみたい.getJobの中では,

public RunningJob getJob(String jobid) throws IOException {

JobStatus status = jobSubmitClient.getJobStatus(jobid);

if (status != null) {

return new NetworkedJob(status);

} else {

return null;

}

}


ってことで,runningはNetworkedJobだったんですね.実際見てみると,これが実際のimplementationだと書いてありました.で,コンストラクタの中では,

public NetworkedJob(JobStatus job) throws IOException {

this.status = job;

this.profile = jobSubmitClient.getJobProfile(job.getJobId());

this.statustime = System.currentTimeMillis();

}



ここで,jobSubmitClientは,インターフェースで,実体はJobTrackerクラスor LocalJobRunnerクラスのようですね.やっとTrackerやらRunnerが出てきましたよ.jobSubmitClientは,JobClient::init()の中で設定されています.createProxy(..)はよくわからないけど,多分JobTrackerあたりを返しそうな予感がします.でだ,せっかくなので,JobTracker::getJobProfile()から見ていきましょう.このgetJobProfile()で結局色々なタスクが始まるみたい...かも...といいなぁ.

public synchronized JobProfile getJobProfile(String jobid) {

JobInProgress job = jobs.get(jobid);

if (job != null) {

return job.getProfile();

} else {

return null;

}

}


今日はここまで,次回は,JobInProgressあたりから,ですね.



P.S.

気になってちょっと調べた.

jobsは,JobTracker.javaで,

Map<String, JobInProgress> jobs = new TreeMap<String, JobInProgress>();



という感じで定義されていますね.