MapReduce这种并行编程模式思想最早是在1995年提出的,John Darlington, Yi-ke Guo,Hing Wing 在论文<>首次提出了“map”和“fold”的概念,和现在 Google 所使用的“Map”和“Reduce”思想是相吻合的。

    与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算和负载均衡等细节,还提供了一个简单而强大的接口。通过这个接口,可以把大尺度的计算自动地并发和分布执行,从而使编程变得非常容易。还可以通过由普通PC构成的巨大集群来达到极高的性能。另外,MapReduce也具有软好的通用性,大量不同的问题都可以简单地通过MapReduce来解决。

    MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。在每个时间周期,主节点都会对分节点的工作状态进行标记,一旦分节点状态标记为死亡状态,则这个节点的所有任务都将分配给其他分节点重新执行。

    据相关统计,每使用一次Google搜索引擎,Google的后台服务器就要进行1011次运算。这么庞大的运算量,如果没有好的负载均衡机制,有些服务器的利用率会很低,有些则会负荷太重,有些甚至可能死机,这些都会影响系统对用户的服务质量。而使用MapReduce这种编程模式,就保持了服务器之间的均衡,提高了整体效率。