MapReduce,学习分布式系统必读的经典佳作,写在本系列的开篇。文章按该paper的思路解析Map Reduce编程模型核心思想和关注点、案例及其实现
MapReduce简介
Google搜索引擎每天处理大量的原始数据,网络爬虫、Web请求日志等,以计算各种派生数据,反向索引、Web文档的图形结构、页面数量摘要、热词集。概念上来说这类计算很简单直观,然而输入数据集通常很大,计算必须被分布在跨数百或数千台机器上进行,以便在合理的时间内完成。如何并行化计算、分发数据、处理故障,共同构成大量复杂的代码来解决这些原始简单直观的计算问题
为应对这种复杂性而设计出一个新的抽象,允许表达我们试图执行的简单运算,隐藏库中并行化、容错、数据分布和负载平衡的混乱细节。抽象的灵感来源于Lisp和其他函数式语言的map和reduce原语
Google公司于2004年发表的论文 -- MapReduce:Simplified Data Processing on Large Clusters,是一种用于处理和生成大规模数据集的编程模型及其相关实现。用户指定Map函数和Reduce函数,Map函数用于处理键/值对以生成一组中间键/值对的映射,Reduce函数合并所有被相同中间键关联的中间值。该模型可以表达许多现实世界的任务
以这种函数风格编写的程序可以自动化并行地在大规模商用机器集群上执行。运行时系统负责输入数据分区的细节,调度程序跨集群机器集执行,处理集群故障,管理机器之间的通信请求。使得没有任何并行和分布式系统经验的程序员可以很容易地利用大型分布式系统的资源
MapReduce是一个简单而强大的接口,可实现大规模自动并行化和分布式计算,并结合此接口的实现,在大规模商用PC机集群上实现程序高性能且具有高度可扩展性运行
<