Hadoop0.21.0源码流程分析(2)-主节点接收作业

      JobTracker 负责调度 job 的每一个子任务 task 运行于 slave 上,并监控它们,如果发现有失败的 task 就重新运行它 JobTracker 一直在等待 JobClient 通过 RPC 提交作业 , TaskTracker 一直通过 RPC JobTracker 发送心跳 heartbeat 询问有没有任务可做,如果有,让其派发任务给它执行。如果 JobTracker 的作业队列不为空 , TaskTracker 发送的心跳将会获得 JobTracker 给它派发的任务。这是一道 pull 过程 : slave 主动向 master 拉生意。 slave 节点的 TaskTracker 接到任务后在其本地发起 Task ,然后执行任务。

 

  •    主节点 接收作业流程

第一步:当 JobClient JobTracker 通信时利用 RPC 调用 JobTracker submitJob() 方法时,首先会生成一个 JobInProgress 类的实例,该实例是为了记录当前这个 Job 任务的执行状况。在构造的同时会调用到 FileSystem ,把在 JobClient 端上传的所有任务文件下载到 本地的文件系统中的临时目录里 。这其中包括上传的 *.jar 文件包、记录配置信息的 xml 、记录分割信息的文件。

第二步:生成的 JobInProgress 实例会加载到作业队列管理器 QueueManager 中,通过 QueueManager 来调度。然后在流程中执行到 jobtracker.initJob() ,再执行 jobinProgress.initTask()

       第三步: initTask 函数流程中,首先 JobInProgress 会创建 map 的监控对象 , 先针对输入数据的每个 split 创建对应的 Map 执行管理对象 TaskInProgress 。其次 JobInProgress 会创建 Reduce 的监控对象,根据 JobConf 里指定的 Reduce 数目创建,缺省只创建 1 Reduce 任务。监控和调度 Reduce 任务的也是 TaskInProgress 类,不过构造方法有所不同。 根据初始化的信息生成每一个 map reduce ,每个 map reduce 都是 TaskInProgress TaskInProgress 会根据不同参数分别创建具体的 MapTask 或者 ReduceTask 。生成的 map reduce 监控类会被维护在 JobInProgress 实例中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值