1. 介绍

MapReduce是为了更好地实现大数据分布式计算

2. 编程模型

Map对每一个元素做运算;

Reduce把前i个元素的运算结果和第i+1个元素做运算,作为前i+1个元素的运算结果。

3. 实现

设备:网络硬件+上千台(容易出故障的)电脑+调度系统

Master持有一些数据结构,存储每个Map和Reduce状态的任务和Worker机器的标识。

MapReduce重要的特性的特性是容错,就像网络传输一样,约定一个时间没返回结果就标记成出错。

 4. 增强功能

分区函数

顺序保证

Combiner函数

输入和输出类型

将过程输出到文件

跳过损坏的记录

本地执行:为了简化调试,用户可以设置在本地执行程序

5. 性能

集群配置:任意两节点网络来回时间小于1毫秒,大约1-1.5G用于执行集群任务。

GREP程序的性能:grep大约需要扫描10e+10个由100个字节组成的记录,查出出现概率小于3个字符的模式。输入数据被拆分成大约6.4e+7个Block.

排序程序的性能

6. 经验

Google网络搜索引擎的大规模索引

7. 相关工作

8. 结束语

MapReduce编程模型在Google内部成功应用于多个领域。我们把这种成功归结为几个方面:首先,由于MapReduce封装了并行处 理、容错处理、数据本地化优化、负载均衡等等技术难点的细节,这使得MapReduce库易于使用。即便对于完全没有并行或者分布式系统开发经验的程序员 而言;其次,大量不同类型的问题都可以通过MapReduce简单的解决。比如,MapReduce用于生成Google的网络搜索服务所需要的数据、用 来排序、用来数据挖掘、用于机器学习,以及很多其它的系统;第三,我们实现了一个在数千台计算机组成的大型集群上灵活部署运行的MapReduce。这个 实现使得有效利用这些丰富的计算资源变得非常简单,因此也适合用来解决Google遇到的其他很多需要大量计算的问题。

我们也从MapReduce开发过程中学到了不少东西。首先,约束编程模式使得并行和分布式计算非常容易,也易于构造容错的计算环境;其次,网络带 宽是稀有资源。大量的系统优化是针对减少网络传输量为目的的:本地优化策略使大量的数据从本地磁盘读取,中间文件写入本地磁盘、并且只写一份中间文件也节 约了网络带宽;第三,多次执行相同的任务可以减少性能缓慢的机器带来的负面影响(alex注:即硬件配置的不平衡),同时解决了由于机器失效导致的数据丢失问题。