分布式计算技术

--云计算之分布式文件系统

摘要:分布式计算技术近年来发展迅速,并且在科研、数据搜索、复杂数据计算等方面发挥了重要作用,如:中间件技术;P2P技术;移动技术;网格技术;云计算;Web Service等,文章在了解分布式计算技术基础之上,给出了云计算中分布式文件系统的主要类型,分析了Google文件系统(GFS)Hadoop布式文件系统(HDFS)的演进情况最后,详细描述了分布式文件系统的工作原理。

1 综述

分布式计算和并行计算技术为研究开发高性能计算机另辟蹊径,使用普通的计算机通过网络连接之后,通过这两种计算技术来完成以前只有在高性能计算机上才能进行的工作,随着技术的发展和进步,分布式计算技术已经使参与分布式计算的普通计算机的“联合计算能力”超过了单台超级计算机。而云计算正是在分布式计算发展的基础上,同时基于互联网提供服务的业务模式,它能够实现IT基础设施的资源化和服务化,用户可以按需进行定制和付费,从而彻底改变了传统的IT基础设施的提供和支付方式,有效解决了无限增长的海量信息和计算问题。

2 典型的分布式计算技术

2.1 网格计算

网格计算是利用网络系统把分布在不同空间的计算机资源(硬件、软件和信息数据等)连接成一个巨大的“虚拟计算机”,能够对计算资源的统一管理和共享,打破限制,避免了重复资源投资和浪费,充分利用自己的计算资源。

101542110.jpg

Foster等提出的五层沙漏结构(1)。还有另一种典型的结构体系:开放网格服务结构OGSA(Open Grid Services Architecture),这个结构是结合Web Service技术的网格体系。通过分析,网格系统大致分为三个层次的基本结构:构造成(底层),主要是分布在各个计算机上的资源,硬件和软件、信息数据等;中间层,主要负责屏蔽底层资源的异构性,是上面提到的中间件技术;应用层,这是我们的工作平台,通过应用层来组织协调和合理利用底层的资源来完成分布式工作任务。

2.2 移动Agent技术

移动Agent是一种可以在构成分布式计算系统的各节点移动的软件Agent,是人工智能技术发展起来的一个产物,人工智能的研究主要解决知识表达、机器学习、推理等类似人的智能的算法问题,而软Agent就具有类人的智能,可以自主管理,能对环境做出响应,甚至主动行动,进行推理计算来完成任务。把软件Agent看做是在一台机器上运行的程序,而移动Agent则是可以自主在网络构成分布式计算系统的各节点之间进行移动的一个程序。这个程序带着自己的任务找到可以完成这个任务的节点(这个节点有完成这个任务所需要的数据、硬件、软件等资源),通过网络移动到这个节点,在此暂时定居利用这个节点的资源进行计算,计算结束后,这个Agent携带计算结果通过网络自主移动到下一个需要达到的节点。

移动Agent的优点:高效性、占用较少带宽、高稳定行和容错、支持不同环境、支持电子商务并且更易于开发。


101542210.jpg




2 移动Agent 计算范例


2.3 云计算技术

美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。云计算可以认为包括以下几个层次的服务:基础设施即服务(IaaS),平台即服务PaaS)和软件即服务SaaS)。其中相对成熟的是SAAA,这种类型的云计算通过浏览器把程序传给成千上万的用户。在用户眼中看来,这样会省去在服务器和软件授权上的开支;从供应商角度来看,这样只需要维持一个程序就足矣,并且能够减少成本。

形成云的基本条件有三个,即充足的水汽、足够多的大气固体微粒和湿热的上升空气。同样,云计算不是天上掉下来的猪八戒。一个篱笆三个桩,一个好汉三个帮,没有分布式文件系统、虚拟化、海量数据管理、分布式编程等把兄弟的鼎力协助云计算也是难成气候的。因此我们来看看分布式文件系统。

2.3.1 分布式文件系统的主要类型

随着移动互联网和无线应用的逐渐普及,数据就像身边的空气变得无处不在。存储不再是数据中心用户的专利,而是随着互联网的触角从数据中心逐渐延伸到世界的角角落落。在云计算时代,存储理所当然地被作为一种服务提供给企业用户和个人用户。无论是应用于公有云环境中的存储资源,还是用于私有云环境中的存储资源,都应该更容易被分享,并且能够按需付费使用。

为了确保可用性、可靠性、和经济性,云计算采用高可靠软件来确保存储数据的可用性,

采用冗余存储的方法来保证存储数据的可靠性,采用分布式存储的方式来实现数据存储的经济性。为了满足用户的服务质量需求,数据存储技术必须具有传输速率高、吞吐量大等特点

云计算的数据存储系统主要有Google公司的GFS文件系统和Hadoop团队开发的开源

系统—HDFS (Hadoop分布式文件系统)GFSHDFS属于两个海量分布式文件系统,而分布式文件系统在整个云计算平台中处于最底层、最基础的地位。存储若没了数据再好的计算平台、再完善的数据库系统都将变成无源之水、无本之木。

2.3.2 分布式文件的工作原理

什么是分布式文件系统?拆开来说,就是分布式+文件系统。它包含两个方面的含义:从客户使用角度来看,它就是一个标准的文件系统,提供了一系列API(应用程序编程接口),能够完成文件的创建、读写、删除和移动等操作;从内部实现角度来看,与单机文件系统不同,它不是将数据存储在一台服务器上由上层操作系统来管理,而是将数据存储在一台服务器集群上,由集群中的服务器来为客户提供服务。总体上来看,HDFS基本上是按照GFS架构来实现的。只是换了一种说法而已。

分布式文件系统的服务器包括主控服务器、数据服务器和客户端。主控服务器是整个文件系统的大脑,它提供整个文件系统的目录信息,并且负责对各个数据服务器的常态管理。其角色类似于公司的总经理。每一份文件被切分成若干个数据块,采取冗余备份的方式存储在数据服务器中。通常每个数据块大小设定为64MB遵循西班牙人塞万提斯在《堂吉诃德》中的格言:“不要把鸡蛋放在一个篮子里”,系统将每份文件在3台数据服务器上进行冗余存

储,原文件放在一台本地数据服务器上,一份副本放在同一机架中的另一台数据服务器上,还有一份副本放在另一个不同机架中的一台数据服务器上,目的是为了提高系统的可靠性和可用性。这个64MB不是随便拍脑瓜想出来的而是经过反复实践检验得出的。取值太大易造成热点堆叠,使得大量操作集中在一台数据服务器上;太小又会提高附加的控制信息传输成本。数据服务器其主要的工作模式就是定期向主控服务器汇报工作状况,然后等待并处理命令更快、更安全地做好数据的存储工作。其角色相当于公司的部门经理。

整个分布式文件系统还有一个重要角色是客户端。它在一个独立的进程中提供服务,只是以一个类库的模式存在,为用户提供文件读写、目录操作等API。当用户需要使用分布式文件系统进行文件读写时,只需在客户端配置相关包就可以通过它来享受分布式文件系统提供的各项服务了。

基本的文件操作可以分成两类,一个是对文件目录结构的操作,比如文件目录的创建、删、除动、重命名等;另一个是对文件数据流的操作,包括读取和写入文件数据。在GFS中,文件的读取由大数据量的连续读取和小数据量的随机读取组成,文件的写入则基本上都是批量地追加写和偶尔地插入写。GFS支持对文件进行追加写和插入写,但HDFS仅支持追加写从而大大降低了复杂性。HDFS3类服务器每一类服务器出错了,都有相应的应急策。在HDFS中所有日志文件和镜像文件都是本地文件,这就相当于主控服务器把日志锁在自家的保险柜中,一旦主控服务器牺牲了,其他服务器无法拿到这些日志和镜像来继承王位,但主控服务器有一个备份命名节点作为主控服务器的替补,备份命名节点厚积薄发随时为继位做准备,其中心工作就是定期下载并处理日志和镜像。一旦主控服务器牺牲了,备份命名节点即被扶正,利用其日志和镜像,恢复文件目录,并逐步接受各数据服务器的注册,最终提供稳定的文件服务。

相比之下,GFS比较喜欢独裁没有过早选择接班人。它在写日志时并不局限在本地而是同时书写网络日志,即在若干个远程服务器上生成同样的日志。然后在某些场合,主控服务器通过自己生成镜像,降低日志规模。当主控服务器牺牲后,可以在拥有网络日志的服务器上启动主控服务使其升级成为主控服务器。

3 结束语

可以将云计算系统看作是一个服务器农场。它既包含诸多服务器同时又要为多个用户服务。为确保高可靠性、经济性和可用性,云计算通常使用分布式文件系统来存储数据,采用冗余备份的方法来提高数据存储的可靠性。在云计算系统中,常用的数据存储系统包括Google公司的GFS文件系统和Hadoop团队开发的开源系统-HDFS。可以说分布式文件系统是整个云计算的基石,能够为上层数据库系统(如BigTableHBase)提供高效可靠的数据存储.