Distributed System: Hadoop MapReduce框架的角色和Job提交过程

来源:互联网 发布:刚开淘宝店铺怎么装修 编辑:程序博客网 时间:2024/04/27 16:08

转载自:http://zheming.wang/blog/2015/05/19/3AFF5BE8-593C-4F76-A72A-6A40FB140D4D/


Map/Reduce计算集群由一个单独的JobTracker(master) 和每个集群节点一个 TaskTracker(slave)共同组成。


JobTracker负责调度构成一个作业的所有任务,这些任务会被分派到不同的TaskTracker上去执行,JobTracker会监控它们的执行、重新执行已经失败的任务。(失败重启由JobTracker确保)


而TaskTracker仅负责执行由JobTracker指派的任务。




另外,提一下Job的流程:




JobClient提交作业的过程如下:


(1) map/reduce程序通过runJob()方法新建一个JobClient实例;


(2) 向JobTracker请求一个新jobID,通过JobTracker的getNewJobId()获取;


(3) 检查作业输入输出说明。如果没有指定输出目录或者输出目录已经存在,作业将不会被提交,map/reduce程序; 输入作业划分split,如果划分无法计算(如:输入路径不存在),作业将不会被提交,错误返回给map/reduce程序。


(4) 将运行作业所需要的资源(作业的jar文件、配置文件、计算所得的输入划分)复制到一个以作业ID命名的目录中;


(5) 通过调用JobTracker的submitJob()方法,告诉JobTracker作业准备提交;


(6) JobTracker将提交的作业放到一个内部队列中,交由作业调度器进行调度,并对其进行初始化。


(7) 创建Map任务、Reduce任务:一个split对应一个map,有多少split就有多少map; Reduce任务的数量由JobConf的mapred.reduce.tasks属性决定


(8) TaskTracker执行一个简单的循环,定期发送心跳(heartbeat)给JobTracker



0 0