云计算导论 课件 第六章 Google 云计算原理与应用_第1页
云计算导论 课件 第六章 Google 云计算原理与应用_第2页
云计算导论 课件 第六章 Google 云计算原理与应用_第3页
云计算导论 课件 第六章 Google 云计算原理与应用_第4页
云计算导论 课件 第六章 Google 云计算原理与应用_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《云计算导论》第六章Google云计算原理与应用目录Google文件系统GFS1分布式数据处理MapReduce2分布式锁服务Chubby36.1Google文件系统GFSGoogle文件系统(GoogleFileSystem,GFS)是一个大型的分布式文件系统。它为Google云计算提供海量存储,并且与Chubby、MapReduce及Bigtable等技术结合十分紧密,处于所有核心技术的底层。GFS不是一个开源的系统,我们仅能从Google公布的技术文档来获得相关知识。当前主流分布式文件系统有RedHat的GFS(GlobalFileSystem)、IBM的GPFS、Sun的Lustre等。GoogleGFS的新颖之处在于它采用廉价的商用机器构建分布式文件系统,同时将GFS的设计与Google应用的特点紧密结合,简化实现,使之可行,最终达到创意新颖、有用、可行的完美组合。6.1Google文件系统GFS6.1.1系统架构GFS将整个系统的节点分为三类角色:Client(客户端)、Master(主服务器)和ChunkServer(数据块服务器)。Client是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。应用程序直接调用这些库函数,并与该库链接在一起。Master是GFS的管理节点,在逻辑上只有一个,它保存系统的元数据,负责整个文件系统的管理,是GFS文件系统中的“大脑”。ChunkServer负责具体的存储工作。6.1Google文件系统GFS6.1.1系统架构GFS具有以下几个特点:1.采用中心服务器模式2.不缓存数据3.在用户态下实现4.只提供专用接口6.1Google文件系统GFS6.1.2容错机制1.Master容错2.ChunkServer容错6.1Google文件系统GFS6.1.3系统管理技术GFS是一个分布式文件系统,包含从硬件到软件的整套解决方案。除了上面提到的GFS的一些关键技术外,还有相应的系统管理技术来支持整个GFS的应用,这些技术可能不一定为GFS独有。1.大规模集群安装技术2.故障检测技术3.节点动态加入技术4.节能技术6.2分布式数据处理MapReduceMapReduce是Google提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。Map(映射)、Reduce(化简)的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴来的。正是由于MapReduce有函数式和矢量编程语言的共性,使得这种编程模式特别适合于非结构化和结构化的海量数据的搜索、挖掘、分析与机器智能学习等。6.2分布式数据处理MapReduce6.2.1产生背景MapReduce这种并行编程模式思想最早是在1995年提出的。与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。在每个时间周期,主节点都会对分节点的工作状态进行标记。一旦分节点状态标记为死亡状态,则这个节点的所有任务都将分配给其他分节点重新执行。6.2分布式数据处理MapReduce6.2.2编程模型MapReduce的运行模型如图所示。图中有M个Map操作和R个Reduce操作。简单地说,一个Map函数就是对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,这使得它们可以充分并行化。一个Reduce操作就是对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集,因此Reduce也可以在并行环境下执行。6.2分布式数据处理MapReduce6.2.3实现机制6.2分布式数据处理MapReduce6.2.4案例分析排序通常用于衡量分布式数据处理框架的数据处理能力,下面介绍如何利用MapReduce进行数据排序。假设有一批海量的数据,每个数据都是由26个字母组成的字符串,原始的数据集合是完全无序的,怎样通过MapReduce完成排序工作,使其有序(字典序)呢?可通过以下三个步骤来完成。(1)对原始的数据进行分割(Split),得到N个不同的数据分块。(2)对每一个数据分块都启动一个Map进行处理。采用桶排序的方法,每个Map中按照首字母将字符串分配到26个不同的桶中。(3)对于Map之后得到的中间结果,启动26个Reduce。按照首字母将Map中不同桶中的字符串集合放置到相应的Reduce中进行处理。具体来说就是首字母为a的字符串全部放在Reduce1中处理,首字母为b的字符串全部放在Reduce2,以此类推。每个Reduce对于其中的字符串进行排序,结果直接输出。由于Map过程中已经做到了首字母有序,Reduce输出的结果就是最终的排序结果。6.3分布式锁服务ChubbyChubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题。通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性。不过值得注意的是,这种锁只是一种建议性的锁(AdvisoryLock)而不是强制性的锁(MandatoryLock),这种选择使系统具有更大的灵活性。6.3分布式锁服务Chubby6.3.1Paxos算法Paxos算法是LeslieLamport最先提出的一种基于消息传递(MessagesPassing)的一致性算法,用于解决分布式系统中的一致性问题。在目前所有的一致性算法中,该算法最常用且被认为是最有效的。简单地说,分布式系统的一致性问题,就是如何保证系统中初始状态相同的各个节点在执行相同的操作序列时,看到的指令序列是完全一致的,并且最终得到完全一致的结果。怎么才能保证在一个操作序列中每个步骤仅有一个值呢?一个最简单的方案就是在分布式系统中设置一个专门节点,在每次需要进行操作之前,系统的各个部分向它发出请求,告诉该节点接下来系统要做什么。该节点接受第一个到达的请求内容作为接下来的操作,这样就能够保证系统只有一个唯一的操作序列。但是这样做也有一个很明显的缺陷,那就是一旦这个专门节点失效,整个系统就很可能出现不一致。为了避免这种情况,在系统中必然要设置多个专门节点,由这些节点来共同决定操作序列。针对这种多节点决定操作系列的情况,Lamport提出了Paxos算法。在他的算法中节点被分成了三种类型:proposers、acceptors和learners。其中proposers提出决议(value,实际上就是告诉系统接下来该执行哪个指令),acceptors批准决议,learners获取并使用已经通过的决议。一个节点可以兼有多重类型。6.3分布式锁服务Chubby6.3.2Chubby系统设计通常情况下Google的一个数据中心仅运行一个Chubby单元,这个单元需要支持包括GFS、Bigtable在内的众多Google服务,因此,在设计Chubby时候,必须充分考虑系统需要实现的目标以及可能出现的各种问题。Chubby的设计目标主要有以下几点。(1)高可用性和高可靠性。这是系统设计的首要目标,在保证这一目标的基础上再考虑系统的吞吐量和存储能力。(2)高扩展性。将数据存储在价格较为低廉的RAM,支持大规模用户访问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论