读hadoop0.23源码(1):Job
每次配置job的时候,最后一步总是
?
System.exit(job.waitForCompletion(true) ? 0 : 1);
?进入waitForCompletion方法
?
public boolean waitForCompletion(boolean verbose ) throws IOException, InterruptedException, ClassNotFoundException { if (state == JobState.DEFINE) { submit(); } if (verbose) { jobClient.monitorAndPrintJob(conf, info);//设置参数是否打印执行过程 } else { info.waitForCompletion(); } return isSuccessful(); }?
submit()方法是根据你设置的job属性来执行job,以下是submit()方法:
?
public void submit() throws IOException, InterruptedException, ClassNotFoundException { ensureState(JobState.DEFINE);//确认job开始执行 setUseNewAPI(); // 连接到jobTrack并且提交job connect(); info = jobClient.submitJobInternal(conf); super.setJobID(info.getID()); state = JobState.RUNNING; }?
在connect()方法中实例化了jobClient,然后调用jobClient.submitJobInternal 提交job