MapReduce核心思想
分而治之,先分再和
来源
MapReduce最早是由Google公司研究提出的一种面向大规模数据处理的并行计算模型和方法。Google公司设计MapReduce的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理。Google公司发明了MapReduce之后首先用其重新改写了其搜索引擎中的Web文档索引处理系统。但由于MapReduce可以普遍应用于很多大规模数据的计算问题,因此自发明MapReduce以后,Google公司内部进一步将其广泛应用于很多大规模数据处理问题。Google公司内有上万个各种不同的算法问题和程序都使用MapReduce进行处理。
理解
需求:有一个城市,该城市下有很多区,需要获取该城市人数。
(1)只有一个人时。只能一个一个区去统计!工作量巨大,耗时较长,效率低。
(2)找五个人分区。五个人,每个人负责一个区统计该区的人数,最后汇总五个人的统计人数。效率高,工作量小,耗时短。
实现
即将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终进行合并。适用于大量复杂的、时效性不高的任务处理场景(大规模离线数据处理场景)。
MapReduce由两部分组成,分别是Map 和Reduce两部分。
Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。例如前面例子中的没人去统计一个区。
Reduce负责“合”,即对map阶段的结果进行全局汇总。例如前面例子中将五个人的结果汇总。
这两个阶段合起来正是MapReduce思想的体现。