6.8 小结
本章介绍了Hadoop MapReduce最核心的服务JobTracker的实现。
JobTracker是整个MapReduce计算框架中的主服务,相当于集群的“管理者”,负责整个集群的作业控制和资源管理。本章重点围绕这两个方面讲解JobTracker。
JobTracker启动过程涉及三个方面:重要对象初始化、工作线程初始化和作业恢复。启动之后,将开启RPC server以等待来自各个TaskTracker的心跳请求。
JobTracker的主要功能之一是作业控制,包括作业的分解和状态监控。其中,最重要的是状态监控,包括TaskTracker状态监控、作业状态监控和任务状态监控,其中,作业状态监控采用了“三层多叉树”模型,该模型分为三层,从高到低依次为JobInProgress、TaskInProgress和Task Attempt三种对象集合。状态监控的一个目的是容错,Hadoop设计了各个级别的容错机制,包括JobTracker容错、TaskTracker容错、Job/Task容错、Record容错和磁盘容错等。
JobTracker另外一个功能是资源管理,它由两部分组成:资源表示模型和资源分配模型。Hadoop采用了基于slot的资源表示模型,而资源分配模型实际上是任务调度模型,它由可插拔的任务调度器完成。当前大部分调度器采用了三级调度架构,即当一个TaskTracker出现空闲资源时,调度器会依次选择一个队列、(选中队列中的)作业和(选中作业中的)任务,并最终将这个任务分配给TaskTracker。本章以Hadoop默认的FIFO调度器为例讲解了一个简单调度器的实现原理。