MapReduce是Google提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。Map(映射),Reduce(化简)的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴来的。正是由于MapReuce有函数式和矢量编程语言的共性,使得这种编程模式特别适合非结构化和结构化的海量数据的搜索,挖掘,分析与机器智能学习等。
1.产生背景
Mapreduce这种并行编程模式思想最早是在1995年提出的,首次提出了“Map”和“fold”的概念,和Google现在所使用的“Map”和"Reduce"思想相吻合。
与传统的分布式程序设计相比,MapReduce封装了并行处理,容错处理,本地化计算,负载均衡等细节,还提供了一个简单而强大的接口。通过这个接口,可以把大尺度的计算自动地并发和分布执行,使编程变得非常容易。另外 ,MapReduce也具有较好的通用性,大量不同的问题都可以简单地通过MapReduce来解决。
MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。在每个时间周期,主节点都会对分节点的工作状态进行标记。一旦分结点状态标记。一旦分结点状态标记为死亡状态,则这个节点的所有任务都将分配给其他节点重新执行。
据相关统计,每使用一次Google搜索引擎,Google的后台服务器就要进行10的11次运算。这么庞大的运算量ÿ