MapReduce流程简单解析

时间:2022-06-20 10:29:22

 1、MapReduce简介

源自于google的MapReduce论文,发表于2004年12月,HadoopMapReduce是google MapReduce 克隆版。MapReduce是一种计算模型,用以进行大数据量的计算。其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。


MapReduce流程简单解析

MapReduce工作流程图

2、MapReduce主要步骤叙述

Map阶段:

Step 1:读取输入文件的内容,并解析成键值对(<key, value>)的形式,输入文件中的每一行被解析成一个<key, value>对,每个<key, value>对调用一次map()函数。

Step 2:用户写map()函数,对输入的<key,value>对进行处理,并输出新的<key,value>对。

Step 3:对Step 2中得到的<key,value>进行分区操作。

Step 4:不同分区的数据,按照key值进行排序和分组,具有相同key值的value则放到同一个集合中。

Step 5(可选):分组后的数据进行规约。

Reduce阶段:

Step 1:对于多个map任务的输出,按照不同的分区,通过网络传输到不同的Reduce节点。

Step 2:对多个map任务的输出结果进行合并、排序,用户书写reduce函数,对输入的key、value进行处理,得到新的key、value输出结果。

Step 3:将reduce的输出结果保存在文件中。


3、MapReduce的输入输出

   从第2点MapReduce的处理流程步骤可以看出,MapReduce框架运转在<key,value>键值对上。也就是说作业的输入输出都是<keey,value>键值对,中间的各种处理也都是对键值对进行处理。

一个MapReduce作业的输入和输出类型如下图所示:可以看出在整个流程中,会有三种不同的<key,value>键值对类型的存在。

MapReduce流程简单解析

4、MapReduce的具体处理流程

以最经典的WordCount单词计数为例来介绍Map/Reduce阶段具体的处理步骤。

WordCount:统计所有文件中每个单词出现的次数,效果如下图

MapReduce流程简单解析


(1)    Map任务处理:本次处理中有两个Map任务,以其中一个为例

MapReduce流程简单解析

(2)   Reduce任务处理

MapReduce流程简单解析