浅谈MapReduce
MapReduce被提出,已有10年多,广泛应用于大数据领域,在21世纪这信息爆炸时代,有效地帮助无数多的攻城狮解决处理海量数据的困扰。
概述
在 OSDI 2004
,Google 的两名科学家 Jeffrefy Dean
和 Sanjay Ghemawat
在一篇名为 MapReduce: Simplified Data Processing on Large Clusters
的 paper 中讲述了 MapReduce
,该 paper 在写本文时已被引用高达 15542
次。本篇主要以该 paper 中对 MapReduce
的描述,以及自己的开发经验,简要谈一下对 MapReduce
的理解。
MapReduce
是一个编程模型,用于处理海量数据,生成目标数据结果。MapReduce 将任务的计算过程划分为2个阶段: Map
阶段和 Reduce
阶段。计算过程中,在 Map
阶段,对业务逻辑的每一条 记录
作为输入,生成一组 <key, value>
对作为中间结果;接着,在 Reduce
阶段,将 Map
阶段中生成的一组 <key, value>
对中间结果进行合并,即对具有相同 key
的 value
进行合并,这里的合并
可能是做聚合操作,也可能是进行排序等操作,然后将最终合并后的结果输出。让人欣喜的是,现实世界中的许多问题处理过程,都可以表达成这样的模型。