mapReduce模型

223 阅读1分钟

MapReduce是面向大数据并行处理的计算模型、框架和平台。

MapReduce是一个基于集群的计算平台,是一个简化分布式编程的计算框架,是一个将分布式计算抽象为MapReduce两个阶段的编程模型

MapReduce计算模型:【Map、shuffle、Reduce】

Map是映射,负责数据的过滤分发,将原始数据转化为键值对
Reduce是合并,将具有相同key值的value进行处理后再输出新的键值对作为最终结果。为了让Reduce可以并行处理Map的结果,必须对Map的输出进行一定的排序与分割,然后再交给对应的Reduce,而这个将Map输出进行进一步整理并交给Reduce的过程就是Shuffle。整个MR的大致过程如下:

0db1d768f8c9d47e071674af4fa511e5_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ==,size_16,color_FFFFFF,t_70.png

dd5450c4d5eb90d1843f368dbcd82b3f_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ==,size_16,color_FFFFFF,t_70.jpg

Shuffle过程包含在MapReduce两端,即Map shuffleReduce shuffle

Map端的shuffle过程是对Map的结果进行分区、排序、分割,然后将属于同一划分(分区)的输出合并在一起并写在磁盘上,最终得到一个分区有序的文件,分区有序的含义是map输出的键值对按分区进行排列,具有相同partition值的键值对存储在一起,每个分区里面的键值对又按key值进行升序排列(默认)

Reduce端的shuffle主要分为复制Map输出、排序合并两个阶段。