JobClient
每一个job 都会在客户端通过JobClient类将应用程序以及作业的配置参数打包成jar文件存储在HDFS,并把作业提交给 JobTracker。
JobClient.runJob()创建一个新的 JobClient实例,调用其submitJob()函数。
JobClient将作业提交给JobTracker之前,需要进行一些初始化工作,由JobClient.subnitJobInternal(job)完成,包括:(1)向JobTracker请求一个新的 job ID;(2)检测 job的output 配置;(3)计算 job的input splits;(4)将Job运行所需的资源上传到JobTracker的文件系统(HDFS)中的文件夹中,包括 job jar