云计算读书笔记(二)之google云计算技术MapReduce

本文是《云计算》第二版的读书笔记,主要介绍MapReduce的编程模型和实现机制。Map阶段将输入数据拆分为M块并由Worker处理,Reduce阶段则通过排序和归并处理相同的key,最终形成有序结果。此外,文中还探讨了MapReduce的容错机制和一个字母排序的案例分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《云计算》(第二版)[刘鹏]读书笔记

分布式数据处理MapReduce

编程模型:

Map的输入参数是in_keyin_value,输出结果是一组<key,value>对,这是经过Map操作后所产生的中间结果。进行Reduce操作之前,对所有Map产生的中间结果进行归并处理,Reduce的输入参数是(key,[value1,...,valuem])Reduce对相同的keyvalue值进行归并处理,最终形成(key, final_value)的结果。

 

实现机制:

1.      MapReduce函数首先把输入文件分成M块,每块大概16M~64MB,接着在集群的机器上执行分派处理程序。

2.      主控程序Master分派工作的Worker(工作机),Master选择空闲的Worker来分配这些MapReduce任务。

3.      分配了Map任务的Worker读取并吹相关的输入快,将分析出的<key, value>对传递给用户定义的Map函数。Map函数产生的中间结果<key,value>对暂时缓冲到内存。

4.      缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区。中间结果在本地硬盘的位置信息将被发送回Master,然后Master负责把这些位置信息传送给Reduce Worker

5.      Master通知执行ReduceWorker关于中间<key,value>对的位置时,调用远程过程,从Map Worker的本地硬盘上读取缓冲的中间数据。当ReduceWorker读到所有的中间数据,它就是用中间key进行排序,这样可使相同key的值都在一起。如果中间结果集过于庞大,那么就需要是用外排序。

6.      ReduceWorker根据每一个唯一中间key来遍历所有排序后的中间数据,并且把key和想的中间结果值几何传递给用户定义的Reduce函数。Reduce函数的结果写到一个最终的输出文件。

7.      当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序,此时MapReduce返回用户程序的调用点。

 

容错实现:

1.      Master失效

Master周期性地设置检查点,一个某个任务失效,系统就从最近的一个检查点恢复并重新执行,如果Master失效了,重新开始。

2.      Worker失效

Master周期性给Worker发送ping命令,如果没有应答,任务失效,终止对这个Worker的任务调度,把失效Worker的任务调度到其他Worker上重新执行。

 

案例分析:

对海量26个字母组成的字符串排序

  1. 对原始的数据进行分割,得到N个不同的数据分块。
  2. 对每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中。
  3. 对于Map之后的中间结果,启动26Reduce,按照首字母放置到相应的Reduce中进行处理。由于Map过程中已经做到了首字母有序,Reduce输出的结果就是最终的排序结果。

参考资料:

《云计算》(第二版)[刘鹏]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值