搜档网
当前位置:搜档网 › 基于Hadoop的云计算研究与实现

基于Hadoop的云计算研究与实现

2011届

华北科技学院

本科毕业设计(论文)

设计(论文)题目:基于Hadoop的云计算研究与实现专题题目:QQ 122414395

姓名:刘宗奇学号:200707024115 专业班级:网络B071 系(部、院):计算机系指导老师:陈振国

2011年6月20日

摘要

云计算是2007年底正式提出的一个新的概念,它可以说是一个革命性的创新,意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉,不同之处只是在于它是使用互联网进行传输的。至今为止,Google、Microsoft、IBM、亚马逊等IT商业巨头都推出了自己的云计算平台,并把云计算作为其未来发展的最主要战略之一。因此,云计算的研究不但紧跟业界技术发展的趋势,同时还具有较高的应用价值。

Hadoop是一个在集群上运行大型数据库处理应用程序的开放式源代码框架。它是通过Google的MapReduce编程范例来创建并执行的应用程序,在很多大型网站上都已经得到了应用,可以说是目前最为广泛应用的开源云计算软件平台,但其发展时间较短,研究还不够深入,还有较多值得改进的地方。

关键词:云计算;Hadoop;MapReduce

Abstract

As a new concept proposed in the end of 2007,cloud computing is a great revolution in the IT field.It means that computing call be used as a commodity, like coal gas or electricity.The only difference between them is that cloud computing transports by the computer networks.Up to now, Google、Microsoft、IBM、Amazon and some other famous cooperations have proposed their cloud computing application, and take cloud computing as one of the most important strategy in the future.

Hadoop is an open source code frame for very large data process application, which runs on a cluster of commercial PCs.It create parallel program through Google`s MapReduce method and has already been used by many famous IT companies.Hadoop can be taken as the most popular open source could computing software,but there are many points to be improved since it is a young program.

Key Words:cloud computing;Hadoop;MapReduce

目录

摘要 (ii)

Abstract (iii)

第1章绪论 (3)

1.1本文工作的来源 (3)

1.2目的和意义 (3)

1.3国内外进展 (4)

1.3.1国外进展 (4)

1.3.2国内进展 (6)

1.4本文工作的主要内容 (7)

第2章云计算相关背景 (9)

2.1云计算概述 (9)

2.1.1云计算基本概念 (9)

2.1.2云计算的特点和优势 (11)

2.1.3云计算的典型应用 (12)

2.2云计算关键技术 (14)

2.2.1简单的编程模式 (14)

2.2.2数据存储和管理 (15)

2.2.3虚拟化技术 (15)

第3章Hadoop平台研究 (17)

3.1概述 (17)

3.1.1Hadoop概述 (17)

3.1.2HDFS介绍 (18)

3.1.3MapReduce介绍 (19)

3.2Hadoop构架以及原理 (21)

3.3GFS 文件系统 (23)

3.3.1系统架构 (23)

3.4Hadoop API 的使用 (26)

3.4.1 API 中的包 (26)

3.4.2MapReduce框架结构 (26)

第4章基于Hadoop分布式运行程序 (36)

4.1搭建Hadoop环境 (36)

4.1.1装机阶段 (36)

4.1.2配置阶段 (38)

4.2 一个wordcount实例 (40)

4.2.1系统概述 (40)

4.2.2实现Map类 (41)

4.2.3实现Reduce 类 (42)

4.2.4运行 Job (42)

4.2.5设计与编码 (43)

4.2.6测试运行 (44)

结论 (47)

参考文献 (48)

致谢 (49)

附录A代码 (50)

外文科技资料翻译 (54)

英文原文 (54)

中文译文 (63)

第1章绪论

1.1本文工作的来源

云计算是2007年底正式提出的一个新的概念,至今为止,几乎所有的IT行业巨头都将云计算作为未来发展的主要战略之一[5][6],相关商业媒体也将云计算视为计算机未来发展的主要趋势[7],其商业前景和应用需求已勿庸置疑。

云计算是一种全新的商业模式,其核心部分依然是云后端的数据中心,它使用的硬件设备主要是成千上万的工业标准服务器,它们由英特尔或AMD生产的处理器以及其他硬件厂商的产品组成。企业和个人用户通过高速互联网得到计算能力,从而避免了大量的硬件投资。

云计算的基本原理是,通过将计算分布在大量的分布式计算机上,使企业数据中心的运行更加类似于使用互联网。从而使企业能够将随时资源切换到需要的应用上,根据需求访问计算机和存储系统。

云计算已经深刻地影响着整个IT产业。云计算是在分布式计算、网格计算、并行计算等发展的基础上提出的一种新型计算模型,是一种新兴的共享基础架构的方法。它将带来工作方式和商业模式的根本性改变。我们的生活已经与互联网密不可分,云计算的发展足一种不可逆转的趋势。因此,我们需要更进一步地认识云计算技术,探索它的发展与问题。

1.2目的和意义

Hadoop是Apache开源组织的一个分布式计算开源框架,它可以运行在大中型集群的廉价硬件设备上,为应用程序提供了一组稳定可靠的接口。同时,它是Google集群系统的一个开源项目总称,Google集群系统是使用低成本的成熟技术构建的一个稳定、高性能、高可用性、可扩展的系统,它的底层是Google文件系统(Google File System,GFS)。HDFS是GFS的开源实现,它是Hadoop的底层实现部分,存储Hadoop集群中所有存储节点上的文件。Hadoop平台虽然是一项新兴的技术,但它的发展非常迅速,究其原因首先在于它将并行计算“平民化",它对程序员屏蔽了并行应用开发的细节,

程序员只需将精力放在业务逻辑上。其次Hadoop平台可以运行在普通的PC机群上,极大地降低开发成本,这也让个人研究、实施分布式系统更加容易。

总的来说,本文有以下几方面的意义:

1).现代企业的数据量十分庞大,如何对海量数据进行有效管理成为了企业的关键问题。如果利用云存储技术解决这个问题,无疑会提高企业的经济效益。

2).HDFS可以实施运行在普通的PC集群上,极大降低了实施运行分布式系统的成本。

3).对HDFS的研究方法可以推广到别的集群存储技术研究上,为下一步研究打好基础。

4).Hadoop平台还没有被广泛地应用于各行各业,一旦我们在基于HDFS的云存储应用研究取得一定的成效,就会对Hadoop技术起到推广作用。

1.3国内外进展

1.3.1国外进展

云计算在国外的从2007年就兴起了,下面对其发展状况作一个简要的介绍:IBM 于2007年8月高调推出“蓝云(Blue Cloud)计划。IBM的Willy Chiu透露,云计算将是IBM接下来的一个重点业务。这也是IBM扩张自身领地的绝佳机会,IBM具有发展云计算业务的一切有利因素:应用服务器、存储、管理软件、中间件等等,IBM抓住了这样一个良好的机会,提出了“蓝云”计划。2008年8月,IBM斥资3.6亿美元在美国北卡罗来纳州开始建立云计算数据中心,并将该数据中心称为史上最复杂的数据中心,投入了大量人力物力。IBM还在东京建立了一所新的研究机构,建立帮助用户使用云计算基础设施。该数据中心占地6万平方英尺,预计将于2009年下半年投入运营。IBM表示:“使用该数据中心的用户能够获得空前的互联网计算能力,并获得业内领先的环保优势和成本。”IBM在东京的专家将为大企业、大学和政府提供云计算咨询,帮助他们利用云计算设施,设计云计算应用,以及向他们的用户提供基于云计算的服务。在2009年的计划中,IBM计划于推出数种云计算服务产品。

Google于2007年10月在全球宣布了云计划,同时与IBM合作,把全球很多大学纳入“云计算”计划当中。当月,Google与IBM开始在美国大学校园,包括卡耐基梅

隆大学、麻省理工学院、斯坦福大学、加州大学伯克利分校及马里兰大学等,推广云计算的计划。希望从而降低分布式计算技术在学术研究方面的成本,并为这些大学提供相关的软硬件设备及技术支援(包括数百台个人计算机及BladeCenter与System x服务器,以及Linux、Xen、Hadoop等开源平台)。而这些学校的学生则可以通过网络开发各项以大规模计算为基础的研究计划。2008年1月30日,Google宣布在台湾启动“云计算学术计划”。与台湾台大、交大等学校合作,将这种先进的大规模、快速计算技术推广到校园。2009年4月,Google App Engine(GAE)的最新升级已经开始支持Java,并且添

加了一系列专门瞄准企业业务的新功能:此后,Google还发布了一款Eclipse插件,可以对Google App Engine的Java开发提供强力支持,由此可见Google已经为企业级云计算做好了准备。

亚马逊于2007年开放了名为“弹性计算机云"(Elastic Compute Cloud,EC2)的服务,以便让小的软件公司可以按需购买亚马逊数据中心的处理能力,而不需要从硬件开始搭建自己的系统。如今,Linux,Window,JBoss,Eclipse等常用操作系统和软件都已经在EC2平台上得到了支持,其他应用软件也在不断地加入。截至2008年底,亚马逊云计算相关业务收入已达l亿美元。

2007年11月,雅虎建立了一个小规模的云,开放给卡内基梅隆大学的研究人员。2008年7月,雅虎与惠普、英特尔、伊利诺斯州大学香槟分校、新加坡信息通信发展管理局以及德国卡尔斯鲁理工学院共同创立了开源试验场Open Cirrus,主要进行云计算方面的研究和教育。2009年4月雅虎宣布了与加州大学伯克利分校、康奈尔大学以及马萨诸塞大学阿姆赫斯特分校合作,与卡内基梅隆大学一起使用雅虎的云计算群来进行大规模系统软件研究,开发新的应用程序以分析互联网上的各种数据集如投票记录和在线新闻源等等。

微软公司正在开发脱离普通桌面的互联网操作系统“Midori”,该系统不同于已经有20多年历史的Windows。Midori目的是为了大规模应用云计算技术。微软的竞争优势很明显,全世界有数以亿计的Windows用户,微软所要做的就是将这些用户通过互联网更紧密地连接起来,并通过Windows Live向他们提供云计算服务。微软正在努力创造一种从一般的硬盘存储方式转移到任何时间地点都可以接入的存储的模式用户体

验,从而在互联网战略上拉近同Google的距离。微软的云平台Azure开发己初步完成,如今已可以随时访问其站点。

1.3.2国内进展

在我国[2],云计算发展也非常迅猛。2008年6月24日,IBM在北京IBM中国创新中心成立了第二家中国的云计算中心——IBM大中华区云计算中心;2008年11月28日,广东电子工业研究院与东莞松山湖科技产业园管委会签约,广东电子工业研究院将在东莞松山湖投资2亿元建立云计算平台;2008年12月30日,阿里巴巴集团旗下子公司阿里软件与江苏省南京市政府正式签订了2009年战略合作框架协议,计划于2009年初在南京建立国内首个“电子商务云计算中心”,首期投资额将达上亿元人民币;2009年11月11日,全国首家云计算产业协会在深圳成立,协会的成立标志深圳市政府对于云计算产业在未来发展的高度重视,同时标志着深圳市企业对于云计算研究及应用领域的关注与信心,深圳市高科技产业发展迈向成熟,而云计算产业则给深圳信息产业带来新的商机,当前深圳是全国首个大力发展云计算的城市,现在有100多家企业从事云计算相关产业研究和技术开发等,未来产业将蕴藏巨大的商机。

2009年12月中国云计算技术与产业联盟在京成立,四十多家企业一起共同倡议成立中国云计算技术与产业联盟。2010年8月上海公布云计算发展战略,3年内云计算将为上海新增1000亿元的服务业收入,推动百家软件和信息服务业企业转型,培育10家年收入超亿元的龙头企业和10个云计算示范平台。上海的目标很明确:打造亚太地区的云计算中心。

我国主导的云计算发展企业,同美国类似,包括互联网公司,IT 公司,电信运营商等,但由于起步较晚,这些公司的业务方向都不明确,产业链中的位置也不明确。具体计划向外提供业务的公司包括互联网公司(世纪互联、腾讯、新浪、盛大、蓝汛、阿里巴巴),基础电信运营商(中国移动、中国电信、中国联通)等。世纪互联网专门为云计算成立了Cloudex 子公司,云计算服务节点已经遍布国内多个数据中心,可为用户提供包括联通、移动、电信等多种带宽接入。产品包括面向中小型WebHosting 客户的云主机租用服务,同时还为中大规模的服务器托管客户提供云托管。世纪互联的

云计算业务已经为包括网络游戏、应用软件开发、物流平台应用、行业网站应用等多类客户提供了云计算基础设施服务。世纪互联的云计算业务目前规模仍然非常有限,正处于上升阶段。世纪互联是国内最大的专业IDC 提供商,具备大量的服务器资源,因此世纪互联的云计算业务是提高原有服务器和其他设备利用率,提供云计算业务有基础条件,也有长期积累的客户基础,基本不存在泡沫。阿里巴巴是国内云计算业务走在前面的另一企业,阿里巴巴专门成立了从事云计算业务的新公司“阿里云”,计划筹建多个“电子商务云计算中心”,首个云计算中心已经在2009 年初落户江苏南京,首期投资额即达上亿元人民币。阿里巴巴的云计算业务以大规模的低成本计算机集群为依托,构建互联网上的分布式存储和计算的服务,降低用户大规模数据处理和大运算量计算的成本。阿里巴巴的云计算业务以原有的大规模服务器为基础,目标客户是大量原有的中小企业用户,是顺应IT 技术发展的产物。

1.4本文工作的主要内容

在广泛的文献调研基础上,本论文主要对基于Hadoop的云计算理论和基于Hadoop 的分布式云计算环境进行研究,具体包括:Hadoop构架及实现原理MapReduce,Google File System相关资料、搭建Hadoop运行环境和实现简单的一个基于Hadoop分布式运行程序。

在云计算系统的后端架设了大量的服务器,这些服务器分布在各个地方,负责不同的地域和服务,结构比较复杂。如何将如此大量的服务器有效地组织起来是保证云计算系统高效稳定运行关键问题之一。

Hadoop是一个在集群上运行大型数据库处理应用程序的开放式源代码框架。它支持通过Google的MapReduce编程范例来创建并执行的应用程序,在很多大型网站上都已经得到了应用,可以说是目前最为广泛应用的开源云计算软件平台。Hadoop平台最大的优点就是实现了并行对平台程序设计人员的透明处理,应用开发者可以像开发普通程序一样来开发云计算的应用系统,底层会自动完成并行化。

本文主要以云计算与Hadoop为主题进行扩展研究,涉及下面三个方面的内容:

1).广泛查阅资料的基础上,对云计算的背景以及国内外的发展现状进行了一个很全面的了解。云计算的基本的概念以及发展前期其他计算模式的历程,在这十年间的历程

中云计算逐渐走向应用,它的特点和优势,对我们现今生活方式的改变起了很大的作用。云计算的普遍应用能更加使资源的利用更合理更节约更安全。其中云计算的发展至今有许多的相应的技术,它的分布式编程模式的思想,还有数据存储和管理,其中虚拟化技术更是为云计算的发展带来了铺垫。

2).本文的下一部分对云计算的一个实现平台Hadoop加以研究,这是一个开放源代码的平台,其思想来源于Google的云计算平台,它的出现使我们分布式编程实现成为了可能,也使云计算更加的普及到商业中来。这部分对Hadoop的文件系统HDFS做了一些介绍,还有MapReduce相关的知识。Hadoop是怎么构架以及实现的原理通过与GFS 文件系统的比较更深入了解分布式系统的构架,最后详细的介绍了Hadoop API 的使用,API 中的包,MapReduce框架结构,以便于更详细的了解Hadoop做任务的原理,编出更好的程序。

3).本文的最后一部分是把理论知识转化为实践,搭建一下Hadoop的运行环境,体验一下Hadoop给我们带来的方便。首先安装虚拟机,在虚拟机上安装ubuntu 11.04系统,然后安装java、ssh等Hadoop所需的环境,然后配置一下系统的环境变量,和Hadoop的配置文件,以便能运行Hadoop,最后用MapReduce的思想编一个分布式运行程序WordCount实例,我们只需要写出其Map类和Reduce的类就行,其他的分布运行的细节全部由Hadoop来实现。只需简单的几行代码,就可以让许多机器为你工作。只需要加个结点,就可以让程序跑在各个计算机上,大大增加了程序运行的效率。

第2章云计算相关背景

2.1云计算概述

云计算[1]是分布处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的综合发展,或者说是这些计算机科学概念的商业实现;也是效用计算(Utility Computing)、虚拟化(Virtualization)、Haas(硬件即服务)、SaaS(软件即服务)、PaaS(平台即服务)等概念结合创新的结果[2]。

2.1.1云计算基本概念

云计算是一种革命性的突破,它表示计算能力也可作为一种商品进行流通,当然这种商品是通过互联网进行传输的。云计算的最主要目标就是:在来来,只需要一台笔记本或者一个手机,就可以通过网络服务来得到我们需要的一切服务,甚至包括实现超级计算这样的任务。从这个角度而言,最终用户将成为云计算的真正拥有者。简单的说,云计算就是利用互联网上的大型数据中心的软件和处理数据的能力,把复杂的运算从用户终端移到云上去做。

云计算既指通过互联网以服务方式提供的应用程序,也指在数据中心用来提供这些服务的硬件和系统软件,它的概念是在SaaS(Software as a service,软件即服务)的基础上发展起来的。

现在很多人都开始了解SaaS对终端用户和服务提供商的好处:服务提供商可以享受到软件安装维护简单、能集中控制产品更新带来的优点;最终用户在“任何时间、任何地点”都可以访问这些服务,可以共享数据,更易协作,将他们的数据安全地存放在基础设施中。云计算并不改变SaaS这些模式,但它给了应用程序提供者更多的选择,使得他们不用配置数据中心就能提供SaaS产品。就像半导体代工的出现使没有生产线的芯片公司也有机会设计销售芯片一样,云计算允许不用构建或提供数据中心就能部署SaaS,并根据需求缩放SaaS的规模。而SaaS的用户可以把一些问题交给提供商来解决,SaaS的提供商也可以把自己的一些问题交给云计算提供商解决。

从硬件的角度来看,云计算有三个方面是新的[4]:

1).可以按需获取的看似无限的计算资源,从而使云计算用户不需要在提供服务很久之前就要做计算资源的规划。

2).消除了云用户的先期的投入,从而使公司可以从小规模做起,随着需求增加来扩展他们的硬件资源,降低了风险。

3).能够以很短的时间为单位付费按需使用计算资源(例如,处理器按小时付费以及存储器按天付费),不需要的时候就将这些资源释放。这样,通过将闲置的机器和存储器释放来节省开支,提高整体利用率。对于云计算的具体类型,InfoWorld网站同数十家公司、分析家和IT用户讨论出了云计算的几大形式[2]:

1).软件即服务(Software as a Service,SaaS)

软件即服务的云计算通过浏览器把程序传给成千上万的用户。在用户的角度看来,可以省去在架设服务器和软件授权上的开支;从供应商角度来看,缩减了程序的维护,能够减少成本。Salesforce.CON)是这类服务最为出名的公司。一般来讲,SaaS在人力资源管理程序和ERP中比较常用。

2).实用计算(Utility Computing,UC)

实用计算的思想提出很早,但是直到最近才在Amazon、Sun、IBM和其它提供存储服务和虚拟服务器的公司中被明确使用起来。这种云计算是通过IT行业创造虚拟的数据中心使得其能够把内存、I/O设备、存储和计算能力集中起来,构建程一个虚拟的资源池来为整个网络提供服务。

3).平台即服务(Platform as a Service,PaaS)

平台即服务是指集成了SaaS(Software as a Service),HaaS(Hardware as a Service),DaaS(Data as a Service)的复合系统,这种形式的云计算把开发环境作为一种服务来提供。你可以使用中间商的设备来开发自己的程序,然后通过互联网和其服务器传到用户手中。

4).管理服务提供商(Manage Service Provider,MSP)

管理服务提供商可以称作最古老的云计算运用之一。这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等等。一些大型的公司集团更加可能使用这种服务。

5).商业服务平台(Commercial Service Platform,CSP)

商业服务平台一般是SaaS和MSP的混合应用,该类云计算为用户和提供商之间的互动提供了一个平台,可以一定程度上做到量身定做,比如用户个人开支管理系统,能够根据用户的设置来管理其开支并协调其订购的各种服务。

6).互联网整合(Internet Integration)

互联网整合指的是将互联网上提供类似服务的公司整合起来,以便用户能够更方便的比较和选择自己的服务供应商。现在Google做的很多工具都是类似的工作。

对于云计算的应用形式分类有很多种,以上使用的是比较简单的一种分类。从以上分类我们可以看到,从某种程度上说,云计算确实是将已有的技术和概念的一个整合,或者说规范化。

2.1.2云计算的特点和优势

从用户角度来看云计算的优点:

1).云计算提供了安全可靠的数据存储中心,终端用户不用再担心数据丢失和病毒入侵等麻烦。通过云后端专业的管理、可靠的储存技术和严格的权限策略,使用户可以放心地使用云计算的服务。

2).云计算对用户端的设备要求低,使用方便,可以支持手机等无线通信设备。通过云可以在浏览器中直接编辑存储在云后端的文档,实现随时随地的接入。

3).云计算可以轻松实现不同设备间的数据与应用共享。在云计算的网络应用模式中,数据只有一份,保存在云的后端,所有电子设备只需要连接互联网,就可以同时访问和使用同一份数据。

4).云计算为用户使用网络提供了更多的可能。它为存储和管理数据提供了更多的空间,也为完成各类应用提供了强大的计算能力。个人电脑或其他电子设备不可能提供无限量的存储空间和计算能力,但在云的后端,由数千台、数万台甚至更多服务器组成的庞大的集群却可以轻易地做到这一点。个人和单个设备的能力是有限的,但云计算的潜力却几乎是无限的。当用户把最常用的数据和最重要的功能都放在云上时,电脑、应用软件乃至网络的体系结构将会有翻天覆地的变化,人们的生活也会因此而改变。

云计算作为分布式计算的优势:

1).分布式系统的最大优势就是因为其具有比集中式系统更好的性能价格比,用户花少量的钱就能获得高效能计算。

2).多数应用本身就是分布式的。如工业企业应用,管理部门和现场不在同一个地方的应用。

3).高可靠性。冗余不仅是生物进化的必要条件,而且也是信息技术。现代分布式系统具有高度容错机制,控制核反应堆主要采用分布式来实现高可靠性。

4).可扩展性。添置一台性能更高的大型机,或者添置一台性能相同的大型机的费用都比添加几台Pc的费用高得多。

云计算在存储领域的发展趋势和优势

1).用户不必为文件存储硬件投入任何前期的费用。

2).主机服务提供商会维护用户文件服务器的安全和更新问题。

3).方便的控制访问权限和文件资源管理。

2.1.3云计算的典型应用

云计算是多种技术混合演进的结果.其成熟度较高,又有大公司推动。发展极为迅速。Amazon、Google、Microsoft和Yahoo等大公司是云计算的先行者。云计算领域的众多参与公司还包括Salesforce、Face book、YouTube、MySpace,以及国内的趋势、阿里巴巴等。图2.1 [8] 是Google trends对云计算和网格计算计算的比较,由该图可见云计算在应用中拥有了越来越多的关注度。

图2.1 Google trends中的云计算统计

云计算已有一些相对成熟的应用,特别是几家IT大公司的产品,下面对其产品作一个简单的分析介绍:

1).亚马逊(Amazon) [5]

亚马逊是以在线书店和电子零售业起家的,两年多以前,亚马逊作为首批进军云计算新兴市场的厂商之一,为尝试进入该领域的企业开创了良好的开端,如今已成为最大的云计算服务提供商之一,去年相关方面的收入已经突破l亿美元。亚马逊的“云”名为亚马逊网络服务(Amazon Web Services,AWS),目前主要由4块核心服务组成:简单存储服务(Simple Storage Service,S3);弹性计算云(Elastic Compute Cloud,EC2):简单排列服务(Simple Queuing Service)以及简单数据库服务(Simple DB)。换句话说,亚马逊现在提供的是可以通过网络访问的存储、计算机处理、信息排队和数据库管理系统接入式服务。但由于数据备份以及相关的状态管理方面的语义分析是高度依赖于特定的应用模式,因此,亚马逊在应用上缺乏自动的可扩展性和容错性。

2).谷歌(Google) [6]

谷歌围绕因特网搜索创造了一个神话,成为了最有影响力的互联网公司。如今,他们又以应用托管、企业搜索以及其他更多形式向企业开放了他们的“云"计划。2008年4月,谷歌推出了,谷歌应用软件引擎(Google App Engine,GAE),这种服务让开发人员可以编译基于Python的应用程序,并可免费使用,谷歌的基础设施来进行托管(最高存储空间达500MB)。对于超过此上限的存储空间,谷歌按“每CPU内核每小时”10至12美分及1GB空间15至18美分的标准进行收费。最近,谷歌还公布了提供可由企业白定义的托管企业搜索服务计划。2009年4月,谷歌应用软件引擎的最新升级已经开始支持Java,并且添加了一系列专门瞄准企业业务的新功能:此后,谷歌还发布了一款Eclipse插件,可以对Google App Engine的Java开发提供强力支持,谷歌应用软件引擎是专门针对传统的Web应用程序,其结构是将无状态的计算层和分状态的存储层清清楚楚地分开。此外,它的应用程序基于请求—应答模式,每个服务请求能用多少CPU 时间,需要严格的配给制度。谷歌应用软件引擎令人印象深刻的自动缩放和高可用性机制,专有的供引擎应用程序使用的Megastore数据存储,都依赖于这些限制。但其不适用于一般用途的计算。

3).微软(Microsoft)

微软的Azure是介于系统灵活性与方便程序员使用的一个折中方案。Azure使用.NET函数库,并汇编成Common Language Runtime,一个与语言无关的环境。该系统支持一般用途的计算,而不是一个单独的类别。用户可以选择语言,可是不能控制底层操作系统或运行时环境。函数库提供一定程度的自动网络配置和容错/扩展,但要做到这些,开发者必须明确指定某些应用性能。因此,Azure是介于谷歌应用软件引擎应用框架和亚马逊EC2硬件虚拟机应用模式的折中方案。

2.2云计算关键技术

云计算的关键技术[9]:编程模式、数据存储技术和管理技术、虚拟化技术。云计算是一种新型的超级计算方式,以数据为中心,是一种数据密集型的超级计算。在数据存储和管理、编程模式和虚拟化等方面具有自身独特的技术。下面对这三大关键技术作一个简单的介绍:

2.2.1简单的编程模式

编程模式主要针对的是使用云计算的服务进行开发的用户,为了使这些用户能方便的利用云后端的资源,使用合适的编程模式编写应用程序来达到需要的目的或提供服务,云计算中的编程模式应该尽量方便简单。最好使得后台复杂的并行执行和任务调度向编程人员透明,从而是编程人员可以将精力集中与业务逻辑。Google提出的Map Reduce的编程模式是如今最流行的云计算编程模式。现在几乎所有IT厂商提出的“云”计划中采用的编程模式,都是基于Map Reduce思想的。Map Reduce这种编程模式并不仅适用于云计算,在多核计算和并行处理上同样具有良好的性能。但该编程模式仅适用于编写数据处理为主、能够高度并行化的程序,简单的说,它是对同类型数据的分布式处理,对于计算数据具有相互联系,不可分割的应用并不适合。如何改进该编程模式,使程序员得能够轻松的编写各种需要的程序,实现真正意义上的并行编程,是Map Reduce编程模式未来的发展方向。Hadoop软件平台对MapReduce技术已有具体的应用,本论文第三章将对其原理和技术有详细介绍。

2.2.2数据存储和管理

为保证数据的高可用和高可靠性,云计算的数据一般采用分布式的方式来存储和管理。类似于一般的数据存储安全保证办法,云计算也采用冗余存储的方式来保证存储数据的可靠性。由于云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务,因此云计算的数据存储技术必须具有高吞吐率,分布式存储正好满足了这一需求特点。现在,云计算的数据存储技术主要有谷歌的非开源的体系GFS(Google File System)和Hadoop团队的开发的对于GFS[10]的开源实现HDFS(Hadoop Distributed File System)。有很大一部分IT厂商,包括yahoo,Intel,阿里巴巴的云存储计划采用的都是HDFS的数据存储技术。本论文在也安装部署了Hadoop的HDFS平台并使用其进行数据存储。

云计算系统对大数据集进行处理,而且需要向用户提供高效的服务,因此数据管理技术也必须能够对大量数据进行高效的管理。由于云计算的特点是对大量的数据进行反复的读取和分析,数据的读操作频率远大于数据的更新频率,因此云中的数据管理是一种读效率优先的数据管理模式。因此一般来讲,云计算系统的数据管理通常采用数据库领域中列存储的数据管理模式,即将表按列划分后存储。在现有的云计算的数据管理技术中,最著名的是谷歌的Big Table&31数据管理技术,同时Hadoop开发团队开发了类似Big Table的开源数据管理模块。由于采用列存储的方式管理数据会造成写的不方便,因此如何提高数据的更新速率以及进一步提高随机读速率是未来的数据管理技术需要解决的问题。

2.2.3虚拟化技术

虚拟化是云计算的一个非常关键的技术[11],也可以说是云计算区别于一般并行计算的一个根本性的特点。通过虚拟机的方式进行云计算资源的管理具有特殊的好处。由于虚拟机是一类特殊的软件,能够完全模拟硬件的执行,因此能够在上面运行操作系统,进而能够保留一整套运行环境语义。这样,可以将整个执行环境通过打包的方式传输到其他物理节点上,使得执行环境与物理环境隔离,方便整个应用程序模块的部署。一般来说,通过将虚拟化的技术应用到云计算的平台,可以获得如下一些良好的特性:

1).云计算的管理平台能够动态地将计算平台定位到所需要的物理平台上,而无需停止运行在虚拟机平台上的应用程序,这比采用虚拟化技术之前的进程迁移方法更加灵活。

2).能够更加有效率地使用主机资源,将多个负载不是很重的虚拟机计算节点合并到同一个物理节点上,从而能够关闭空闲的物理节点,达到节约电能的目的。

3).通过虚拟机在不同物理节点上的动态迁移,能够获得与应用无关的负载平衡性能。由于虚拟机包含了整个虚拟化的操作系统以及应用程序环境,因此在进行迁移的时候带着整个运行环境,达到了与应用无关的目的。

4).在部署上也更加灵活,即可以将虚拟机直接部署到物理计算平台当中,或者提供给用户的资源就直接是一个虚拟机,如亚马逊的EC2。

虚拟化技术现在最成熟的系统包括Xen和VMware,还有开源的系统Linux kvm。

第3章Hadoop平台研究

3.1概述

在云计算技术中,编程平台是一个非常重要的模块。Hadoop平台是当今应用最为广泛的开源云计算编程平台,本章详细介绍了Hadoop平台的组成。

3.1.1Hadoop概述

Hadoop [15]是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如Amazon、Face book、Yahoo!、IBM等等。Hadoop框架中最核心的设计是MapReduce [12]和HDFS(Hadoop Distributed File System)。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的说MapReduce就是任务的分解与结果的汇总。HDFS是Hadoop分布式文件系统的缩写,为分布式计算存储提供了底层支持。

Hadoop的优点在于:

1).可扩展:不论是存储的可扩展还是计算的可扩展都是Hadoop的设计根本,Hadoop的扩展非常简单,不需要修改任何已有的结构。

2).经济:框架可以运行在任何普通的PC上,对硬件没有特殊的要求。

3).可靠:分布式文件系统的备份恢复机制以及MapReduce的任务监控保证了分布式处理的可靠性,Hadoop默认就提供1个以上的备份。

4).高效:分布式文件系统的高效数据交互实现以及MapReduce结合Local Data处理的模式,为高效处理海量的信息作了基础准备。

Hadoop最适合的是用于海量数据的分析,Google最早提出MapReduce也就是为了海量数据分析。同时HDFS最早是为了搜索引擎实现而开发的,后来才被用于分布式计算框架中。海量数据被分割于多个节点,然后由每一个节点并行计算,将得出结果归并到输出。同时第一阶段的输出又可以作为下一阶段计算的输入,形成一个树状结构的分布式计算图,在不同阶段都有不同产出,同时并行和串行结合的计算也可以很好的在分布式集群的资源下得以高效的处理。

相关主题