购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Hadoop和云计算

Hadoop从问世之日起,就和云计算有着千丝万缕的联系。本节将在介绍Hadoop的同时,介绍Hadoop和云计算之间的关系,为后面的学习打下基础。

1.1.1 Hadoop的电梯演讲

如果你是一名创业者或者是一名项目经理,那么最好准备一份“电梯演讲”。所谓电梯演讲,是对自己产品的简单介绍,通常都是1~2分钟(电梯从1层~30层的时间),以便如果你恰巧和投资人挤上同一部电梯的时候,能够说服他投资你的项目或者产品。

在做Hadoop的电梯演讲之前,先来恶补一下Hadoop的有关知识。来看看Hadoop的发布者Apache软件基金会(ASF)对Hadoop的定义:Hadoop软件库是一个框架,允许在集群中使用简单的编程模型对大规模数据集进行分布式计算。它被设计为可以从单一服务器扩展到数以千计的本地计算和存储的节点,并且Hadoop会在应用层面监测和处理错误,而不依靠硬件的高可用性,所以Hadoop能够在一个每个节点都有可能出错的集群之上提供一个高可用服务。

从上面的定义可以看出Hadoop的如下几个特点。

1.Hadoop是一个框架

很多初学者在学习Hadoop的时候,对Hadoop的本质并不十分了解,Hadoop其实是由一系列的软件库组成的框架。这些软件库也可称作功能模块,它们各自负责了Hadoop的一部分功能,其中最主要的是Common、HDFS和YARN。HDFS负责数据的存储,YARN负责统一资源调度和管理,Common则提供远程过程调用RPC、序列化机制等。

而从字面来说:Hadoop没有任何实际的意义。Hadoop这个名字不是缩写,它是一个虚构的名字。Hadoop的创建者Doug Cutting这样解释Hadoop这一名称的来历:“这个名字是我的孩子给一头吃饱了的棕黄色大象取的。我的命名标准是简短,容易发音和拼写,没有太多含义,并且不会被用于别处。小孩子是这方面的高手。”所以我们看到这头欢快的大象也随着Hadoop的流行而逐渐深入人心(如图1-1所示)。

图1-1 Hadoop的LOGO

2.Hadoop适合处理大规模数据

这是Hadoop一个非常重要的特点和优点,Hadoop海量数据的处理能力十分可观,并且能够实现分布式存储和分布式计算,有统一的资源管理和调度平台,扩展能力十分优秀。在2008年的时候,Hadoop打破297 s的世界纪录,成为最快的TB级数据排序系统,仅用时209 s。

3.Hadoop被部署在一个集群上

承载Hadoop的物理实体,是一个物理的集群。所谓集群,是一组通过网络互联的计算机,集群里的每一台计算机称作一个节点。Hadoop被部署在集群之上,对外提供服务。当节点数量足够多的时候,故障将成为一种常态而不是异常现象,Hadoop在设计之初就将故障的发生作为常态进行考虑,数据的灾备以及应用的容错对于用户来说都是透明的,用户得到的只是一个提供高可用服务的集群。

了解了上面三点,我们就可以开始准备电梯演讲了。麦肯锡对电梯演讲的要求是“凡事要归纳为三点”,因为人们一般只能记得住一二三而记不住四五六,基于此,我们的Hadoop电梯演讲为“Hadoop是一个提供分布式存储和计算的软件框架,它具有无共享、高可用、弹性可扩展的特点,非常适合处理海量数据”,一共46个字。

1.1.2 Hadoop生态圈

一般来说,狭义的Hadoop仅代表了Common、HDFS、YARN和MapReduce模块。但是开源世界的创造力是无穷的,围绕Hadoop有越来越多的软件蓬勃出现,方兴未艾,构成了一个生机勃勃的Hadoop生态圈。在特定场景下,Hadoop有时也指代Hadoop生态圈。

图1-2所示是一个Hadoop生态圈的架构图。

图1-2 Hadoop生态圈

说Hadoop催生了一个产业毫不过分,目前围绕Hadoop做二次开发的公司非常多,其中最著名的当属Cloudera、Hortonworks和MapR(Cloudera、Hortonworks和MapR公司的标识如图1-3所示)。这三家公司技术实力都非常雄厚,其中Cloudera开发的CDH(Cloudera’s Distribution for Hadoop)已成为生产环境下装机量最大Hadoop发行版。CDH的特点在于稳定,并有许多重要的补丁、向后移植和更新。而Hontonworks比较有名的则是DAG(有向无环图)计算框架Tez。在一些应用场景中,为了利用MapReduce解决问题,需将问题分解为若干个有依赖关系的作业,形如一个有向无环图,目前MapReduce计算框架并不支持依赖关系为有向无环图的作业计算,而Tez的出现很好地解决了这一问题。另外,YARN这个重要组件也是由Hortonworks公司贡献。MapR公司的拳头产品MapR Converged Data Platform专注于数据的快速分析,Apache Drill也是由MapR主导开发的。

图1-3 Cloudera、Hortonworks和MapR

1.1.3 云计算的定义

云计算自从诞生之日起,短短几年就在各个行业产生了巨大的影响,而Hadoop作为云计算时代最耀眼的明星,又和云计算的提出者Google有着千丝万缕的联系。

自从2006年8月9日Google首席执行官埃里克·施密特在搜索引擎大会(SES San Jose 2006)率先提出了“云计算”这个名词后,其概念众说纷纭,相关领域的各方机构和专家分别从不同的角度对云计算进行了定义,有的从应用场景划分,有的从资源角度划分。本书选取美国国家标准技术研究院(NIST)对云计算的定义:“云计算是一种可以通过网络方便地接入共享资源池,按需获取计算资源(这些资源包括网络、服务器、存储、应用、服务等)的服务模型。共享资源池中的资源可以通过较少的管理代价和简单业务交互过程而快速部署和发布。”

从上面这个定义可以归纳出云计算的5个特点。

(1) 按需提供服务: 以服务的形式为用户提供应用程序、数据存储、基础设施等资源,并可以根据用户需求自动分配资源,而不需要系统管理员干预。例如,亚马逊弹性计算云(Amazon Elastic Compute Cloud,Amazon EC2),用户可以通过填写Web表单将自己所需要的配置,如CPU核数、内存大小提交给亚马逊,从而动态地获得计算能力。

(2) 宽带网络访问: 用户可以利用各种终端设备(如PC机、笔记本电脑、智能手机等)随时随地通过互联网访问云计算服务。

(3) 资源池化: 资源以共享资源池的方式统一管理。利用虚拟化技术,将资源分享给不同用户,资源的放置、管理与分配策略对用户透明。

(4) 高可伸缩性: 服务的规模可快速伸缩,以自动适应业务负载的动态变化。用户使用的资源同业务的需求相一致,避免了因为服务器性能过载或冗余而导致的服务质量下降或资源浪费。

(5) 可量化的服务: 云计算中心都可以通过监控软件监控用户的使用情况,并根据资源的使用情况对服务计费。

另外云计算还有些比较明显且重要的特点。

(1) 大规模: 承载云计算的集群一般都具有超大的规模,Google的有“信息核电站”之称的云计算中心具有100多万台服务器,Amazon、IBM、微软和雅虎等公司的“云”均具有几十万台服务器的规模,从这点上来看,云将赋予用户前所未有的计算能力。

(2) 服务极其廉价: “云”的特殊容错机制使得可以采用廉价的节点来构建“云”;“云”的自动化管理使数据中心管理成本大幅降低;“云”的公用性和通用性使资源的利用率大幅提升;“云”设施可以建在电力丰富的地区,从而大幅降低能源成本。因此“云”具有极高的性价比。Google中国区前总裁李开复称,Google每年投入约16亿美元构建云计算数据中心,所获得的能力相当于使用传统技术投入640亿美元,构建云计算数据中心投入成本是使用传统技术投入成本的1/40。根据微软公布的数据,使用微软的云计算平台Windows Azure的解决方案部署自己的Web应用,将会节约三分之一的成本,而成本还将会随着使用时间的延长而进一步降低。这正是为什么不仅CTO关注云计算,连CEO和CFO也对云计算高度关注的原因。

之所以称之为“云”,是因为云计算在某些地方和现实中的云非常符合,云的规模可以动态伸缩,它的边界是模糊的,云在空中飘忽不定,无法也无需确定它的具体位置,但它确实存在于某处。

1.1.4 云计算的类型

云计算按照服务类型大致可以分为基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)、软件即服务(Software as a Service,SaaS)3类,如图1-4所示。

图1-4 云计算的类型

IaaS作为云计算架构最底层,利用虚拟化技术将硬件设备等基础资源封装成服务供用户使用,用户相当于在使用裸机,既可以让它运行Windows,也可以让它运行Linux,既可以做Web服务器,也可以做数据库服务器(架构如图1-5所示),但是用户必须考虑如何才能让多个节点(虚拟机)协同工作起来。IaaS最大的优势在于它允许用户动态申请或释放节点,按使用量和使用时间计费。典型的虚拟化产品包括VMware vShpere、微软的Hyper-V、开源的KVM、开源的Xen。Amazon EC2/S3利用的是Xen这种技术。另外,目前关注度非常高的容器技术Docker也是属于IaaS。

图1-5 虚拟化技术

而PasS对资源进行更进一步的抽象,它提供了用户应用程序的应用环境,典型的如Google App Engine等。Google App Engine使用户可以在Google提供的基础架构上运行、开发、托管自己的应用程序。Google App Engine应用程序易于构建和维护,并可根据用户的访问量和数据存储的增长需求轻松扩展。使用Google App Engine,不再需要维护服务器,只需上传你的应用程序即可。PaaS自身负责资源的动态扩容、容错灾备,用户的应用程序不需过多考虑节点间的配合问题,但与此同时,用户的自主权降低,必须使用特定的编程环境并遵照特定的编程模型,这有点像在高性能集群计算机里进行MPI编程,只适合于解决某些特定的计算问题。例如,Google App Engine只允许使用Python和Java语言,基于Django的Web应用框架,使用Google App Engine SDK来开发在线应用服务。

SaaS的针对性更强,它将某些特定应用软件功能封装成服务,如Salesforce公司提供的在线客户关系管理(Client Relationship Management,CRM)服务。SaaS既不像IaaS一样提供计算或存储资源类型的服务,也不像PaaS一样提供运行用户自定义应用程序的环境,它只提供某些专门用途的服务供应用调用。

通过以上3个层面对云计算的介绍,我们可以看出云计算是集成服务的,图1-6比较清晰地表明云计算和服务集成之间的关系。

需要指出的是,随着云计算的深化发展,不同云计算解决方案之间相互渗透融合,同一种产品往往横跨两种以上的类型。例如,Amazon Web Service(AWS)是以IaaS为基础的,但新提供的弹性MapReduce服务模仿了Google的MapReduce、SimpleDB模仿了Google的Bigtable,这两者属于PaaS的范畴,而它新提供的电子商务服务FPS和DevPay以及网站访问统计服务Alexa Web服务则属于SaaS的范畴。

云计算技术作为IT产业界的一场技术革命,已经成为IT行业未来发展的方向。各国政府也纷纷将云计算服务视为国家软件产业发展的新机遇。需求驱动、技术驱动和政策驱动三大驱动力给云计算的发展提供了极大助力,在国外,由于云计算技术发展较早,有较强的技术基础和运营经验,商业模式也较为清晰,尤其是在美国,Google、Amazon、IBM、微软和Yahoo等都是云计算技术的先行者和佼佼者,众多成功公司还包括Facebook、VMware、Salesforce等。而国内虽然政策力度非常大,资金投入也比较多,但由于起步较晚,技术和商业模式学习欧美,采用复制并本地化的发展路线,因此云计算技术仍属于初级阶段。国内云计算技术走在前列的有华为公司、阿里巴巴集团、百度等,主要以互联网企业巨头和系统集成提供商为主。

图1-6 集成服务的云计算

1.1.5 Hadoop和云计算

在谷歌提出“云计算”的概念之前,谷歌工程师在全球顶级计算机会议OSDI和SOSP上连续发表3篇论文:SOSP 2003会议上的 The Google File System 、OSDI 2004会议上的 MapReduce: Simpliyed Data Processing on Large Clusters 和OSDI 2006会议上的 Bigtable: A Distributed Storage System for Structured Data ,在工业界和学术界引起了不小的震动,随后世界上顶级的开源团队(Yahoo、ASF)接手将其实现,可以说Hadoop是云计算的产物,是云计算技术的一种实现。

Hadoop做为一个分布式的软件框架,拥有云计算PaaS层的所有特点,是云计算的重要组成部分。Hadoop的分布式文件系统HDFS抽象了所有硬件资源,使其对于用户来说是透明的,它提供了数据的冗余,自动灾备,也可以动态地增加、减少节点;Hadoop也提供Java、C++、Python等应用程序的运行环境,但如果想基于Hadoop做应用开发,则必须参照MapReduce的编程模型,用户完全不需要考虑各个节点相互之间的配合。另外Hadoop还提供自己独特的数据库服务HBase以及数据仓库服务Hive。Hadoop也可以搭建在IaaS环境下,《纽约时报》使用Hadoop做文字处理就是基于Amazon EC2,当然这不是必须的。

Hadoop可以看做云计算技术的一种实现,而云计算的概念则更广阔,并不拘泥于某种技术。Hadoop作为云计算领域的一颗明星,目前已经得到越来越广泛的应用。 ZgCchADu8p+LGp5QwTiTUZH9vtIHuW2ctAEySCeHRvBp9A8CiH3c3BuSpH0z4vTm

点击中间区域
呼出菜单
上一章
目录
下一章
×