阿里数据分析师面试准备一:云计算基础知识
阿里数据分析师面试准备一:云计算基础知识
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等。
评论暂时关闭