首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

MapReduce调度与实施原理之任务调度

2013-09-16 
MapReduce调度与执行原理之任务调度前言:本文旨在理清在Hadoop中一个MapReduce作业(Job)在提交到框架后的

MapReduce调度与执行原理之任务调度

前言:本文旨在理清在Hadoop中一个MapReduce作业(Job)在提交到框架后的整个生命周期过程,权作总结和日后参考,如有问题,请不吝赐教。本文不涉及Hadoop的架构设计,如有兴趣请参考相关书籍和文献。在梳理过程中,我对一些感兴趣的源码也会逐行研究学习,以期强化基础。
作者:Jaytalent
开始日期:2013年9月9日参考资料:【1】《Hadoop技术内幕--深入解析MapReduce架构设计与实现原理》董西成                  【2】   Hadoop 1.0.0 源码
                            【3】《Hadoop技术内幕--深入解析Hadoop Common和HDFS架构设计与实现原理》蔡斌 陈湘萍上一篇文章谈到作业的初始化,经过初始化的作业就可以被调度器调度并开始执行了。这篇文章关注调度器的工作原理。一个MapReduce作业的生命周期大体分为5个阶段【1】:1. 作业提交与初始化2. 任务调度与监控3. 任务运行环境准备4. 任务执行5. 作业完成我们假设JobTracker已经启动,那么调度器是怎么启动的?JobTracker在启动时有以下代码:
  List<Task> tasks = getSetupAndCleanupTasks(taskTrackerStatus);  if (tasks == null ) {    tasks = taskScheduler.assignTasks(taskTrackers.get(trackerName));  }
如果不需要setup和cleanup,就说明需要选择map或reduce任务。调用TaskScheduler的assignTasks方法完成任务选择。由于篇幅限制,我打算将这部分内容放到下一篇文章中,并关注heartbeat中JobTracker下达的命令过程以及JobInProgress和TaskInProgress对调度有影响的一些字段。请看下一篇文章:MapReduce调度与执行原理之任务调度(续)















热点排行