1.执行Shell命令:用户编写的MapReduce程序,通过Shell命令来提交作业。
2.作业文件上传:JobClient将作业提交到JobTracker之前,需要进行一些初始化工作,例如前面所提到的调用getSplits方法将文件切分为split文件、创建HDFS目录之类的。
3.产生InputSplit文件:用户提交MapReduce作业后,JobClient会调用InputFormat的getSplits方法生成InputSplit文件信息。这些信息包含两部分:InputSplit元数据信息和原始InputSplit信息。第一部分被JobStracker使用生成Task本地性数据结构。第二部分将被Map Task初始化时使用获取处理的数据。
4.作业提交到JobTracker:JobClient通过RPC框架将作业提交到JobTracker
为作业创建JobInProgress来监控作业的运行状态和进度
检查用户是否具有指定队列的作业提交权限
检查作业配置的内存使用量是否合理
通知TaskScheduler初始化作业