中国自动化学会专家咨询工作委员会指定宣传媒体
新闻详情
isee-

云计算及其关键技术

http://www.gkong.com 2011-01-10 17:26 来源:中国自动化学会专家咨询工作委员会

    云计算(CloudComputing)是一种新近提出的计算模式。是分布式计算(DistributedComputing)、并行计算(ParallelComputing)和网格计算(GridComputing)的发展。

  目前,亚马逊、微软、谷歌、IBM、英特尔等公司纷纷提出了“云计划”。例如亚马逊的AWS(AmazonWebServices)、IBM和谷歌联合进行的“蓝云”计划等。这对云计算的商业价值给予了巨大的肯定。同时学术界也纷纷对云计算进行深层次的研究。例如谷歌同华盛顿大学以及清华大学合作,启动云计算学术合作计划(AcademicCloudComputingInitiative),推动云计算的普及,加紧对云计算的研究。卡内基梅隆大学等对数据密集型的超级计算(DataIntensiveSuperComputing,DISC)进行研究,本质上也是对云计算相关技术开展研究。

  IDC的调查显示,未来五年云计算服务将急速增长,预期2012年市场规模可达420亿美元。目前企业导入云计算已逐渐普及,并且有逐年成长趋势。估计在2012年,企业投入在云计算服务的支出将占整体IT成本的25%,甚至在2013年提高至IT总支出的三分之一。

  由此可见,在各大公司以及学术界的共同推动下,云计算技术将会持续发展。云计算有着广泛的应用前景。如表1所示。

  云计算在天文学、医学等各个领域有着广泛的应用前景。趋势科技和瑞星等安全厂商纷纷提出了“安全云”计划。如今,每天有2万多种新的病毒和木马产生,传统的通过更新用户病毒库的防毒模式,受到了严峻的挑战,该模式使用户端的病毒库过于庞大。趋势科技和瑞星的“安全云”将病毒资料库放在“云”端,与客户端通过网络相连,当“云”在网络上发现不安全链接时,可以直接形成判断,阻止其进入用户机器,从根本上保护机器的安全。

  据趋势科技大中华区执行总裁张伟钦介绍,趋势科技已投入了大量资金,在全球数个地方建设了新型数据中心。同时,趋势科技还花费了1000多万美元,租借了34000多台服务器,构建了一个服务遍及全球的“安全云”。目前趋势科技已将公司中低端的部分产品线放到“云安全”计划中,而高端的大部分产品线,仍在准备过程中。

  谷歌提供的Gmail、GoogleEarth、GoogleAnalytics等服务都基于其云计算服务器运行。谷歌基于云计算提供的翻译服务具有现今最好的性能。对互联网和美国人生活的一项研究显示,大约70%的在线用户使用以上“云计算”服务。

  1云计算的定义

  目前,云计算没有统一的定义,当前云计算的定义主要包括如下几种。

  1)维基百科给云计算下的定义。云计算将IT相关的能力以服务的方式提供给用户,允许用户在不了解提供服务的技术、没有相关知识以及设备操作能力的情况下,通过Internet获取需要的服务。

  2)中国云计算网将云计算定义为:云计算是分布式计算(DistributedComputing)、并行计算(ParallelComputing)和网格计算(GridComputing)的发展,或者说是这些科学概念的商业实现。

  3)文献[8]在综合多个云计算的定义之后,给“云”下了如下定义。云是一个包含大量可用虚拟资源(例如硬件、开发平台以及I/O服务)的资源池。这些虚拟资源可以根据不同的负载动态地重新配置,以达到更优化的资源利用率。这种资源池通常由基础设施提供商按照服务等级协议(ServiceLevelAgreement,SLA)采用用时付费(Pay2Per2Use,PPU)的模式开发管理。

  对比上述定义,可以发现,文献[6]和文献[8]中给出的定义的相似之处在于它们都提到了云计算提供服务。文献[6]中的定义主要从云计算用户的角度给出定义,即用户在不了解具体实现的情况下通过Internet获取服务。文献[7]从云计算的发展脉络的角度给出定义,主要说明了云计算的历史。文献[8]给出的定义则是从云计算提供者的角度来给出定义,定义了云计算的后台实现方式,以及管理模式。但是,这些定义都仅从一个方面定义云,并不完善。结合上述定义,可以总结出云计算的一些本质特征,即分布式的计算和存储特性,高扩展性,用户友好性,良好的管理性,用时付费等。

  云计算技术具有以下特点。

  1)云计算系统提供的是服务。服务的实现机制对用户透明,用户无需了解云计算的具体机制,就可以获得需要的服务。

  2)用冗余方式提供可靠性。云计算系统由大量商用计算机组成集群向用户提供数据处理服务。随着计算机数量的增加,系统出现错误的概率大大增加。在没有专用的硬件可靠性部件的支持下,采用软件的方式,即数据冗余和分布式存储来保证数据的可靠性。

  3)高可用性。通过集成海量存储和高性能的计算能力,云能提供较高的服务质量。云计算系统可以自动检测失效节点,并将失效节点排除,不影响系统的正常运行。

  4)高层次的编程模型。云计算系统提供高层次的编程模型。用户通过简单学习,就可以编写自己的云计算程序,在“云”系统上执行,满足自己的需求。现在云计算系统主要采用Map2Reduce模型。

  5)经济性。组建一个采用大量的商业机组成的集群相对于同样性能的超级计算机花费的资金要少很多。

  6)服务多样性。用户可以支付不同的费用,以获得不同级别的服务等。为了更好地定义云计算,必须从云计算的服务使用者,服务提供者,组织方式,内部实现机制等方面同时定义。根据现有定义的不足,本文定义云计算为:“云计算是由网格计算发展而来的,前台采用用时付费的方式通过Internet向用户提供服务。

  云系统后台由大量的集群使用虚拟机的方式,通过高速互联网络互连,组成大型的虚拟资源池。这些虚拟资源可自主管理和配置。用数据冗余的方式保证虚拟资源的高可用性。并具有分布式存储和计算、高扩展性、高可用性、用户友好性等特征。”

  2云计算的关键技术

  云计算是一种新型的超级计算方式,以数据为中心,是一种数据密集型的超级计算。在数据存储、数据管理、编程模式等多方面具有自身独特的技术。同时涉及了众多其他技术,如表2所示。本章主要介绍云计算特有的技术,包括数据存储技术,数据管理技术,编程模式等。其他相关技术请阅读给出的参考文献。

  2.1数据存储技术

  为保证高可用、高可靠和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,即为同一份数据存储多个副本。另外,云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务。因此,云计算的数据存储技术必须具有高吞吐率和高传输率的特点。云计算的数据存储技术主要有谷歌的非开源的GFS(GoogleFileSystem)和Hadoop开发团队开发的GFS的开源实现HDFS(HadoopDistributedFileSystem)。

  大部分IT厂商,包括雅虎、英特尔的“云”计划采用的都是HDFS的数据存储技术。云计算的数据存储技术未来的发展将集中在超大规模的数据存储、数据加密和安全性保证以及继续提高I/O速率等方面。

  以GFS为例,GFS是一个管理大型分布式数据密集型计算的可扩展的分布式文件系统。它使用廉价的商用硬件搭建系统并向大量用户提供容错的高性能的服务。

  GFS和普通的分布式文件系统有以下区别,如表3所示。GFS系统由一个Master和大量块服务器构成。Master存放文件系统的所有元数据,包括名字空间、存取控制、文件分块信息、文件块的位置信息等。GFS中的文件切分为64MB的块进行存储。在GFS文件系统中,采用冗余存储的方式来保证数据的可靠性。每份数据在系统中保存3个以上的备份。为了保证数据的一致性,对于数据的所有修改需要在所有的备份上进行,并用版本号的方式来确保所有备份处于一致的状态。客户端不通过Master读取数据,避免了大量读操作使Master成为系统瓶颈。

  客户端从Master获取目标数据块的位置信息后,直接和块服务器交互进行读操作。GFS的写操作将写操作控制信号和数据流分开,如图1所示。即客户端在获取Master的写授权后,将数据传输给所有的数据副本,在所有的数据副本都收到修改的数据后,客户端才发出写请求控制信号。在所有的数据副本更新完数据后,由主副本向客户端发出写操作完成控制信号。具体请见文献[17]。当然,云计算的数据存储技术并不仅仅只是GFS,其他IT厂商,包括微软、Hadoop开发团队也在开发相应的数据管理工具。本质上是一种分布式的数据存储技术,以及与之相关的虚拟化技术,对上层屏蔽具体的物理存储器的位置、信息等。快速的数据定位、数据安全性、数据可靠性以及底层设备内存储数据量的均衡等方面都需要继续研究完善。

  2.2数据管理技术

  云计算系统对大数据集进行处理、分析向用户提供高效的服务。因此,数据管理技术必须能够高效地管理大数据集。其次,如何在规模巨大的数据中找到特定的数据,也是云计算数据管理技术所必须解决的问题。云计算的特点是对海量的数据存储、读取后进行大量的分析,数据的读操作频率远大于数据的更新频率,云中的数据管理是一种读优化的数据管理。因此,云系统的数据管理往往采用数据库领域中列存储的数据管理模式。将表按列划分后存储。

  云计算的数据管理技术中最著名的是谷歌在文献[11]提出的BigTable数据管理技术。由于采用列存储的方式管理数据,如何提高数据的更新速率以及进一步提高随机读速率是未来的数据管理技术必须解决的问题。

  以BigTable为例。BigTable数据管理方式设计者———Google给出了如下定义:“BigTable是一种为了管理结构化数据而设计的分布式存储系统,这些数据可以扩展到非常大的规模,例如在数千台商用服务器上的达到PB(Petabytes)规模的数据。”BigTable对数据读操作进行优化,采用列存储的方式,提高数据读取效率。

  BigTable管理的数据的存储结构为:<row:string,column:string,time:int64>->string。BigTable的基本元素是:行,列,记录板和时间戳。其中,记录板是一段行的集合体。如图2所示。BigTable中的数据项按照行关键字的字典序排列,每行动态地划分到记录板中。每个节点管理大约100个记录板。时间戳是一个64位的整数,表示数据的不同版本。列族是若干列的集合,BigTable中的存取权限控制在列族的粒度进行。BigTable在执行时需要三个主要的组件:链接到每个客户端的库,一个主服务器,多个记录板服务器。主服务器用于分配记录板到记录板服务器以及负载平衡,垃圾回收等。记录板服务器用于直接管理一组记录板,处理读写请求等。为保证数据结构的高可扩展性,BigTable采用三级的层次化的方式来存储位置信息,如图3所示。

  其中第一级的Chubbyfile中包含RootTablet的位置,RootTablet有且仅有一个,包含所有METADATAtablets的位置信息,每个METADATAtablets包含许多UserTable的位置信息。图当客户端读取数据时,首先从Chubbyfile中获取RootTablet的位置,并从中读取相应METADATAtablet的位置信息。接着从该METADATAtablet中读取包含目标数据位置信息的UserTable的位置,然后从该UserTable中读取目标数据的位置信息项。据此信息到服务器中特定位置读取数据。具体见文献[11]。

  这种数据管理技术虽然已经投入使用,但是仍然具有部分缺点。例如,对类似数据库中的Join操作效率太低,表内数据如何切分存储,数据类型限定为string类型过于简单等。而微软的DryadLINQ系统则将操作的对象封装为.NET类,这样有利于对数据进行各种操作,同时对Join进行了优化,得到了比BigTable+MapReduce更快的Join速率和更易用的数据操作方式。

  2.3编程模型

  为了使用户能更轻松地享受云计算带来的服务,让用户能利用该编程模型编写简单的程序来实现特定的目的,云计算上的编程模型必须十分简单。必须保证后台复杂的并行执行和任务调度向用户和编程人员透明。云计算大部分采用Map2Reduce的编程模式。现在大部分IT厂商提出的“云”计划中采用的编程模型,都是基于Map2Reduce的思想开发的编程工具。Map2Reduce不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Map2Reduce这种编程模型并不仅适用于云计算,在多核和多处理器、cellprocessor以及异构机群上同样有良好的性能。该编程模式仅适用于编写任务内部松耦合、能够高度并行化的程序。

  如何改进该编程模式,使程序员得能够轻松地编写紧耦合的程序,运行时能高效地调度和执行任务,是Map2Reduce编程模型未来的发展方向。Map2Reduce是一种处理和产生大规模数据集的编程模型,程序员在Map函数中指定对各分块数据的处理过程,在Reduce函数中指定如何对分块数据处理的中间结果进行归约。用户只需要指定map和reduce函数来编写分布式的并行程序。当在集群上运行Map2Reduce程序时,程序员不需要关心如何将输入的数据分块、分配和调度,同时系统还将处理集群内节点失败以及节点间通信的管理等。图4给出了一个Map2Reduce程序的具体执行过程。

  从图4可以看出,执行一个Map2Reduce程序需要五个步骤:输入文件、将文件分配给多个worker并行地执行、写中间文件(本地写)、多个Reduceworkers同时运行、输出最终结果。本地写中间文件在减少了对网络带宽的压力同时减少了写中间文件的时间耗费。执行Reduce时,根据从Master获得的中间文件位置信息,Reduce使用远程过程调用,从中间文件所在节点读取所需的数据。Map2Reduce模型具有很强的容错性,当worker节点出现错误时,只需要将该worker节点屏蔽在系统外等待修复,并将该worker上执行的程序迁移到其他worker上重新执行,同时将该迁移信息通过Master发送给需要该节点处理结果的节点。

  Map2Reduce使用检查点的方式来处理Master出错失败的问题,当Master出现错误时,可以根据最近的一个检查点重新选择一个节点作为Master并由此检查点位置继续运行。具体请见文献[12]。Map2Reduce仅为编程模式的一种,微软提出的DryadLINQ是另外一种并行编程模式。但它局限于.NET的LINQ系统同时并不开源,限制了它的发展前景。Map2Reduce作为一种较为流行的云计算编程模型,在云计算系统中应用广阔。但是基于它的开发工具Hadoop并不完善。特别是其调度算法过于简单,判断需要进行推测执行的任务的算法造成过多任务需要推测执行,降低了整个系统的性能。改进Map2Reduce的开发工具,包括任务调度器、底层数据存储系统、输入数据切分、监控“云”系统等方面是将来一段时间的主要发展方向。另外,将Map2Reduce的思想运用在云计算以外的其他方面也是一个流行的研究方向。

  3云计算和其他超级计算的区别

  3.1云计算与网格计算的区别

  IanFoster将网格定义为:支持在动态变化的分布式虚拟组织(VirtualOrganizations)间共享资源,协同解决问题的系统。所谓虚拟组织就是一些个人、组织或资源的动态组合。图5和图6分别为云及网格的结构示意图。图5显示,云计算是一种生产者—消费者模型,云计算系统采用以太网等快速网络将若干集群连接在一起,用户通过因特网获取云计算系统提供的各种数据处理服务。图6显示,网格系统是一种资源共享模型,资源提供者亦可以成为资源消费者,网格侧重研究的是如何将分散的资源组合成动态虚拟组织。主要区别如表4所示。

  云计算和网格计算的一个重要区别在于资源调度模式。云计算采用集群来存储和管理数据资源,运行的任务以数据为中心。即调度计算任务到数据存储节点运行。而网格计算,则以计算为中心。计算资源和存储资源分布在因特网的各个角落,不强调任务所需的计算和存储资源同处一地。由于网络带宽的限制,网格计算中的数据传输时间占总运行时间的很大一部分。网格将数据和计算资源虚拟化,而云计算则进一步将硬件资源虚拟化,活用虚拟机技术,对失败任务重新执行,而不必重启任务。同时,网格内各节点采用统一的操作系统(大部分为UNIX),而云计算放宽了条件,在各种操作系统的虚拟机上提供各种服务。和网格的复杂管理方式不同,云计算提供一种简单易用的管理环境。另外,网格和云在付费方式上有着显著的不同。网格按照固定的资费标准收费或者若干组织之间共享空闲资源。而云则采用用时付费以及服务等级协议的模式收费。其他区别不再赘述。

  3.2云计算系统与传统超级计算机的区别

  超级计算机拥有强大的处理能力,特别是计算能力。2008年11月17日,最新一期的Top500[30]榜单发布。冠军“RoadRunner”是IBM为美国LosAlamos国家实验室建造的计算机系统。它的运算速度达到了1.026PFLOTP。RoadRuner超级计算机包含12960个IBMPowerXcell8i处理器以及6948个分布于刀片服务器上的AMDOpteron芯片。刀片服务器安装在288个IBMBladCener机架上。RoadRuner拥有80TB的内存,外存使用1.5PB容量的Panasas存储,外存通过10GbTP的以太网进行连接。耗资超过1亿美元。从TOP500对超级计算机的排名方式可以看出,传统的超级计算机注重运算速度和任务的吞吐率。以运算速度为核心进行计算机的研究和开发。而云计算则以数据为中心,同时兼顾系统的运算速度。传统的超级计算机耗资巨大,远超云计算系统。例如,趋势科技花费1000多万美元租用34000多台服务器,构建自身的“安全云”系统。

  4结语

  云计算具有广阔的发展前景,相关的各项关键技术也在迅速发展。首先,当前的云计算系统的能耗过大,因此,减少能耗,提高能源的使用效率,建造高效的冷却系统是当前面临的一个主要问题。例如,谷歌的数据中心的能耗相当于一个小型城市的总能耗。因为,过大的能耗使得数据中心内发热量剧增,要保证云计算系统的正常运行,必须使用高效的冷却系统来保持数据中心在可接受的温度范围内。其次,云计算对面向市场的资源管理方式的支持有限。可以加强相应的服务等级协议,使用户和服务提供者能更好的协商提供的服务质量。另外,需要对云计算的接口进行标准化并且制定交互协议。这样可以支持不同云计算服务提供者之间进行交互,相互合作提供更加强大和更好的服务。再者,需要开发出更易用的编程环境和编程工具,这样可以更加方便地创建云计算应用,拓展云计算的应用领域。最后,虽然云计算还有很多问题需要解决,但是云计算必将得到更大的发展。

版权所有 中华工控网 Copyright©2024 Gkong.com, All Rights Reserved