JobTracker的概述

JobTracker涉及的功能包括作业管理、状态监控、任务调度器等,
JobTracker主要包含的2个功能:资源管理和作业控制。
每一个应用程序表示一个作业,每个作业又被进一步分成多个任务,而JobTracker的作业控制模块则负责作业的分解和状态监控。
1、JobTracker的概述:
1、1作业控制:
JobTracker在其内部以“三层多叉树”的方式描述和跟踪每个作业的运行状态,作业被抽象成三层,从上往下依次为:作业监控层、任务监控层,任务执行层。在作业监控层中,每个作业由一个JobInProgress(JIP)对象描述和跟踪其整体运行状态以及每个任务的运行情况;在任务执行层中,每个任务由一个TaskInProgress(TIP)对象描述和跟踪其运行状态;在任务执行层中,考虑到任务在执行过程中可能会失败,因而每个任务可能尝试执行多次,直到成功。JobTracker将每次尝试运行一次任务称为”任务运行尝试”,而对应的任务运行实例称为Task Attempt(TA)。当任何一个Task Attempt成功运行后,其上层对应的TaskInProgress会标注该任务运行成功;而当所有的TaskInProgress运行成功后,JobInProgress则会标注整个作业运行成功。
JobTracker将相关信息封装成各种对象,以key/value的形式保存到数据结构Map中,比如,为了能够根据作业ID找到对应的JobInProgress对象,JobTracker将所有运行作业按照JobID余JobInProgress的对应关系保存到Map数据结构Jobs中;为了能够查找每个TaskTracker上当前正在运行的Task,JobTracker将trackerID与TaskID集合的映射关系保存到Map数据结构trackerToTaskMap中。JobTracker的各种操作,比如监控、更新等,时间上就是修改这些数据结构中的映射关系。
1、2作业管理:
除了状态监控外,JobTracker的另一个重要功能就是资源管理。JobTracker不断接收各个TaskTracker周期性发过来的资源量和任务状态等信息,并综合考虑TaskTracker(所在的DataNode)的数据分布、资源剩余量、作业优先级、作业提交时间等因素,为TaskTracker分配最合适的任务。

你可能感兴趣的:(hadoop)