基于Google云计算的水利信息系统研究

时间:2022-07-28 12:49:21

基于Google云计算的水利信息系统研究

摘要:本文对Google推出的云计算技术方案进行了全面的解析,重点讨论了Google云计算的四个核心技术:GFS、MapReduce和Bigtable,最后提出了基于Google云计算核心技术的水利信息系统技术框架,并论述了其优势及不足。

关键词:云计算;Google;水利信息系统

中图分类号:TP3文献标识码:A文章编号:1007-9599 (2012) 06-0000-02

一、云计算

美国国家技术与标准局(NIST)是这样定义云计算的:云计算是对基于网络的、可配置的共享计算资源池能够方便地、按需地访问的一种模式。所谓的共享计算资源池包括网络、服务器、存储、应用和服务。这个共享计算资源池,就是我们所说的“云”[1]。

从云计算服务的封装方法上讲,云计算可以提供三种类型的服务:IaaS(Infrastructure as a Service,基础设施即服务)、PaaS(Platform as a service,平台即服务)和SaaS(Software as a Service,软件即服务)。

图1-1 云计算的服务类型

如图1-1所示,IaaS将虚拟化的计算资源直接按需提供给客户;PaaS在虚拟化的云计算平台上建立支持多种业务的应用平台,再将开发环境、运行环境提供给客户;SaaS在虚拟化的云计算平台上提供按需定制和快速部署的应用软件服务。

二、Google云计算的关键技术

Google云计算技术的关键技术包括:分布式文件系统GFS、分布式编程模型MapReduce和分布式数据库Bigtable等。其中,GFS提供了海量数据的高效存储和访问的能力,MapReduce提供了一种简单、高效的海量数据的并行处理方法,Bigtable为海量数据的组织和管理提供了方便。

(一)GFS

Google文件系统(Google File System,GFS)是一个大型的分布式文件系统。它为Google云计算提供高效的海量数据存储和访问能力,GFS的系统结构如图2-1[2]所示,GFS将整个系统的节点分为三种角色:Client(客户端)、Master(主服务器)和Chunk Server(数据块服务器):

图2-1 GFS的系统结构

如图2-1所示,GFS系统为上层提供文件服务的过程是:Client首先访问Master节点,获得GFS分配的、将要为其服务的Chunk Server节点的信息,然后Client直接去访问这些Chunk Server以完成数据的存取。

GFS的这种设计思想实现了数据流和控制流的分离。首先,Client与Master节点之间只有控制流,而没有数据流,这就极大地降低了Master节点的负载;另外,Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使整个文件系统的I/O高度并行,系统的整体性能得以提高。

(二)MapReduce

MapReduce[3]是Google提出的一种提供海量数据处理的并行编程模型,用于对大规模的数据集(大于1TB)进行并行处理。MapReduce的核心思想是将需要运算的问题拆解成“Map(映射)”和“Reduce(化简)”这样两个简单的步骤来进行处理,用户只需要提供自己的编写的Map函数和Reduce函数就可以在系统上进行大规模的分布式数据处理。如图2-2所示,是MapReduce的运行模型,假设共有M个Map操作和R个Reduce操作。

(1)Map:一个Map操作就是对部分输入的原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,从而实现并行化的处理。

(2)Reduce:一个Reduce操作就是对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单的连接就形成了完整的结果集,因此Reduce的执行也是并行化的。

图2-2 MapReduce的运行模型

具体地,在使用MapReduce开发并行处理程序时,用户需要编写以下两个函数:

(1)Map:(in_key,in_value){(keyj,valuej)|j=1…k};

(2)Reduce:(key,[value1,…,valuem])(key,final_value)。

Map函数和Reduce函数的输入参数和输出结果根据具体应用的不同而不同。Map的输入参数是in_key和in_value,它表示了Map需要处理的原始数据。Map的输出结果是一组对,这是经过该Map操作后产生的中间结果。在进行Reduce操作之前,系统已经将所有Map产生的中间结果进行了分类处理,使得相同key对应的一系列value能够集合在一起提供给一个Reduce进行统一处理,则Reduce的输入参数就是(key,[value1,…,valuem])。Reduce的工作就是对这些对应相同key的value值进行归并处理,最终形成(key,final_value)的结果。这样,一个Reduce就处理了一个key,所有Reduce的结果合并在一起就是问题的最终运算结果。上述过程中,无论是各个Map还是各个Reduce,都是并行执行的。

(三)Bigtable

Bigtable[5]是Google开发的,以GFS、MapReduce、Chubby为基础的分布式存储系统。

如图2-3所示,是Bigtable的基本架构。其中,Google WorkQueue是一个分布式的任务调度器,主要用来处理分布式系统的队列分组和任务调度。

图2-3 Bigtable基本架构

如图2-3所示,逻辑上,Bigtable主要由三个部分组成:客户端程序库(Client Library)、一个主服务器(Master Server)和多个子表服务器(Tablet Server)。客户端需要访问Bigtable的服务时,首先要使用其库函数执行Open()操作,通过Chubby打开一个锁(即获取文件目录),锁打开以后客户端就即可和子表服务器进行通信。

三、基于Google云计算的水利信息系统

(一)水利信息系统的特点

水利信息系统的业务管理范围较广,主要包括水雨情信息、汛旱灾情信息、水量水质信息、水环境信息等。系统规模较为庞大,各个模块之间存在着较大的信息关联性,同时要处理图形数据和常规数据,还需要保证海量数据的准确性和及时性。云计算作为一种新的技术提供了更高的效率、巨大的可扩展性和更快、更容易的软件开发。因此,水利信息系统需要云计算。

(二)基于Google云计算构建水利信息系统

基于Google云计算的水利信息系统总体框架包括物理资源层、虚拟化支持层、服务管理层、信息资源层、应用层、表现层六个层面,见图3-1,主要为政府、企业、公众提供服务。

图3-1基于Google云计算的水利信息系统总体框架

Google云计算关键技术在构建水利信息系统时可以从以下几个方面得以应用:

1.编程模型

MapReduce是Google开发的java、Python、C++编程模型,它是一种简化的分布式编程模型和高效的任务调度模型,用于大规模数据集(大于1TB)的并行运算。严格的编程模型使云计算环境下的水利信息系统编程十分简单。

2.海量数据分布存储技术

水利信息系统数据量大,其存储由大量服务器组成,同时为大量用户服务,因此系统采用分布式存储的方式存储数据,用冗余存储的方式保证数据的可靠性。在水利信息系统云计算系统中可采用GFS和Hadoop团队开发的GFS的开源实现HDFS。所有数据方面的通信都直接和块服务器联系,这大大提高了系统的效率,防止主服务器负载过重。

3.海量数据管理技术

水利信息系统需要对分布的、海量的数据进行处理、分析,因此,数据管理技术必需能够高效的管理大量的数据。因此在水利信息系统中的数据管理技术可以采用BT(BigTable)数据管理技术和Hadoop团队开发的开源数据管理模块HBase,提供灵活高效的服务。

4.虚拟化技术

在水利信息系统框架中的虚拟化支持层采用虚拟化技术实现软件应用与底层硬件相隔离,它包括将单个资源划分成多个虚拟资源的裂分模式,也包括将多个资源整合成一个虚拟资源的聚合模式。

5.云计算平台管理技术

基于云计算的水利信息系统资源规模庞大,服务器数量众多并分布在不同的地点,同时运行着数百种应用,Google云计算系统的平台管理技术能够使大量的服务器协同工作,方便的进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化的手段实现大规模系统的可靠运营。

(三)基于Google云计算的水利信息系统的优势和不足

基于Google云计算的水利信息系统与传统水利信息系统相比有很多优点:

(1)成本低。由于应用程序在云中,故各终端电脑并不需要传统的桌面软件所要求的处理能力和硬盘空间。

(2)性能高和计算能力强。在云计算中,用户计算机的启和运行速度将会更快,因为他们只需将少量的程序和进程加载到内存中。云计算使用了数据副本容错、计算节点同构可互换等措施来保障服务的可靠性,使云计算比本地计算机更可靠。

(3)存储容量大和数据高效安全。所有数据存储在云中,容量比现有的台式机或笔记本电脑大很多。此外,云计算在一定程度上保持了数据的安全性。

(4)兼容性和群组织间的协作较强。云计算不针对特定的应用,在云的支撑下可以构造出各种应用,增强了多用户间的协作能力。

(5)扩展性强及用户使用方便。云的规模可以根据实际情况进行伸缩,满足用户和应用增长的需求。同时也消除了用户对特定设备的依赖。

由于云计算计算本身还有很多需要改进的问题,例如需要持久的网络连接。利用云计算,必须链接到因特网上才能利用自己的应用和文档,失效的网络连接就意味着用户在此期间内不能工作及访问云中的内容。一些因特网连接很少或本身不稳定的地区,也是可能影响云计算使用的决定性因素[6]。

参考文献:

[1]刘鹏.云计算[M].北京:电子工业出版社,2010

[2]Sanjay Ghemawat,Howard Gobioff,Shun-Tak Leung.The Google File System[A].SOSP'03[C].Bolton Landing,NY,USA: ACM,2003:29-43

[3]Jeffrey Dean,Sanjay Ghemawant.MapReduce:Simplified Data Processing on Large Clusters[J].Communications of the ACM,2008,51(1):107-113

[4]Mike Burrows.The Chubby lock service for loosely-coupled distributed systems[A].OSDI’06[C].CA,USA:USENIX Association Berkeley,2006:335-350

[5]Chang F,Dean J,Ghemawant S,et al.Bigtable:a distributed storage system for structured data[J].ACM Trans ComputSyst,2008,26(2):1-26

[6]龙胤慧,廖梓龙.基于云计算的牧区水利信息系统研究[J].水科学与工程技术,2011,5:94-96

[作者简介]张运涛(1977.8-),男,讲师,主要研究方向:软件技术,软件体系结构。

上一篇:数据库面临的威胁以及采用的安全措施研究 下一篇:浅析IDS\IPS技术