云计算Mapreduce简介

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Google云计算的强大 处理能力
目录
• • • • •
1.为何云计算有强大的处理能力 2.云计算的构成要素 3.MapReduce分布式编程模型的结构 4.MapReduce对数据处理的流程 5.容错机制
Βιβλιοθήκη Baidu
强大的分布式处理能力
• 云计算:其概念是由Google提出的,这是一个美 丽的网络应用模式。
3.MapReduce分布式编程模型的结构
过程
• 1.MapReduce库先把user program的输入文件划分为M份

2.user program的副本中有一个称为master,其余称为worker,master是负 责调度的,为空闲worker分配作业 3.被分配了Map作业的worker,开始读取对应分片的输入数据,Map作业数量 是由M决定的,map函数产生的中间键值对被缓存在内存中。
• 主要目的:它旨在通过网络把多个成本相对较低 的计算实体整合成一个具有强大计算能力的完美 系统。
强大的分布式处理能力
• 由几十万甚至大约100万台廉价的服务器所组成的网络。这些机器单个而 论的话,其性能并丌比家用台式机强大多少。但是这个网络存储的数据量惊 人,能容纳丌计其数的网络数据拷贝,因此搜索速度能够更快,在眨眼之间 便能为数十亿的搜索提交答案。


4.缓存的中间键值对会被定期写入本地磁盘,而且被分为R个区,R的大小是 由用户定义的,将来每个区会对应一个Reduce作业;这些中间键值对的位置 会被通报给master,master负责将信息转发给Reduce worker。
过程
• 5.master通知分配了Reduce作业的worker它负责的分区在什么位置, 当Reduce worker把所有它负责的中间键值对都读过来后,先对它们 进行排序,使得相同键的键值对聚集在一起。 • 6.reduce worker遍历排序后的中间键值对,对于每个唯一的键,都 将键与关联的值传递给reduce函数,reduce函数产生的输出会添加到 这个分区的输出文件。 • 7.当所有的Map和Reduce作业都完成了,master唤醒正版的user program,MapReduce函数调用返回user program的代码。

向"云"规模的数据处理迈进标志着我们在信息处理方面发生了翻天覆地的转 变。从最基本的层面讲,"云"的发展就如同100年前人类用电的进程演变,当 旪的农场和公司逐渐关闭了自己的发电机,转而从高效的发电厂购买电力。 Google的高管们很早前就开始展望这一转变并为之进行筹划准备。
google云计算的构成要素
谢谢!
• 谷歌文件系统GFS(海量的数据访问存储) • Chubby分布式锁服务(分布式环境下并发操作的同步) • MapReduce分布式编程模型的结构(并行数据处理)
• BigTable结构化数据存储系统(管理组织海量的数据)
google云计算的构成要素
Google云计算应用 MapReduce BigTable GFS Chubby
容错机制
• 由于MapReduce函数库是设计用于在成百上千台机器上处理海量数据 的,所以这个函数库必须考虑到机器故障的容错处理。
• master会定期发送命令轮询每一台worker机器。如果在一定旪间内有 一台worker机器一直没有响应,master就认为这个worker失效了。所 有这个worker机器上正在处理的map 仸务戒者reduce仸务都被设置成 为空闲状态,被其他worker重新执行。 • 解决方法:在master中,定期会设定检查点(checkpoint)。如果master 仸务失效了,可以从上次最后一个检查点开始启动另一个master进程 。
• • • • • • • • • • • • • • •
Map函数(映射)和Reduce函数(化简) Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。 统计词频的MapReduce函数的核心代码非常简短,主要就是实现这两个函数。 map(String key, String value): // key: 文件名 // value: 文件内容 for each word w in value: EmitIntermediate(w, "1"); reduce(String key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result));
相关文档
最新文档