概述
核心思想
“分而治之”。就是将一个复杂的问题,按照一定的“分解方法”分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,把各部分的结果组成整个问题的结果。
用MapReduce分析海量数据时,每个MapReduce程序被初始化为一个工作任务,每个工作任务可以分为Map和Reduce两个阶段,介绍如下:
Map阶段:负责将任务分解,即把复杂的任务分解成若干个“简单的任务”来并行处理,
但前提是这些任务没有必然的依赖关系,可以单独执行任务。
Reduce阶段:负责将任务合并,即把Map的结果进行全局汇总。
MapReduce编程模型
MapReduce是一种编程模型,可以处理大规模数据集的并行计算。
MapReduce的程序实现是通过map()和reduce()函数来完成的。从数据格式上看,map()函数接收的是键值对,产生的输出结果也是键值对形式,reduce()函数会将map()函数输出的键值对作为输入,把相同key值的value进行汇总,输出新的键值对。