阿里数据分析师面试准备一:云计算基础知识


1.     云计算概述

云计算核心服务通常可以分为三个子层基础设施即服务层(IaaS, Infrastructureas a Service)、平台即服务层(PaaS, Platform as a Service)、软件即服务层(SaaS, Software as a Service)。表1对3层服务的特点进行了比较。

1 IaaS、PaaS、SaaS的比较

 

服务内容

服务对象

使用方式

关键技术

系统实例

IaaS

提供基础设施部署服务

需要硬件资源的用户

使用者上传数据、程序代码、环境配置

数据中心管理技术、虚拟化技术等

Amazon EC2、Eucalyptus等

PaaS

提供应用程序部署与管理服务

程序开发者

使用者上传数据、程序代码

海量数据处理技术、资源管理与调度技术等

Google App Engine、Microsoft Azure、Hadoop等

SaaS

提供基于互联网的应用程序服务

企业和需要软件应用的用户

使用者上传数据

Web服务技术、互联网应用开发技术等

Google Apps、Salesforce CRM等

IaaS提供硬件基础设施部署服务,为用户按需提供实体或虚拟的计算、存储和网络等资源。在使用IaaS层服务的过程中,用户需要向IaaS层服务提供商提供基础设施的配置信息,运行于基础设施的程序代码以及相关的用户数据。由于数据中心是IaaS层的基础,因此数据中心的管理和优化问题近年来成为研究热点。另外,为了优化硬件资源的分配,IaaS层引入了虚拟化技术。借助于Xen、KVM、VMware等虚拟化工具,可以提供可靠性高、可定制性强、规模可扩展的IaaS层服务。

PaaS是云计算应用程序运行环境,提供应用程序部署与管理服务。通过PaaS层的软件工具和开发语言,应用程序开发者只需上传程序代码和数据即可使用服务,而不必关注底层的网络、存储、操作系统的管理问题。由于目前互联网应用平台(如Facebook、Google、淘宝等)的数据量日趋庞大,PaaS层应当充分考虑对海量数据的存储与处理能力,并利用有效的资源管理与调度策略提高处理效率。

SaaS是基于云计算基础平台所开发的应用程序。企业可以通过租用SaaS层服务解决企业信息化问题,如企业通过GMail建立属于该企业的电子邮件服务。该服务托管于Google的数据中心,企业不必考虑服务器的管理、维护问题。对于普通用户来讲,SaaS层服务将桌面应用程序迁移到互联网,可实现应用程序的泛在访问。



2.     核心服务的关键技术

2.1基础设施即服务

IaaS层是云计算的基础。通过建立大规模数据中心,IaaS层为上层云计算服务提供海量硬件资源。同时,在虚拟化技术的支持下,IaaS层可以实现硬件资源的按需配置,并提供个性化的基础设施服务。基于以上两点,IaaS层主要研究两个问题:1)如何建设低成本、高效能的数据中心;2)如何拓展虚拟化技术,实现弹性、可靠的基础设施服务

数据中心网络设计:为了弥补传统树形拓扑结构的缺陷,在传统的树形结构中加入了类似于mesh的构造,使得节点之间连通性与容错能力更高,易于负载均衡。对于数据中心节能技术:Google的分析表明,云计算数据中心的能源开销主要来自计算机设备、不间断电源、供电单元、冷却装置、新风系统、增湿设备及附属设施(如照明、电动门等)。

虚拟化是IaaS层的重要组成部分,也是云计算的最重要特点,包括:虚拟机快速部署技术和虚拟机在线迁移技术。

典型的IaaS平台,包括AmazonEC2、Eucalyptus和东南大学云计算平台。

2.2平台即服务

随着数据密集型应用的普及和数据规模的日益庞大,PaaS层需要具备存储与处理海量数据的能力。

海量数据存储技术:为Google设计了GFS文件系统(Google FileSystem)。图6展示了GFS的执行流程。在GFS中,一个大文件被划分成若干固定大小(如64MB)的数据块,并分布在计算节点的本地硬盘,为了保证数据可靠性,每一个数据块都保存有多个副本,所有文件和数据块副本的元数据由元数据管理节点管理。Bigtable是基于GFS开发的分布式存储系统[31],它将提高系统的适用性、可扩展性、可用性和存储性能作为设计目标。Bigtable的功能与分布式数据库类似,用以存储结构化或半结构化数据,为Google应用(如搜索引擎、Google Earth等)提供数据存储与查询服务。

海量数据处理技术:MapReduce是Google提出的并行程序编程模型,运行于GFS之上。如图8所示,一个MapReduce作业由大量Map和Reduce任务组成,根据两类任务的特点,可以把数据处理过程划分成Map和Reduce 2个阶段:在Map阶段,Map任务读取输入文件块,并行分析处理,处理后的中间结果保存在Map任务执行节点;在Reduce阶段,Reduce任务读取并合并多个Map任务的中间结果。MapReduce可以简化大规模数据处理的难度:首先,MapReduce中的数据同步发生在Reduce读取Map中间结果的阶段,这个过程由编程框架自动控制,从而简化数据同步问题;其次,由于MapReduce会监测任务执行状态,重新执行异常状态任务,所以程序员不需考虑任务失败问题;再次,Map任务和Reduce任务都可以并发执行,通过增加计算节点数量便可加快处理速度;最后,在处理大规模数据时,Map/Reduce任务的数目远多于计算节点的数目[6],有助于计算节点负载均衡。


基于海量数据的存储于处理技术有一系列的资源管理与调度策略。(1)副本机制是PaaS层保证数据可靠性的基础。目前,Hadoop采用了机架敏感的副本放置策略。该策略默认文件系统部署于传统网络拓扑的数据中心。以放置3个文件副本为例,由于同一机架的计算节点间网络带宽高,所以机架敏感的副本放置策略将2个文件副本置于同一机架,另一个置于不同机架。这样的策略既考虑了计算节点和机架失效的情况,也减少了因为数据一致性维护带来的网络传输开销。(2)任务调度算法。为了减少任务执行过程中的网络传输开销,可以将任务调度到输入数据所在的计算节点,因此,需要研究面向数据本地性(Data-Locality)的任务调度算法。Hadoop以“尽力而为”的策略保证数据本地性。虽然该算法易于实现,但是没有做到全局优化,在实际环境中不能保证较高的数据本地性。(3)容错机制。为了使PaaS平台可以在任务发生异常时自动从异常状态恢复,需要研究任务容错机制。MapReduce的容错机制在检测到异常任务时,会启动该任务的备份任务。备份任务和原任务同时进行,当其中一个任务顺利完成时,调度器立即结束另一个任务。

典型的PaaS平台:Google App Engine、Hadoop和Microsoft Azure。

2.3软件即服务

SaaS层面向的是云计算终端用户,提供基于互联网的软件应用服务。随着Web服务、HTML5、Ajax、Mashup等技术的成熟与标准化,SaaS应用近年来发展迅速。

典型的SaaS应用包括Google Apps、Salesforce CRM等。

 

 

相关内容