浅谈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 进行合并,这里的合并可能是做聚合操作,也可能是进行排序等操作,然后将最终合并后的结果输出。让人欣喜的是,现实世界中的许多问题处理过程,都可以表达成这样的模型。




