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 实例中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值