作业跟踪器(JobTracker)守护进程负责启动和监控MapReduce作业。当一个客户端向Hadoop系统提交一个作业,作业的启动流程如图2-5所示。
该过程的详细步骤如下:
1)作业跟踪器接收到了作业请求。
2)大多数的MapReduce作业都需要一个或多个输入文件目录。任务跟踪器向名称节点发出请求,获得一个数据节点的列表,这个列表上的数据节点中存储了组成输入文件数据的数据块。
3)作业跟踪器为作业的执行做准备工作。在这个步骤中,任务跟踪器确定执行该作业需要的任务(Map任务和Reduce任务)数量。作业跟踪器尽量把这些任务都调度到离数据块最近的位置上运行。
4)作业跟踪器把任务提交到每个任务跟踪器节点去执行。任务跟踪器节点监控任务执行情况。任务跟踪器以预先设定的时间间隔发送心跳信息到作业跟踪器。如果作业跟踪器在预先设定的时间间隔之后,没有收到任务跟踪器发来的心跳信息,那么就认为该任务跟踪器节点出现故障,任务就会被调度到另外一个节点去运行。
5)一旦所有的任务都执行完毕,作业跟踪器就会更新作业状态为成功。如果任务反复失败达到一定的数量(这个数值可以通过Hadoop系统的配置文件来指定),作业跟踪器就会宣布作业运行失败。
6)客户端会轮询作业跟踪器及时地获得作业运行状态。
到目前为止对Hadoop 1.x系统组件的讲解,可以很清楚地知道,作业跟踪器的故障会导致Hadoop系统的单点故障。如果作业跟踪器节点挂掉,集群上所有的任务都将无法正确运行。同样,由于仅有一个作业跟踪器节点运行,在多任务同时运行的系统环境中,会增加该作业跟踪器节点的工作负载。