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注:即硬件配置的不平衡),同时解决了由于机器失效导致的数据丢失问题。