由于本系列文章主要是对底层代码实现的描述,目标读者群是已熟悉MapReduce框架程序员。本系列文章将不再详细描述MapReduce基本概念和基本框架,如果对MapReduce基本框架不熟悉请查阅MapReduce官方说明文档。
JobTracker类是任务调度分配实现类,负责向TaskTracker分配执行任务。当JobTracker收到TaskTracker的心跳时维护该TaskTracker的信息,在后续有提交工作任务时向其分发Task执行。每个工作任务对应一个JobInProgress类,每个工作任务包括:多个MapTask和ReduceTask,MapTask的个数视输入文件分割的个数,ReduceTask个数由用户指定、2个SetupTask分别对应Map和Reduce、2个CleanUpTask分别对应Map和Reduce。每个Task对应一个TaskInProgress类,每个TaskInProgress包含多个TaskStatus,因为每个Task由于执行失败而重复执行多次,每次执行对应一个TaskStatus。