MapReduce介绍

MapReduce是有google在一篇论文当中提出的的一个分布式计算模型,主要用于解决海量数据当中的计算问题。因为谷歌搜索当中存在海量的文本数据需要识别处理,因此自发明了MapReduce用于内部的文档索引处理系统。

MapReduce是如何进行大数据处理的?那是由于它的“分而治之”的设计思想,能够把复杂任务分解成小任务进行计算,通过实现map()和reduce()两个函数实现分布式计算。


Mapper函数

mapper函数负责“分”,即是把一个总的任务拆分成N个“简单的小任务“来处理,这里简单的小任务指定是:

1、相对总任务计算规模相对变小、或者计算的数据量变小。

2、小任务分配到所需的数据节点上进行计算,小任务计算尽量在本机上计算。

3、这些小任务可以并行计算,互不相干扰和前后的依赖关系。


Reduce函数

reduce函数主要的工作是对mapper函数小任务的计算结果进行汇总。至于如何汇总,可以根据业务需要进行组装后输出汇总数据。

比如举一个最简单的例子,谷歌服务器集群节点当中存在着全网所有网站的URL地址,我们要统计现在全网有多少个网站:

那么我就可以按服务器节点,分解成N个小任务,每个任务计算本机器节点上的URL地址数量。这就是“Map”。节点越多,我们统计URL速度就越快。

当所有节点统计完后,把所有节点的统计数据加在一起,这就是“Reduce”。

没错,MapReduce的核心设计思想就是这么简单,“分而治之”。