`
白粥若水
  • 浏览: 103827 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

《Google 三大论文》_MapReduce

 
阅读更多

MapReduce是Google三大论文中与应用方面最接近的一层,应该说,也是我们在学习和应用分布式系统基础架构(如hadoop)时唯一关心的。


简单点说,MapReduce是一种编程模型,在处理和生成TB级数据时非常有用:通过简单的接口来实现自动的并行化合大规模的分布式运算,并且不用考虑容错、负载均衡等等繁琐而麻烦的细节。


MapReduce借用了函数式编程的概念,它的实现的思路是:将庞大但是相似(这在分布式处理中很常见)的小的Task,通过Map函数分给不同的主机运算,最后,通过Reduce函数收集并合并计算结果,得到所需。


其基本模型是:利用一个输入Key/Value pair集合来产生一个输出的Key/Value pair集合。如下所示:


(input) <k1, v1> -> map -> <k2, v2> -> combine -> <k2, v2> -> reduce -> <k3, v3> (output)


举一个简单的例子。在Google,好吧,为了体现我的爱国,说百度。百度的日常工作中每天会处理大量的原始数据,比如:文档抓取、网站排序、Web请求统计和日志管理。这些操作本身很简单,甚至许多像我一样的菜鸟都能实现。然而,《算法的分析和设计》这门课程告诉我们,当n本身趋于大数时,即使是O(n)的复杂度也不是一台普通的主机所能完成的。

假设我们要统计Web请求。

现在,将这项工作交给一个实现了GFS(分布式文件系统)的主机集群。百度在各地的服务器执行Map函数,处理其周边范围的“小任务”,输入为每次Web站点请求,输出为(“URL”,1),即每有一次访问便将之记录下来。Reduce函数将各地的结果收集起来并进行统计。

注意,在整个MapReduce过程中我们并没有指定执行Map函数的主机和执行Reduce函数的主机,他的实现完全是在GFS的帮助下自动完成的,应用程序员并不需要关心。我们同样并不需要关心多台主机间的通信问题。这有点像网络下的Socket编程,我们并不需关心数据传输的底层实现。

 

其具体流程图如下:

MapReduce模型(Google应用上)

 

下面是一些简单的扩展问题

 

一、容错问题

由于MapReduce本身是设计应用于大规模的分布式计算的(至少得有多台计算机吧),因此一个基本观点是故障是常态。虽然用户本身不用关心容错问题,但简单了解一下MapReduce库在容错方面的措施还是有好处的。

 

1)worker错误

worker是实际进行计算工作的主机,也是计算集群中最多的一部分,因此,worker出现故障的概率是最高的。

 

master通常会和所有的worker结点保持心跳信号,如果在规定的时间内未收到worker返回的信号,那该worker会被标记为无效。所有应该由这些worker完成的task(包括已经完成的task)都会被重置为初始化状态,并动态分配给其余的worker处理。

 

 

2)master错误

master故障是比较麻烦的事情,因为在原则上MapReduce的信息缓存和管理工作都是由master完成的。一旦master出现错误,那么现行的MapReduce任务就崩溃了。

 

比较直观的解决办法有2个。一是定期将master数据结构写入磁盘,形成一个checkpoint。一旦发生错误,可以从最后一个checkpoint开始启动新的master进程。二是一旦master出错,整个任务就被终止。客户可以根据日志来检查错误原因,并重新启动。在实际当中,第二种方式是更常用的。

 

 

 

 

二、任务粒度

如前所述,我们把Map分为M个小Task,把Reduce分为R个小Task。一般来说,M+R >> 主机数量。

 

M和R值都是需要限制的,因为,master结点的调度动作的时间复杂度是O(M+R),而空间复杂度是O(M*R)。由于对每个状态用一个byte就可以表示,所以空间复杂度倒是其次,关键是对于有限的带宽来说,时间复杂度一般接受不了。对Google的业务来说,M=200000,R=5000,主机数=2000比较合适。

 

 


三、备用任务

在实际测试当中,MapReduce的整体完成时间通常取决于“落后者”。即可能有某些Map任务和Reduce任务需要额外花费几倍的时间来处理。可能是原因有多种,比如带宽竞争,或者某台主机过热导致CPU失常等等。

 

一个有效的机制是:当一个MapReduce任务接近完成时,master会为剩余的“落伍”任务调度备用的进程来完成。不管是正式的主机完成了任务还是备用的主机完成了任务,该任务都会被标记为已经完成。测试表明,这种调优策略通常只占总时间的很少一部分,但在关闭备用任务之后,要多花44%的时间来完成一个排序任务。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    Google三大论文之Mapreduce中文版(转)

    Google三大论文之一Mapreduce的中文翻译版,海量数据处理模型。

    Google_MapReduce论文中文版

    谷歌在03到06年间连续发表了三篇很有影响力的文章,分别是03年SOSP的GFS,04年OSDI的MapReduce,和06年OSDI的BigTable。SOSP和OSDI都是操作系统领域的顶级会议,在计算机学会推荐会议里属于A类。SOSP在单数年举办,...

    Google大数据三大论文中文版下载 Google论文MapReduce、GFS、Bigtable论文下载

    在IT行业中,Google的大数据处理技术是不可或缺的重要组成部分。...下载这三篇论文的中文版,可以帮助我们深入理解Google在大数据处理领域的创新思维和技术实现,对于学习和研究大数据技术具有极高的价值。

    Google 三大论文中英双文版(GFS、MapReduce 和 BigTable).zip

    《Google 三大核心技术:GFS、MapReduce与BigTable》 在信息技术的快速发展中,Google以其独特的创新精神和卓越的技术实力,引领了大数据处理的新纪元。GFS(Google File System)、MapReduce和BigTable是Google的...

    Hadoop_MapReduce云计算技术手册

    - **起源**:2004年,Google发表了关于MapReduce和Google File System (GFS)的研究论文,这些论文为Hadoop的发展奠定了理论基础。2006年,Doug Cutting将这些概念应用于Hadoop项目中,实现了开源版本的MapReduce和...

    谷歌三大论文中文版 mapReduce,fileSystem,BIgtable.zip

    谷歌的三大论文——《MapReduce: Simplified Data Processing on Large Clusters》、《The Google File System》和《Bigtable: A Distributed Storage System for Structured Data》是大数据处理领域的重要里程碑,...

    谷歌DFS+Mapreduce+Bigtable三大论文中英文版本

    谷歌三大论文涵盖了分布式文件系统(DFS)、MapReduce编程模型和大规模分布式存储系统Bigtable的核心技术,这些技术共同构成了谷歌内部处理大数据和大规模计算任务的基础架构。下面是这些技术的核心知识点和描述: ...

    谷歌三大论文(GFS,big Table,map reduce)

    谷歌的三大论文——“分布式文件系统GFS”、“大规模数据管理Bigtable”和“并行计算模型MapReduce”——是大数据处理领域的里程碑式工作,它们为现代云计算和大数据技术奠定了基础。这三篇论文详细阐述了谷歌如何...

    Google Mapreduce,GFS,Bigtable--Google三大核心技术论文

    在IT行业中,Google是技术创新的巨头,其三大核心技术——MapReduce、GFS(Google File System)和Bigtable,对大数据处理和云计算领域产生了深远影响。这些技术是Google为解决自身大规模数据处理问题而研发的,并...

    Google大数据三大论文英文版下载 Google论文MapReduce、GFS、Bigtable论文下载英文版

    Google大数据三篇经典论文——MapReduce、GFS(Google File System)以及Bigtable,对于理解大规模数据处理的基础架构和技术至关重要。这三篇论文分别深入探讨了分布式计算模型、大规模文件系统和结构化数据存储系统...

    google三大论文 gfs bigtable mapreduce hadoop hdfs hbase的原型

    Google三大论文分别指的是《Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》和《Bigtable: A Distributed Storage System for Structured Data》。这三篇论文详细介绍了Google...

    Google三大论文WORD版

    标题中的“Google三大论文”指的是Google公司在早期发表的三篇具有里程碑意义的技术论文,它们对互联网行业的技术发展产生了深远影响。这三篇论文分别是《Bigtable:一个结构化数据的分布式存储系统》(Google_...

    谷歌三大论文中文+原文

    google mapreduce

    谷歌GFS+Mapreduce+Bigtable三大论文中英文+PDF+WORD版本

    谷歌的GFS、MapReduce和Bigtable是大数据处理和分布式计算领域的里程碑式创新,这三者构成了谷歌的基础架构,对整个互联网行业产生了深远影响。现在,我们拥有的是一份包含这些核心论文的2021年修正版集合,涵盖了中...

    云计算三大论文(GFS,MapReduce,BigTable),中文及英文

    云计算是21世纪信息技术发展的重要里程碑,它改变了我们处理、存储和分析大量数据的方式。本文将深入探讨云计算领域的三篇...如今,无论是在科研、商业还是日常生活中,我们都能感受到这三大技术所带来的便利和影响力。

    Google_云计算三大论文_中文版

    Google云计算三大论文——Bigtable、GFS和MapReduce——共同构成了Google云计算的核心技术基础。这些技术不仅解决了大数据处理和存储中的许多关键挑战,也为业界提供了宝贵的经验和技术参考。通过对这些论文的研究,...

    谷歌分布式领域三大论文合集(GFS、MapReduce、BigTable)

    2. 紧随其后的就是2004年公布的 MapReduce论文,论文描述了大数据的分布式计算方式,主要思想是将任务分解然后在多台处理能力较弱的计算节点中同时处理,然后将结果合并从而完成大数据处理。 3. 最后就是谷歌发布于...

    谷歌Bigtable File-System MapReduce论文

    谷歌的三篇经典论文——Bigtable、File-System和MapReduce,对现代大数据处理和分布式系统的发展产生了深远影响。这三篇文章分别详细介绍了谷歌在数据存储、文件系统和大规模并行计算上的创新解决方案。 首先,让...

Global site tag (gtag.js) - Google Analytics