龙源期刊网 http://www.qikan.com.cn
云计算的关键技术及系统实例的实现
作者:段春乐,丁照宇
来源:《电脑知识与技术》2011年第26期
摘要:云计算是一种新兴的计算模式,它是在网格计算的基础上发展而来的。介绍了云计算的关键技术,设计并实现了自己的云计算系统ClouSys,它具备了云计算的一些基本特点如计算和存储的整合、计算向存储迁移、文件的分布式存储、计算的并行化等。 关键词:云计算;并行计算;分布式;GFS MapReduce
中图分类号:TP301.6 文献标识码:A文章编号:1009-3044(2011)26-6344-02
自2006年被Google提出之后,云计算的概念就在ICT产业界产生了巨大反响。云计算是一种全新的领先信息技术,结合IT技术和互联网实现超级计算和存储能力,它的目标是要像供水、供电、金融系统一样,把“计算力”作为一种公用基础设施、组织大规模的信息和计算资源,面向用户提供便捷、全面的公众服务,满足个人和社会信息服务的需要。是分布式计算(Distributed Computing)、并行计算(Parallel Computing)、网格计算(Grid Computing)、效用计算(Utility Computing)和虚拟化(Virtualization)等传统计算机和网络技术发展融合的产物[1]。
目前,云计算有多种定义,还没有统一的标准。美国国家标准和技术研究所颁布的最新版《NIST云计算工作定义》[2]试行稿定义云计算为:用户可以方便的、按需通过网络访问共享资源池(网络、服务器、存储、应用和服务等),具有快速部署,最小的管理代价或最少的服务提供商干预的一种新型IT基础运行模式。NIST给出云计算以下描述:
1)五个关键特征:按需自服务、宽带接入、虚拟化的资源“池”、快速弹性架构和可测量的服务。
2)三个服务模型:云软件作为服务(SaaS)、云平台作为服务(PaaS)、云基础设施作为服务(IaaS)。
3)四个部署模型:公有云、私有云、社区云和混合云。
云计算已经成为未来发展的重要趋势之一,是业界中的热点名词和技术,吸引了不同技术领域巨头,IBM、微软、Google、Amazon等信息巨头都已经参与到云计算研究和开发中。这些业界巨头依托已有的技术优势,架构不同的云计算平台,因此,对云计算关键技术的研究有助于云计算理论及实现架构标准的统一。同时,开发自己的云计算系统,能更清楚地剖析云计算的各项关键技术,如计算和存储的整合、计算向存储迁移、文件的分布式存储、计算的并行化等。
龙源期刊网 http://www.qikan.com.cn
1 云计算的关键技术
云计算是一种新型的计算模式,它在数据存储、编程模型、数据管理等方面都有自己的技术特点,下面对云计算的关键技术着重描述。 1.1 数据存储技术
云计算数据存储技术的典型代表有谷歌的GFS和Hadoop的HDFS,HDFS的原型来自于GFS。为了满足Google迅速增长的数据处理要求,在对自己应用的负载情况和技术环境分析的基础上,Google设计并实现了Google文件系统(GFS)。Google文件系统是一个可扩展的、面向大规模数据密集型应用的的分布式文件系统,具有可伸缩性。GFS运行在廉价的普通硬件设备上,是一种面向不可信服务器节点而设计的文件系统,但是它对节点失效有很好的应对措施。提供了灾难冗余的能力,可以给大量的用户提供总体性能较高的服务。
一个GFS集群主要由一个Master节点和众多chunkserver(大块设备)构成,同时能被多个客户端访问,所有的服务器节点都是普通的Linux机器。
Master节点管理文件系统元数据,包括名字空间、访问控制信息、文件和Chunk的映射信息、以及当前Chunk的位置信息。同时,它还监控着Chunk在Chunk服务器之间的迁移,并使用心跳信息周期地和每个Chunk服务器通讯,发送指令到各个Chunk服务器,接收Chunk服务器的状态信息。
GFS存储的文件被分割成固定大小的64k文件块。创建文件块的时候,Master服务器会给每个文件块分配一个全球唯一的、不变的64位的Chunk标识。Chunk服务器以Linux文件的形式保存文件块到本地硬盘上,并根据指定的Chunk标识和字节范围读写数据块。为了保证数据的安全性,每个块都会复制到多个数据块服务器上。 1.2 编程模型
Google作为云计算概念的提出者选择了MapReduce作为其处理海量数据的架构,Hadoop的跟进更使MapReduce深入人心。MapReduce是一个编程模型,可以处理和生成超大规模的数据集。MapReduce架构的程序能够在大量的普通配置的计算机上实现并行化处理。 MapReduce编程模型的原理是:利用一个输入Key/value对集合产生一个输出key/value对集合。MapReduce库的用户用两个函数表达这个计算:Map和Reduce[3]。
用户程序首先调用MapReduce库将输入文件分割为M个数据片段,然后在多台机器上并行执行用户自定义的Map函数,接受一个输入的Key/value对值,产生一个中间key/value对值的集合。而后使用MapReduce库的分区函数把所有具有相同中间key值的中间value值集合在一起,形成R个不同分区,然后传递给Reduce函数,用户自定义的Reduce函数接受一个中间Key的值和相关的一个value值的集合。Reduce函数合并这些value值,形成一个较小的
龙源期刊网 http://www.qikan.com.cn
value值的集合。Reduce调用也被分布到多台机器上执行。一般的,每次Reduce函数调用只产生0或1个输出value值。用户定义的Map和Reduce函数都有相关联的类型: Map(k1,v1)->list(k2,v2) Reduce(k2,list(v2))->list(v2) 1.3 数据管理技术
为了实现大规模数据的分布式计算,Google设计、实现并部署了一个分布式的结构化数据存储系统——Bigtable。BigTable为客户提供了简单的数据模型,利用这个数据模型,客户可以动态控制数据的分布和格式。Bigtable是一个稀疏的、分布式的、持久化存储的多维度排序Mao,Map的索引是行关键字、列关键字以及时间戳,Map中的value都是一个未经解析的byte数组:(row:string,column:string,time:int64)->string
以海量网页的存储为例,设计并实现了Webtable表。在Webtable里,使用URL作为行关键字,使用网页的某些属性作为列名,网页的内容存在“contents:”列中,并用获取该网页的时间戳作为标识。
BigTable通过行关键字的字典顺序来组织数据,表中的每个行都可以动态分区,每个分区叫做一个“Tablet”,Tablet是数据分布和负载均衡调整的最小单位。表中的行关键可以是任意的字符串,对同一个行关键字的读或者写操作都是原子的。
列关键字组成的集合叫做“列族”,列组是访问控制的基本单位。列关键字的命名语法如下:列族:限定词。列族的名字必须是可打印的字符串,而限定词的名字可以使任意的字符串。
2 系统实例
云计算系统是一个庞大而综合的系统,不是单个人能完成的。所以本章设计并实现的云计算系统CloudSys只是具备了云计算的一些基本特点,如计算和存储的整合、计算向存储的迁移、文件的分布式存储、计算的并行化等。 2.1 系统架构
云计算系统CloudSys由四个组成部分:主服务器MainSever、块服务器集群BlockServer和实现API接口的应用服务器以及用户节点,如图1所示。 2.2 系统功能分析