没有合适的资源?快使用搜索试试~ 我知道了~
首页MapReduce系统架构
资源详情
资源评论
资源推荐
Google MapReduce中文版-系统架构
http://www.kuqin.com/system-analysis/20100915/88059.html[2010-11-2 17:19:20]
学
习
职
业
游
戏
专
辑
当前位置:首页>挖经验>系统架构>Google MapReduce中文版
软件交流 开发设计 考试考研 站长网编 竞赛创业
网络服务 科学探索 手机数码 互联网 通信业界
程序人生 IT人物
职场求职 IT幽默
摩尔庄园 赛尔号 网页游戏
开心农场 奥比岛 开心网游戏
Windows7
iPhone
来源:Alex && OpenCould 酷勤网收集 2010-09-15
摘要
MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。用户首先创建
一个Map函数处理一个基于key/value pair的数据集合,输出中间的基于key/value pair的数据集合;然
后再创建一个Reduce函数用来合并所有的具有相同中间key值的中间value值。现实世界中有很多满足
上述处理模型的例子,本论文将详细描述这个模型。
MapReduce架构的程序能够在大量的普通配置的计算机上实现并行化处理。这个系统在运行时只关
心:如何分割输入数据,在大量计算机组成的集群上的调度,集群中计算机的错误处理,管理集群中计
算机之间必要的通信。采用MapReduce架构可以使那些没有并行计算和分布式处理系统开发经验的程
序员有效利用分布式系统的丰富资源。
我们的MapReduce实现运行在规模可以灵活调整的由普通机器组成的集群上:一个典型
的MapReduce计算往往由几千台机器组成、处理以TB计算的数据。程序员发现这个系统非常好用:已
经实现了数以百计的MapReduce程序,在Google的集群上,每天都有1000多个MapReduce程序在执
行。
1、介绍
在过去的5年里,包括本文作者在内的Google的很多程序员,为了处理海量的原始数据,已经实现了数
以百计的、专用的计算方法。这些计算方法用来处理大量的原始数据,比如,文档抓取(类似网络爬虫
的程序)、Web请求日志等等;也为了计算处理各种类型的衍生数据,比如倒排索引、Web文档的图
结构的各种表示形势、每台主机上网络爬虫抓取的页面数量的汇总、每天被请求的最多的查询的集合等
等。大多数这样的数据处理运算在概念上很容易理解。然而由于输入的数据量巨大,因此要想在可接受
的时间内完成运算,只有将这些计算分布在成百上千的主机上。如何处理并行计算、如何分发数据、如
何处理错误?所有这些问题综合在一起,需要大量的代码处理,因此也使得原本简单的运算变得难以处
理。
为了解决上述复杂的问题,我们设计一个新的抽象模型,使用这个抽象模型,我们只要表述我们想要执
行的简单运算即可,而不必关心并行计算、容错、数据分布、负载均衡等复杂的细节,这些问题都被封
装在了一个库里面。设计这个抽象模型的灵感来自Lisp和许多其他函数式语言的Map和Reduce的原
语。我们意识到我们大多数的运算都包含这样的操作:在输入数据的“逻辑”记录上应用Map操作得出一
个中间key/value pair集合,然后在所有具有相同key值的value值上应用Reduce操作,从而达到合并中
间的数据,得到一个想要的结果的目的。使用MapReduce模型,再结合用户实现的Map和Reduce函
数,我们就可以非常容易的实现大规模并行化计算;通过MapReduce模型自带的“再次执行”(re-
execution)功能,也提供了初级的容灾实现方案。
Google MapReduce中文版
编辑推荐 热点文章
·理解REST软件架构
·eBay的架构
·如何成为一个好的系统分析员
·什么是系统分析
·怎样做一个优秀的系统分析师
·优秀的系统分析师必读——需求分析20条原则
相关主题 最新文章
·Google MapReduce中文版
·Google的系统工程师(SA)如何工作
·The Google File System中文版
·无挑战,不工作之 -系统分析师招聘答案
·五年Skype架构师之路的感言
·深入分析IBM的云计算解决方案
PuzzleGames.alot.com Google 提供的广告
Google 提供的广告 Google Google推广 Google代理 C# Mapreduce Google优化
Google
提供的广告
Google AD Word
Get on Google
Google優化
Google
广告
Download Google Analytics
Gain traffic and optimize your site with Google Analytics. Free!
www.google.com/analytics
站内搜索
Google MapReduce中文版-系统架构
http://www.kuqin.com/system-analysis/20100915/88059.html[2010-11-2 17:19:20]
这个工作(实现一个MapReduce框架模型)的主要贡献是通过简单的接口来实现自动的并行化和大规模
的分布式计算,通过使用MapReduce模型接口实现在大量普通的PC机上高性能计算。
第二部分描述基本的编程模型和一些使用案例。第三部分描述了一个经过裁剪的、适合我们的基于集群
的计算环境的MapReduce实现。第四部分描述我们认为在MapReduce编程模型中一些实用的技巧。第
五部分对于各种不同的任务,测量我们MapReduce实现的性能。第六部分揭示了在Google内部如何使
用MapReduce作为基础重写我们的索引系统产品,包括其它一些使用MapReduce的经验。第七部分讨
论相关的和未来的工作。
2、编程模型
MapReduce编程模型的原理是:利用一个输入key/value pair集合来产生一个输出的key/value pair集
合。MapReduce库的用户用两个函数表达这个计算:Map和Reduce。
用户自定义的Map函数接受一个输入的key/value pair值,然后产生一个中间key/value pair值的集
合。MapReduce库把所有具有相同中间key值I的中间value值集合在一起后传递给reduce函数。
用户自定义的Reduce函数接受一个中间key的值I和相关的一个value值的集合。Reduce函数合并这
些value值,形成一个较小的value值的集合。一般的,每次Reduce函数调用只产生0或1个输
出value值。通常我们通过一个迭代器把中间value值提供给Reduce函数,这样我们就可以处理无法全
部放入内存中的大量的value值的集合。
Google MapReduce中文版-系统架构
http://www.kuqin.com/system-analysis/20100915/88059.html[2010-11-2 17:19:20]
2.1、例子
例如,计算一个大的文档集合中每个单词出现的次数,下面是伪代码段:
map(String key, String value):
// key: document name
// value: document contents
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));
Map函数输出文档中的每个词、以及这个词的出现次数(在这个简单的例子里就是1)。Reduce函数
把Map函数产生的每一个特定的词的计数累加起来。
另外,用户编写代码,使用输入和输出文件的名字、可选的调节参数来完成一个符合MapReduce模型
规范的对象,然后调用MapReduce函数,并把这个规范对象传递给它。用户的代码和MapReduce库链
接在一起(用C++实现)。附录A包含了这个实例的全部程序代码。
2.2、类型
尽管在前面例子的伪代码中使用了以字符串表示的输入输出值,但是在概念上,用户定义
的Map和Reduce函数都有相关联的类型:
map(k1,v1) ->list(k2,v2)
reduce(k2,list(v2)) ->list(v2)
比如,输入的key和value值与输出的key和value值在类型上推导的域不同。此外,中间key和value值与
输出key和value值在类型上推导的域相同。
(译者注:原文中这个domain的含义不是很清楚,我参考Hadoop、KFS等实现,map和reduce都使用
了泛型,因此,我把domain翻译成类型推导的域)。
我们的C++中使用字符串类型作为用户自定义函数的输入输出,用户在自己的代码中对字符串进行适当
的类型转换。
2.3、更多的例子
这里还有一些有趣的简单例子,可以很容易的使用MapReduce模型来表示:
分布式的Grep:Map函数输出匹配某个模式的一行,Reduce函数是一个恒等函数,即把中间数
Google MapReduce中文版-系统架构
http://www.kuqin.com/system-analysis/20100915/88059.html[2010-11-2 17:19:20]
据复制到输出。
计算URL访问频率:Map函数处理日志中web页面请求的记录,然后输出(URL,1)。Reduce函数
把相同URL的value值都累加起来,产生(URL,记录总数)结果。
倒转网络链接图:Map函数在源页面(source)中搜索所有的链接目标(target)并输出
为(target,source)。Reduce函数把给定链接目标(target)的链接组合成一个列表,输
出(target,list(source))。
每个主机的检索词向量:检索词向量用一个(词,频率)列表来概述出现在文档或文档集中的最重要
的一些词。Map函数为每一个输入文档输出(主机名,检索词向量),其中主机名来自文档
的URL。Reduce函数接收给定主机的所有文档的检索词向量,并把这些检索词向量加在一起,
丢弃掉低频的检索词,输出一个最终的(主机名,检索词向量)。
倒排索引:Map函数分析每个文档输出一个(词,文档号)的列表,Reduce函数的输入是一个给定
词的所有(词,文档号),排序所有的文档号,输出(词,list(文档号))。所有的输出集合形成一
个简单的倒排索引,它以一种简单的算法跟踪词在文档中的位置。
分布式排序:Map函数从每个记录提取key,输出(key,record)。Reduce函数不改变任何的值。
这个运算依赖分区机制(在4.1描述)和排序属性(在4.2描述)。
3、实现
MapReduce模型可以有多种不同的实现方式。如何正确选择取决于具体的环境。例如,一种实现方式
适用于小型的共享内存方式的机器,另外一种实现方式则适用于大型NUMA架构的多处理器的主机,而
有的实现方式更适合大型的网络连接集群。
本章节描述一个适用于Google内部广泛使用的运算环境的实现:用以太网交换机连接、由普通PC机组
成的大型集群。在我们的环境里包括:
1.x86架构、运行Linux操作系统、双处理器、2-4GB内存的机器。
2.普通的网络硬件设备,每个机器的带宽为百兆或者千兆,但是远小于网络的平均带宽的一半。 (译
者注:这里需要网络专家解释一下了)
3.集群中包含成百上千的机器,因此,机器故障是常态。
4.存储为廉价的内置IDE硬盘。一个内部分布式文件系统用来管理存储在这些磁盘上的数据。文件系统
通过数据复制来在不可靠的硬件上保证数据的可靠性和有效性。
5.用户提交工作(job)给调度系统。每个工作(job)都包含一系列的任务(task),调度系统将这些
任务调度到集群中多台可用的机器上。
3.1、执行概括
通过将Map调用的输入数据自动分割为M个数据片段的集合,Map调用被分布到多台机器上执行。输入
的数据片段能够在不同的机器上并行处理。使用分区函数将Map调用产生的中间key值分成R个不同分
区(例如,hash(key) mod R),Reduce调用也被分布到多台机器上执行。分区数量(R)和分区函数
由用户来指定。
剩余17页未读,继续阅读
BigFool1988
- 粉丝: 8
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0