MapReducer的执行流程

本文解析了MapReduce工作流程,包括mapper处理逻辑切片、环形缓冲区溢写、mapshuffle阶段合并排序分区、reducer获取map输出并进行处理等过程。介绍了splits、maptask、reducetask的概念及它们之间的关系。
摘要由CSDN通过智能技术生成

MapReducer工作流程图:

在这里插入图片描述

MapReducer工作流程:

------------------------------------------------mapper的工作--------------------------------------------
1.mapper开始运行,调用InputFormat组件读取文件逻辑切片(逻辑切片不是block块,切片大小默认和block块大小相同 可以是block大小的110%)
2.经过inputformat组件处理后,文件以<k,v>的形式进入我们自定义的mapper逻辑,经过map逻辑处理
----------------------------------------------mapper shuffle------start---------------------------------
3.mapper逻辑中输出结果会调用OutPutCollector组件写入环形缓冲区。
4.环形缓冲区的存储达到默认阀值会调用Spliller组件将内容分区且排序(快排算法,外部排序算法)后溢写到磁盘文件中,mapper最后结果不满环形缓冲区也会溢写到磁盘。
5.mapper结束后磁盘中的结果小文件会合并(merge),产生大文件(分区且排序,归并算法)。
------------------------------------------------mapper shuffle—end---------------------------------

------------------------------------------------reducer shuffle—start--------------------------------
6.reducer shuffle启动后会到不同的map结果文件中拉取相同区号的结果文件,再合并这些来自不同map的结果文件,再将这些文件合并(归并算法),产生的大文件是分区且排序且分好组了的,分组调用默认的GroupingComparator组件。
7.reducer把拉取的所有map输出文件合并完成之后就会开始读取文件,将读入的内容以<k,v>的形式输入到我们用户自定义的reducer处理逻辑中。
------------------------------------------------reducer shuffle—end--------------------------------

------------------------------------------------reducer --阶段开始------------------------------------
8.自定义的reducer进行处理。
9.用户逻辑完成之后以<k,v>的形式调用OutPutFormat组件输出到hdfs文件系统中去保存。

总结 :

map shuffle 环形缓冲区(默认大小100M 阈值是80%) 合并 排序 分区 对map处理之后的数据再处理combiner中。
combiner : 在map端计算之后,子节点上还可以进行计算,这个计算叫combiner 。
Reducer shffule 在缓冲中合并排序 缓冲没有固定值 处理完成会提供给reducer。

splits : map端的输入单位,对应文件的block,如果最后一个block的大小小于blockSize的10%,把最后一个block合并到上一个,形成一个split。
map task : map端的计算是并行的,每一个并行任务交一个maptask。maptask的数量由split的数量决定。所以map的输出对应Task的数量。
reduce task : reduce端的task是以partition(分区)的个数决定。
【只有在指定分区个数 > 1的情况下会触发分区】,如果默认或分区个数是1,reduceTask的个数是1;如果分区大于1,也就是reduceTask的数量大于1,输出的文件个数会大于1。reduceTask的个数如果大于1,则一般应和patition的个数相同,reduce端的输出文件个数也和patition的个数相同。
mapreduce : 默认提供了一个分区类,HashPartitioner。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值