这部分没去追源码,纯看理论了
概述
JobTracker主要负责作业控制和资源管理。
作业控制负责作业 的分解和状态监控,主要作用:容错和为任务调度提供决策依据。
JobTracker再内部以“三层多叉树”的方式描述和跟踪每个作业的运行状态,作业被抽象为三层,从上往下依次:作业监控层-任务监控层-任务执行层。在作业监控层,每个作业由一个JobInProgress(JIP)对象描述和跟踪其整体运行状态以及每个任务的运行情况;任务监控层,每个任务由一个TaskInProgress(TIP)对象描述和跟踪其状态;任务执行层,每个任务可以尝试多次。
JobTracker将每次尝试运行一次任务称为“任务运行尝试”,而对应的任务运行实例称为Task Attempt,当任何一个Task Attempt运行 成功后,其上层对应的TaskInProgress会标注该任务运行成功,当所有TaskInProgress成功后,JobInProgress会标注整个作业运行成功。
资源管理是通过一定的策略将各个节点上的计算资源分配给集群中的任务,由可插拔的任务调度器完成,可自定义。
JobTracker不断接收各个TaskTracker周期性发送过来的资源量和任务状态信息,并综合考虑TaskTracker(所在Datanode)的数据分布、资源剩余量、作业优先级、作业提交时间等因素,为TaskTracker分配最合适的任务。
JobTracker启动过程分析
JobTracker内部原理——JobTracker启动过程
心跳接收与应答
Job和Task运行时信息维护
JobTracker内部原理——Job和Task运行时信息维护
容错机制
任务推测执行机制
Hadoop资源管理
这几个部分都是大头,我分成几篇文章来看好了。
待更,后面再给个超链接