本节书摘来异步社区《MapReduce设计模式》一书中的第1章,第1.2节,作者: 【美】Donald Miner , Adam Shook 译者: 徐钊 , 赵重庆 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.2 MapReduce简史
是什么触动我们写一本MapReduce设计模式的书呢?当前,社区的发展势头和广泛使用的设计模式已经积累到了一个关键点,使得汇总整理一份设计模式清单供开发者分享成为可能。在前几年,Hadoop的发展初期,还没有足够的这方面的经验积累。但MapReduce的发展速度超乎寻常。从2004年Google公开发布MapReduce的论文开始,到2012年为止,Hadoop已经成长为了被广泛采用的分布式数据处理的业界标准。
MapReduce的真实起源是存在争议的,但引领我们走向这个旅程的是2004年Jeffrey Dean和Sanjay Ghemawat发表的论文《MapReduce:Simplified Data Processing on Large Clusters》。这篇论文此后被广泛引用,它描述了Google如何通过拆分、处理和聚合来处理他们那些大到令人难以置信的数据集。
在这篇论文发表后不久,开源软件领域的先行者Doug Cutting开始为他的Nutch系统实现其分布式的MapReduce框架,Nutch系统的目标是实现一个开源的搜索引擎。随着时间的推移以及后续Yahoo!的持续投入,Hadoop从Nutch中独立出来,并最终成为Apache Foundation的顶级项目。时至今日,大量的独立开发者和组织都加入到了Hadoop社区,并为其贡献代码,这些使得每一个Hadoop新版本的发布都有新增功能和性能提升。
此外,基于Hadoop的一些开源系统也在蓬勃发展。其中比较著名的包括Pig、Hive、HBase、Mahout和ZooKeeper。Doug Cutting和Hadoop社区的专家多次提到,Hadoop已经成为了分布式处理中分布式操作系统的核心部件。在本书中,我们将以Hadoop生态系统中Java版的MapReduce为基础,来解释我们的示例。在某些章节中,我们还会将MapReduce设计模式与相似的Pig或Hive SQL实现进行比较。