Hadoop任务调度机制

Hadoop其实没那么复杂,对每个子功能进行细分,一一解读,就可化整为零。

MapReduce 调度过程 —— 主要角色
  • JobTracker
    Hadoop任务调度的主脑,整个集群中的唯一角色,负责任务的分配。
    侦听TaskTracker传来的心跳消息并从中获取TaskTracker状态,根据状态向TaskTracker发送任务控制指令。
  • TaskTracker
    任务的实际执行者,一般在集群的每台机器上启动一个TaskTracker实例。
    定时向JobTracker发送心跳消息,报告当前节点及其中任务的状态。
    接收JobTracker指令,根据指令要求处理任务。
  • Scheduler
    封装调度算法和策略的逻辑实体,JobTracker做任务调度时调用其中的方法,判定任务执行的先后顺序。
    作为Daemon方式在后台执行,判断是否需要对Task进行杀死等特殊操作。

MapReduce调度过程——任务初始化

 

  • JobClient
    接收客户端作业提交请求
    检查输入输出路径
    计算文件分块
    拷贝作业Job及配置文件到HDFS
  • JobTracker为每个TaskTracker计算任务队列

     

 

 

 

MapReduce

 

  • 每个固定的时间间隔,TaskTracke向JobTracker发送的固定格式状态报告信息。
  • 任务调度时关联JobTracker和TaskTracker的纽带。JobTracker在收到心跳之后触发新的任务分配逻辑。TaskTracker从心跳Response中获取JobTracker的指示并做相应执行。
  • 内容包括:
    TaskTracker Id
    Host IP
    TaskTracker上所有任务状态列表(开始、结束时间,任务状态等)TaskTracker执行的最大Map/Reducer限制
    是否可接收新任务等

 

 

Scheduler基本原理

 

  • 主要算法有
    FIFO
    Capacity Scheduler
    Fair Scheduler
  • TaskScheduler
    JobTracker在构造是根据配置创建配置文件所定义的scheduler。在启动时会调用Scheduler的Start方法 。scheduler启动之后,拥有对各个task的控制能力,可以对task进行杀死等操作。就可用的任务槽位时,在JobTracker会调用scheduler的assignTasks方法决定将调用哪些Task首先执行。

猜你喜欢

转载自litongbupt.iteye.com/blog/1884116