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>();
という感じで定義されていますね.