• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

MapReduce的完整逻辑

开发技术 开发技术 6天前 5次浏览

MapReduce的完整逻辑

1、读取文件,将文件解析成一个<k1,v1>对

这里面的k1主要指的是行数,v1指的是该该行数据

![解析文](E:大数据学习开课吧学习第六章 hadoopMapReduce学习MapReduce完整理解1解析文件.png)

2、通过mapTask任务将<k1,v1>转化为我们需要的<key,value>对

主要是对v1进行拆分

![转化为新kv](E:大数据学习开课吧学习第六章 hadoopMapReduce学习MapReduce完整理解2转化为新kv对.png)

3、分区和分组,将<key,value>对进行哈希编码,主要对key进行hashcode计算

1、然后按照自定义的算法给每个<key,value>对一个partition index,方便分区

4、排序

1、按照分区规则进行分区,主要对key的hashcode进行比较
2、分完了区之后,再对区内的key进行排序(这个是字典排序

5、combiner。对数据进行map阶段的合并

对之前分好区,拍好序的数据进行合并

6、将分区后的小文件写入磁盘中

这个过程内存会给mr一个100M的环形缓冲区域,一旦达到80%的占有率就让它溢写到本地磁盘小文件中

7、使用归并排序,对本地磁盘溢写小文件进行归并排序

8、等待reduceTask启动线程来进行拉取数据

9、reduceTask启动线程,从各map task拉取属于自己分区的数据

10、从mapTask拉取回来的数据继续进行归并排序

11、进行groupingComparator分组操作

12、调用reduce的逻辑,写出数据

13、通过outputFormat进行数据输出,写到文件,一个reduceTask对应一个结果文件


程序员灯塔
转载请注明原文链接:MapReduce的完整逻辑
喜欢 (0)