大数据技术入门(第2版)
上QQ阅读APP看书,第一时间看更新

1.2 大数据与云计算的关系

所谓云计算,就是通过Internet/Intranet云服务平台按需提供计算能力、数据存储和其他IT资源,采用按需支付定价模式。云服务平台让企业可以快速访问灵活且成本低廉的IT资源。通过云计算,企业无需先期巨资投入硬件,再花大量时间来维护和管理这些硬件。与此相反,企业根据需要访问(几乎是即时访问)云服务平台上的任意数量的资源,而且只需为所用资源付费。所以,借助云计算,你不用将基础设施视为硬件,而是将它视为软件来使用。

大数据IT架构的基本的特征,首先必须是横向扩展的,因为单点的技术无法承受大数据的要求。它的高可用性是通过软件设计和架构设计来实现的,而不是通过传统的高性能、高可用性的高端硬件设备来实现的。所以,从技术上看,大数据与云计算的关系就像一枚硬币的正反面一样密不可分。大数据必然无法用单台的计算机进行处理,必须采用分布式架构。而云计算的虚拟化技术和弹性扩展能力可以让大数据平台快速扩展或缩减计算容量。云存储为大数据提供了可扩展、高可用性、高持久性、安全的存储资源,保证了大数据平台的高效运行。

正如图1-4所示,未来的趋势是,云平台作为计算资源和存储资源的底层,支撑着上层的大数据平台,而大数据的发展为云计算的落地找到了更多的实际应用。大数据和云的融合是重大的趋势,这两个技术是相辅相成的关系。从美国的部署上看,大数据系统主要部署在公有云上,例如AWS、Azure和GCP(Google云平台),它们为大数据提供了基础设施服务。

1.2.1 云计算产品概述

因为云计算对于大数据是如此的重要,所以我们以Amazon(亚马逊公司)的AWS(Amazon Web Services)为例来看一个云计算平台必须具有的产品和功能,最后讲解云计算平台和大数据结合的一个实例。

AWS是一个云服务平台,提供一系列基础设施服务。它按照地理位置在全球分成多个区域(Region),在区域下面有多个可用区(Availability Zones,简称AZ),每个可用区由一个或多个数据中心组成。在本书编写时,它在全球20个地理区域内运行着61个可用区(http://aws.amazon.com/about-aws/global-infrastructure/)。AWS云基础设施围绕区域和可用区构建。AWS区域提供多个在物理上独立且隔离的可用区,这些可用区通过延迟低、吞吐量高且冗余性高的网络连接在一起。AWS允许在同一区域中使用可用区复制应用程序和数据,以增加冗余并增强容错能力。在AWS上创建虚拟机(EC2)时,需要指定区域和可用区(见图1-8)。

AWS总体上成熟度最高,Netflix、Pinterest、Airbnb等企业都在使用AWS。AWS提供了大量的基于云和大数据的产品,其中包括计算、存储、数据库、分析、联网、移动产品、开发人员工具、管理工具、物联网、安全性和企业应用程序。Amazon提供了AWS管理控制台(见图1-8所示)、AWS命令行工具(CLI)和AWS开发工具包三种方法来使用上述产品。硅谷的很多大型企业和初创公司都是基于AWS构建自己的系统。作为全球市场占有率第一的云计算公司,值得我们深入研究它的产品和布局,从而深刻理解云计算和大数据的关系。

如图1-5所示,S3(Simple Storage Service)是面向对象的存储,EC2(Elastic Compute Cloud)是基础的虚拟主机,DynamoDB是NoSQL数据库,Glacier对冷数据做归档处理,Elastic MapReduce(EMR)提供托管的Hadoop框架,使用EMR可以按需组建一个由节点组成的集群。这些集群用于Hadoop的安装和配置。Amazon提供了非常类似Kafka的服务,称之为Kinesis。它同时作为使用EC2进行分布式流处理的基础。在AWS上,用户只需点击几次鼠标和输入一些简单信息(如名称)即可启动这些基础设施。

图1-5 AWS服务列表

1.2.2 虚拟服务器

图1-6展示了AWS的所有计算组件。Amazon EC2提供基于云计算的虚拟服务器,EC2的一个实例(Instance)就是一个虚拟机,是一个云中的计算机。在物理服务器上执行的任何操作几乎都可在EC2实例上执行。在创建每个实例时,你可以选择不同的操作系统(包括Linux和Microsoft Windows Server)和软件包,选取所需的内存和CPU(实例类型见图1-7),配置网络、存储、安全组(Security Group)和Key(用于SSH连接)。客户在需要时可添加更多的EC2实例(虚拟机),在不需要时终止EC2实例,这些都可以在几分钟内完成。在AWS上可以同时管理一个、数百个,甚至数千个服务器实例。

图1-6 云计算组件

EC2提供了多种实例类型(见图1-7),实例类型由CPU、内存、存储和网络容量组成不同的组合,用户可以根据实际的工作负载选择适当的资源组合。关于各个实例的比较,可参考:https://www.ec2instances.info。

图1-7 EC2实例类型

图1-8显示了某知名大数据公司在AWS上的EC2实例。在该图的下方,显示了某一个实例的具体配置信息。还有,AWS支持创建服务器镜像,这些镜像被称为AMI(Amazon系统镜像),可在未来启动新实例。除了实例ID、名称等实例元数据之外,你还可以在实例上自定义标签(Tag)。标签可以对资源进行分类,例如按用途、拥有部门等。

图1-8 EC2实际使用案例

Amazon EC2提供了一个高度可靠的环境,EC2服务等级协议的承诺是为每个Amazon EC2区域提供99.99%的可用性。Amazon EC2 Auto Scaling可根据预先定义的条件(比如内存使用率)自动添加和删除EC2实例,以最大限度提高性能和降低成本。使用Auto Scaling的动态扩展功能,可以确保所使用的Amazon EC2实例数量在需求高峰期实现无缝增长(Scale Up)以保持性能,在需求低谷期自动缩减(Scale Down),以最大程度降低成本。Auto Scaling特别适合每小时、每天或每周使用率都不同的应用程序。除了上述的“动态扩展功能”之外,Auto Scaling还提供了计划和预测功能,会根据预测的需求(或预先设置的计划)自动安排正确数量的EC2实例。动态扩展和预测/计划扩展可结合使用,以实现更快的扩展。还有,Auto Scaling能够改进容错能力,它能够检测到运行状况不佳的实例,将该实例终止并替换为新实例。图1-9显示了某知名大数据公司在AWS上的Auto Scaling group的配置情况(仅限Hadoop集群部分)。

图1-9 Auto Scaling group实际使用案例(仅限Hadoop集群)

图1-9的下面部分显示了所有某一个Auto Scaling group的配置情况。图1-10显示了这个组下的各个实例(Instance),总共160个。

图1-10 某个Auto Scaling group的实例信息

通过“Create Auto Scaling group”可以创建新的Auto Scaling group。如果不需要某个Auto Scaling group,那么,就可以从Actions菜单上选择删除功能(见图1-11),图1-12显示了正在删除某一个Auto Scaling group。

图1-11 删除Auto Scaling group

图1-12 正在删除Auto Scaling group

当我们配置一个常规的服务器时,我们会配置它的存储,要么使用HDD,要么使用SSD类型的存储设备。作为虚拟服务器的EC2也是一样(见图1-13)。Amazon Elastic Block Store(Amazon EBS)可在AWS云中提供用于Amazon EC2实例的持久性块存储卷(Volume)。我们从前使用RAID机制来保证当其中一个磁盘出问题时,其他磁盘有其复制的数据。类似的作法,每个Amazon EBS卷都会在其可用区(Zone)内自动复制,以减少丢失数据的影响,同时提供高可用性和持久性。通过Amazon EBS,我们可在几分钟内调整用量大小,我们只需为配置的资源用量支付费用。另外,EBS支持通过快照(Snapshot)来备份数据和恢复数据。如图1-13所示,这个实例(Instance)有多个卷,图1-14显示了某个卷的详细信息。从Actions下面可以卸载(Detach)卷,然后挂载(Attach)到其他的实例(Instance)。

图1-13 某个实例的EBS配置信息

图1-14 卷的具体信息

Amazon EBS的典型使用案例包括:大数据分析引擎(如Hadoop/HDFS生态系统和Amazon EMR集群)、关系和NoSQL数据库(如Microsoft SQL Server和MySQL或Cassandra和MongoDB)、流和日志处理应用程序(如Kafka和Splunk),以及数据仓库应用程序(如Vertica和Teradata)。

1.2.3 云存储

图1-15展示了AWS的所有存储组件。在大数据时代,我们经常需要能够轻松安全地大规模存储数据。上节讲述了同EC2一起使用的EBS,本节我们讲述云存储,它独立于具体的服务器,操作上类似我们使用的云盘。Amazon S3是专为云端存储数据而构建的对象存储。通过S3,我们能够灵活地在云端存储数据,以实现成本优化、访问控制和合规性。根据Amazon的官方网站上的信息,S3提供99.999999999%的持久性,并已经存储了多个行业的数百万个应用程序的数据。如图1-16所示,Amazon S3将数据作为对象存储在被称为“存储桶(Bucket)”的资源中。我们可以在一个存储桶中存储对象,并读取和删除存储桶中的对象。对象大小最多可为5TB。在一个桶中的数据会复制到Region的其他区域,以防止数据丢失。在桶中的每个对象都有一个Key,类似文件系统上的路径和名字(media/welcome.mp4)。S3提供存储管理界面,图1-17显示了一个使用S3的实例,我们有377个桶,分布在14个Region。

图1-15 云存储组件

图1-16 存储桶

图1-17 S3使用实例

S3提供了三种方式创建和访问桶上的数据,分别是AWS管理控制台、AWS CLI和AWS SDK。我们将在第4章中详细讲解S3。