好记性不如烂笔头---MapReduce1作业运行机制

学习hadoop先从搞懂作业运行机制开始,不看懂运行机制总感觉MapReduce的执行是一件很神秘的事情,现在来解开她的神秘面纱,本想自己看看书就算了,但是记忆力真的是个好东西,然而我却没有。。。只好把看到的内容记下来,也好留下更深的印象。另外,本文内容摘抄自《hadoop权威指南第3版》。

jobtracker接收到对其的submitjob()方法的调用后,会把此调用放入一个内部队列中,交由作业调度器进行调度,并对

其进行初始化。初始化包括创建一个表示正在运行作业的对象,用于封装任务和记录信息,以便跟踪任务的状态和进程。

作业调度器首先从客户端也就是master节点获取已经计算好的输入分片,为每个分片创建一个map任务,reduce任务个数取决于一些设置,任务在此时被指定id。

       除了map任务和reduce任务还会创建两个任务:作业创建和作业清理。在map任务运行之前运行代码来创建作业,并在reduce任务完成之后完成清理工作。作业创建为作业创建输出路径和临时工作空间,作业清理清除作业运行过程中的临时目录。

       tasktracker被分配任务后,就该运行该任务,第一步,从共享文件系统中复制jar文件到tasktracker所在的文件系统,将文件从分布式缓存中复制到本地磁盘,第二步,tasktracker为任务新建一个本地工作目录,并把jar文件解压到该工作目录,,第三步,tasktracker新建一个taskrunner实例运行该任务。

taskrunner启动一个新的JVM来运行每个任务,每个任务都能执行搭建和清理动作,它们和任务在一个jvm中执行,清理动作用于提交任务,在基于文件的作业中意味着它的输出写到该任务的最终位置。在Streaming和pipes中,任务执行过程中,Java进程把输入键值对传给外部进程,外部进程用过用户定义的map和reduce函数来执行并把输出的键值对传回给Java进程。从tasktracker的角度看,就像tasktracker的子进程自己处理map和reduce代码一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值