1、第3章云计算平台及关键技术 第3章 云计算平台及关键技术3.1主要云计算平台主要云计算平台3.2云计算的关键技术云计算的关键技术3.3云计算的计算模型云计算的计算模型3.4小结小结第3章云计算平台及关键技术 3.1主要云计算平台主要云计算平台 1.Google的云计算基础设施的云计算基础设施Google的云计算基础设施是在最初为搜索应用提供服务的基础上逐步扩展的,它主要由分布式文件系统GoogleFileSystem(GFS)、大规模分布式数据库BigTable、程序设计模式MapReduce、分布式锁机制Chubby等几个既相互独立又紧密结合的系统组成。GFS是一个分布式文件系统,能够处理大
2、规模的分布式数据。图31所示为GFS的体系结构。系统中每个GFS集群由一个主服务器和多个块服务器组成,被多个客户端访问。第3章云计算平台及关键技术 主服务器负责管理元数据,存储文件和块的名空间、文件到块之间的映射关系以及每个块副本的存储位置;块服务器存储块数据,文件被分割成为固定尺寸(64MB)的块,块服务器把块作为Linux文件保存在本地硬盘上。为了保证可靠性,每个块被缺省保存3个备份。主服务器通过客户端向块服务器发送数据请求,而块服务器则将取得的数据直接返回给客户端。第3章云计算平台及关键技术 图31GFS的体系结构 第3章云计算平台及关键技术 2.IBM的的“蓝云蓝云”计算平台计算平台I
3、BM的“蓝云(BlueCloud)”计算平台由一个数据中心、IBMTivoli监控(TivoliMonitoring)软件、IBMDB2数据库、IBMTivoli部署管理(TivoliProvisioningManager)软件、IBMWebSphere应用服务器(ApplicationServer)以及开源虚拟化软件和一些开源信息处理软件共同组成,如图32所示。“蓝云”采用了Xen、PowerVM虚拟技术和Hadoop技术,以帮助客户构建云计算环境。“蓝云”软件平台的特点主要体现在虚拟机以及所采用的大规模数据处理软件Hadoop。该体系结构图侧重于云计算平台的核心后端,未涉及用户界面。由于该
4、架构是完全基于IBM公司的产品设计的,所以也可以理解为“蓝云”产品架构。第3章云计算平台及关键技术 图32IBM“蓝云”的体系结构 第3章云计算平台及关键技术 3.Sun的云基础设施的云基础设施Sun提出的云基础设施体系结构包括服务、应用程序、中间件、操作系统、虚拟服务器、物理服务器等6个层次。图33形象地体现了“云计算可描述在从硬件到应用程序的任何传统层级提供的服务”的观点。第3章云计算平台及关键技术 图33Sun的云计算平台 第3章云计算平台及关键技术 4.微软的微软的WindowsAzure云平台云平台如图34所示,微软的WindowsAzure云平台包括4个层次。底层是全球基础服务层(
5、GlobalFoundationService,GFS),由遍布全球的第四代数据中心构成;云基础设施服务层(CloudInfrastructureService)以WindowsAzure操作系统为核心,主要从事虚拟化计算资源管理和智能化任务分配;WindowsAzure之上是一个应用服务平台,它发挥着构件(buildingblock)的作用,为用户提供一系列的服务,如Live服务、NET服务、SQL服务等;最上层是客户服务层,如WindowsLive、OfficeLive、ExchangeOnline等。第3章云计算平台及关键技术 图34微软的WindowsAzure云平台架构 第3章云计算
6、平台及关键技术 5.Amazon的弹性计算云的弹性计算云Amazon是最早提供云计算服务的公司之一,该公司的弹性计算云(ElasticComputeCloud,EC2)平台建立在公司内部的大规模计算机、服务器集群上,为用户提供网络界面操作在“云端”运行的各个虚拟机实例(Instance)。用户只需为自己所使用的计算平台实例付费,运行结束后,计费也随之结束。弹性计算云用户使用客户端通过SOAPoverHTTPS协议与Amazon弹性计算云内部的实例进行交互,如图35所示。弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,在用户具有充分灵活性的同时,也减轻了云计算平台拥有者(Amazon公
7、司)的管理负担。弹性计算云中的每一个实例代表一个运行中的虚拟机。用户对自己的虚拟机具有完整的访问权限,包括针对此虚拟机操作系统的管理员权限。虚拟机的收费也是根据虚拟机的能力进行费用计算的,实际上,用户租用的是虚拟的计算能力。第3章云计算平台及关键技术 图35Amazon的弹性计算云 第3章云计算平台及关键技术 6.学术领域提出的云平台学术领域提出的云平台LuisM.Vaquero等人从云计算参与者的角度设计了一种云计算平台的层次结构。该结构中,服务提供商负责为服务消费者提供通过网络访问的各种应用服务,基础架构提供商以服务的形式提供基础设施给服务提供商,从而降低服务提供商的运行成本,提供了更大灵
8、活性和可伸缩性。美国伊利诺伊大学(UniversityofIllinois)的RobertL.Grossman等人提出并实现了一种基于高性能广域网的云计算平台Sector/Sphere,实验测试显示性能方面优于Hadoop。澳大利亚墨尔本大学(UniversityofMelbourne)的RajkumarBuyya等人提出了一种面向市场资源分配的云计算平台原型,其中包括用户(User/Broker)、服务等级协议资源分配(SLAResourceAllocator)、虚拟机(VM)、物理机器(PhysicalMachine)等4个实体(层次)。第3章云计算平台及关键技术 3.2云计算的关键技术云
9、计算的关键技术1.快速部署快速部署(RapidDeployment)自数据中心诞生以来,快速部署就是一项重要的功能需求。数据中心管理员和用户一直在追求更快、更高效、更灵活的部署方案。云计算环境对快速部署的要求将会更高。首先,在云环境中资源和应用不仅变化范围大而且动态性高。用户所需的服务主要采用按需部署方式。其次,不同层次云计算环境中服务的部署模式是不一样的。另外,部署过程所支持的软件系统形式多样,系统结构各不相同,部署工具应能适应被部署对象的变化。第3章云计算平台及关键技术 2.资源调度资源调度(ResourceDispatching)资源调度是指在特定环境下,根据一定的资源使用规则,在不同资
10、源使用者之间进行资源调整的过程。这些资源使用者对应着不同的计算任务,每个计算任务在操作系统中对应于一个或者多个进程。虚拟机的出现使得所有的计算任务都被封装在一个虚拟机内部。虚拟机的核心技术是虚拟机监控程序,它在虚拟机和底层硬件之间建立一个抽象层,把操作系统对硬件的调用拦截下来,并为该操作系统提供虚拟的内存和CPU等资源。目前VMwareESX和CitrixXenServer可以直接运行在硬件上。由于虚拟机具有隔离性,可以采用虚拟机的动态迁移技术来完成计算任务的迁移。第3章云计算平台及关键技术 3.大规模数据处理大规模数据处理(MassiveDataProcessing)以互联网为计算平台的云计
11、算会广泛地涉及大规模数据处理任务。由于大规模数据处理操作非常频繁,很多研究者在从事支持大规模数据处理的编程模型方面的研究。当今世界最流行的大规模数据处理的编程模型可以说是由Google公司所设计的MapReduce编程模型。MapReduce编程模型将一个任务分成很多更细粒度的子任务,这些子任务能够在空闲的处理节点之间调度,使得处理速度越快的节点处理越多的任务,从而避免处理速度慢的节点延长整个任务的完成时间。第3章云计算平台及关键技术 4.大规模消息通信大规模消息通信(MassiveMessageCommunication)云计算的一个核心理念就是资源和软件功能都是以服务的形式发布的,不同服务
12、之间经常需要进行消息通信协作,因此,可靠、安全、高性能的通信基础设施对于云计算的成功至关重要。异步消息通信机制可以使得云计算每个层次中的内部组件之间及各个层次之间解耦合,并且保证云计算服务的高可用性。目前,云计算环境中的大规模数据通信技术仍处于发展阶段。第3章云计算平台及关键技术 5.大规模分布式存储大规模分布式存储(MassiveDistributedStorage)分布式存储要求存储资源能够被抽象表示和统一管理,并且能够保证数据读/写操作的安全性、可靠性、性能等各方面要求。分布式文件系统允许用户像访问本地文件系统一样访问远程服务器的文件系统,用户可以将自己的数据存储在多个远程服务器上,分布
13、式文件系统基本上都有冗余备份机制和容错机制,以保证数据读/写的正确性。云环境的存储服务基于分布式文件系统并根据云存储的特征做了相应的配置和改进。典型的分布式文件系统有Google公司设计的可伸缩的GoogleFileSystem(GFS)。目前,在云计算环境下的大规模分布式存储方面已经有了一些研究成果和应用。Google公司设计的用来存储大规模结构化数据的分布式存储系统BigTable用来将网页存储成分布式的、多维的、有序的图。第3章云计算平台及关键技术 6.虚拟化技术虚拟化技术虚拟化的核心理念是以透明的方式提供抽象的底层资源,这种抽象方法并不受地理位置或底层资源的物理配置所限。就技术本身而言
14、,它并不是全新的事物,早在20世纪70年代就已经在IBM的虚拟计算系统中得以应用。随着云计算的兴起,虚拟化技术再次成为研究热点,究其原因主要在于:首先,计算机系统在功能变得日益强大的同时,本身也越来越难以管理;其次,当计算系统发展到以用户为中心的阶段时,人们更关心的是如何通过接口和服务来满足复杂多变的用户需求。由于虚拟化技术能够灵活组织多种计算资源,解除上、下层资源的绑定和约束关系,提升资源使用效率,发挥资源聚合效能,为用户提供个性化和普适化的资源使用环境,因而得到高度重视。第3章云计算平台及关键技术 利用虚拟化技术,能够有效整合数据中心所有的硬件资源、虚拟服务器和其他基础设施,并通过高效的管
15、理和调度为上层应用提供动态、可伸缩、灵活的基础设施平台,从而满足云计算随需扩展、按需部署、即需即用的需求。不过,各种虚拟化技术各有优势和不足,例如目前主流的半虚拟化技术,其虚拟机管理系统带来的CPU额外开销较少但内存性能开销较大,因此原有的CPU密集型应用能够较好地迁移到虚拟化平台上来,而内存或I/O密集型应用(如数据库等)就会遇到较大的性能问题。因此,如何融合各种虚拟化方法的优势,按照应用任务的需求,将各种资源进行动态共享和灵活配置,使计算系统具备按需构建能力,都是云计算中需要深入研究的问题。第3章云计算平台及关键技术 3.3云计算的计算模型云计算的计算模型 1.GFSGoogle文件系统文
16、件系统桌面应用和Internet应用有着巨大的差别。GFS是Google公司开发的专属分布式文件系统,为了在大量廉价硬件上提供有效、可靠的数据访问而设计。GFS针对Google的核心数据存储和使用需求进行优化,用于保存搜索引擎所产生的大量数据。Google的Internet搜索计算借鉴函数式编程模式,函数式操作不会修改原始数据而总是产生新的计算结果数据。因而GFS的应用特点是产生大量的巨型文件,通常以读为主,可以追加但很少重写,具有非常高的吞吐率。第3章云计算平台及关键技术 GFS的设计将节点分成两类:一个主节点和大量的块服务器。块服务器用来保存数据文件。每个数据文件被划分成64MB大小的块,
17、每个块都有一个唯一的64位标签以维护文件到块的逻辑映射。主节点只是存储数据块的元数据,包括64位标签到块位置及其组成的文件的映射表,数据块副本位置,哪些进程正在读/写或“按下”某一数据块的“快照”以便复制副本等信息。主节点定期从块服务器接收、更新,以保持元数据的最新状态。变更操作授权通过限时租用实现,主节点在一定时期内只限时给一个进程授予修改数据块的权限。被修改的数据块服务器作为主数据块将更改信息同步到其他块服务器上的副本,通过多个冗余副本提供可靠性和可用性。第3章云计算平台及关键技术 应用程序通过查询主节点从而获取文件/块的地址,然后直接和数据块服务器联系并最终取得相应的数据文件。目前在Go
18、ogle中有超过200个Google文件系统集群,一个集群可以由1000甚至5000台机器构成。Google证明了用最廉价的机器搭建的云同样可以提供高可靠的计算和存储系统。第3章云计算平台及关键技术 2.BigTable数据库系统数据库系统BigTable是Google构建在GFS及Chubby(一种分布式锁服务)之上的一种压缩、高效的专属数据库系统,是一种结构化的分布式存储系统。这种数据库是一个稀疏的分布式多维度有序映射表,具有支持行关键字、列关键字以及时间戳3个维度的索引,允许客户端动态地控制数据的表现形式、存储格式和存储位置,满足应用程序对读/写局部化的具体要求。数据库表通过划分多个子表
19、使其保持约200MB大小,从而实现针对GFS的优化。子表在GFS中的位置记录在多个特殊的被称为META1的子表的数据库中,通过查询唯一的META0子表来定位META1子表。BigTable的设计目的是为了支持PB级数据库,可以分布在上万台机器上,更多的机器可以方便加入而不必重新配置。第3章云计算平台及关键技术 3.MapReduce分布式计算编程模型分布式计算编程模型GFS和BigTable用于解决大规模分布环境中可靠地存储数据问题,而MapReduce则是Google提出的一个软件框架,以支持在大规模集群上的大规模数据集(通常大于1TB)的并行计算。MapReduce是真正涉及云计算的计算模
20、型。1)MapReduce的软件架构MapReduce架构设计受到函数式程序设计中的两个常用函数映射(Map)和化简(Reduce)的启发,用来开发Google搜索结果分析时大量计算的并行化处理,比如文献词频的计算等。在函数式程序设计中,Map和Reduce都是构建高阶函数的工具。第3章云计算平台及关键技术 映射将某个给定的作用于某类元素的函数应用于该类元素的列表,并返回至一个新的列表,其中的元素是该函数作用到原列表中的每个元素得到的结果。比如:Mapfv1,v2,vn=f(v1),f(v2),f(vn)。从这里可以看出,这些f函数的计算是可以并行计算的。MapReduce计算模型对于有高性能
21、要求的应用以及并行计算领域的需求非常适合。当需要对大量数据做同样计算的时候,就可以对数据进行划分,然后将划分的数据分配到不同的机器上分别作计算。第3章云计算平台及关键技术 化简将一个列表中的元素按某种计算方式(函数)进行合并。比如把一个二元运算f扩展到n元运算:Reducefv1,v2,vn=f(v1,(reducefv2,vn)=f(v1,f(v2,(reducefv3,vn)=f(v1,f(v2,f(f(vn-1,vn)。MapReduce计算模型将前面映射操作所算得的中间结果采用化简进行合并,以得到最后结果。第3章云计算平台及关键技术 2)MapReduce的执行过程MapReduce通
22、过将输入数据自动切片而将映射调用分布在多台机器上,进而再对中间结果的键值空间进行划分而将化简调用分布到多台机器上。首先将数据文件切分成M片,然后启动集群上的多个程序拷贝。一份特殊的拷贝是主节点,而其他的则均为从节点。主节点将“映射”或“化简”的任务分配给空闲的从节点。被赋予映射任务的从节点读入相应输入数据片内容,分析其键值对并将其传递给用户定义的映射函数。映射函数产生的中间结果的键值对在内存中缓存。第3章云计算平台及关键技术 缓存的键值对定期写入本地磁盘,由划分函数分成R块。这些缓存的键值对在本地磁盘中的地址被传回主节点,由其负责将地址转发给化简从节点。当一个化简从节点收到主节点发来的地址时,
23、它用远程过程调用读取映射缓存在磁盘里的数据。当化简从节点从其分块读取所有中间数据时,先按键值对其排序,从而使相同键的所有数据被放置在一起。化简从节点迭代处理这些有序的中间数据,针对每个中间键值,MapReduce计算模型将对应的一组中间值传给用户的化简函数。化简函数的输出被追加到该化简块。当所有映射和化简任务完成后,主节点则会通知用户程序。此时,用户程序中的MapReduce调用返回到用户代码。完成后MapReduce执行的输出结果就在R个输出文件中。用户可以将其合并,也可以作为下一次MapReduce调用或其他分布式应用的输入之用。第3章云计算平台及关键技术 4.ApacheHadoop分布
24、式系统基础架构分布式系统基础架构Google的GFS、BigTable和MapReduce技术是公开的,但是其实现却是私有的。该项技术在开源社区里最具代表性的实现就是Apache软件基金会Hadoop项目了。Hadoop是受Google的MapReduce和GFS的启发而开发的一个开源Java软件框架,包括一个基于函数式编程的并行计算模型和分布式文件系统。Hadoop中还有一个数据库HBase,它实现了一个类似BigTable的分布式数据库,用于支持数据密集型分布式应用,可以在上千个节点上运行,支持PB级数据量。Hadoop最初开发是用于支持Nutch搜索引擎项目,后来Yahoo投入大量资金并
25、在其Web搜索广告业务中广泛地使用Hadoop。IBM和Google则发起一项活动,采用Hadoop以支持大学的分布式计算机编程课程,这也极大促进了云计算在全球的普及。第3章云计算平台及关键技术 3.4小结小结云计算是一种新型的超级计算方式,在资源部署、数据存储等方面具有自身独特的技术。本章简单介绍了云计算中几种关键技术。Google提出了GFS、BigTable和MapReduce技术,很好地解决了云中服务器群之间的通信和协作。目前,云计算还没有一个统一的标准,虽然Amazon、Google、IBM、Microsoft等云计算平台已经为很多用户使用,但是云计算在行业标准、数据安全等方面还面临着各种问题,这些问题的解决需要技术的进一步发展。