Hadoop深入学习:Map Task和Reduce Task的执行流程

本节我们主要看一下Map Task和Reduce Task的执行流程:
[img]http://dl2.iteye.com/upload/attachment/0085/0217/81c9eadc-31cd-33e8-b12f-eeb33d2539a5.jpg[/img]

好了,接下来我们再看看Map Task和Reduce Task的一个完整的执行流程:
1)、TaskNode节点启动分配JobTracker个Map Task任务,启用InputFormat对象(具体为RecordReader)读取分配给本节点split分片,将每一行的数据读取成key/value键值对;
2)、mapper程序的map()函数会接收key/value键值对的数据,做逻辑处理,然后将之输出;
3)、(开始MapReduce的shuffle过程,该过程的性能的好坏可以直接决定MapReduce的性能。)mapper程序会将经处理过的key/value数据先加入该Task的环形的内存缓冲区,直到达到缓存达到阀值,然后会将数据spill到linux的本地磁盘上(注意,这些中间数据不会被保存到HDFS),生成一个磁盘文件;
4)、mapper处理玩自己分片的数据后,会将磁盘上的所有spill文件合并;
5)、当一个Map Task任务处理完后,TaskTracker节点会告诉JobTracker节点任务执行完毕并等待新的任务,然后JobTracker会告知reducer程序,区获取属于reducer自己的数据;
[b](注:第3 - 5步是Map断的shuffle阶段。)[/b]
6)、reducer通过多线程(默认为5个copy线程)开始到已执行完成的mapper节点上copy属于自己的partition数据;
7)、reducer会先将copy的数据先放在本机的内存缓存中,合并拷贝数据,当缓存中放不下copy数据时,会将内丛中的的数据刷新到磁盘上,数据copy完成后,会将虽有数据合并成一个大文件,数据格式由原来的<key,value>变成<key,value list>;
8)、将合并后的文件排序;
[b](注:第6 - 8步是Map断的shuffle阶段。)[/b]
9)、接下来reducer开始执行业务逻辑处理的reduce()方法,并将数据最终输出到HDFS上。
10)、所有的Task都执行完成后,整个处理过程完成。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值