第2章 背景知识与相关工作
2.1 引论
众所周知,当前虽然大数据里蕴藏着大价值,更意味着大机遇,但是如何从数据中快速、准确以及有效地提取有价值的信息却一直困扰着我们,即数据处理的关键技术和相关领域都面临着前所未有的挑战,例如:数据处理的工程技术、数据的管理策略,以及数据分析方面的人才培养等。要想很好地把握和利用这个大机遇,让大数据的价值最大化,我们就必须先解决这些基础性的挑战问题。
目前,数据的发展仍然被多种技术所束缚,如图2-1所示,主要有:数据采集时的去冗降噪技术、成本效益高的数据存储技术、针对数据各种类型的高效处理与分析技术、针对不同行业的数据挖掘技术,以及有效降低能耗的新技术等。到目前为止,这些技术都有待于我们进一步研究与完善,都是该领域的研究热点问题,不仅具有理论研究意义,而且更具有广阔的商业价值。
图2-1 数据相关技术
在本章中,我们针对云计算环境下数据处理中的关键技术进行了分析和探讨,主要介绍了云计算的相关知识以及数据处理的关键技术,包括:虚拟化技术、云存储技术和分布式计算等。另外,在本章中,我们重点在云计算环境下针对数据的数据管理、任务调度以及容错机制等方面进行了分析研究,并对目前存在的几个关键问题进行了阐述,为后面的主要研究工作介绍做好铺垫工作。
2.2 云计算及其关键技术
云计算[6,7,11-13]这个新名词是在2007年第三季度才出现的,然而仅过了半年多时间,在Google、IBM、微软等公司强有力的推动下,被关注的程度就已经远远超过了网格计算。云计算在中国的发展是从2008年开始的,当时被视为中国IT界和通信界所关注的核心。Google率先提出了云计算的概念和理念,并指出这种服务可以是任意一种形式的服务,并具有超大规模、安全可靠和虚拟化等特有功效。通过采用云计算技术,系统内各类IT资源能被有效整合,并基于虚拟化技术,来实现内部计算能力、存储空间、网络带宽等资源的共享,分配比较灵活,可以适应当前飞速发展的业务需求,同时降低IT总体持有的服务成本。
云计算把基础设施、平台和软件都作为服务提供给用户,而这些服务都是在即用即付模式下的基于订购式的服务。这些服务在产业中分别被称为基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。关于云计算的概念有很多种说法,总结一下,可以理解如下:
云计算[13-16]是一种新兴的商业计算模型,可以通过互联网的方式,以便利、按需付费的方式来获取用户所需的计算资源(包括:网络带宽、存储空间、服务器、应用以及信息服务等),这些资源都是分布在一个共享的、可配置的、由大量计算机所构成的资源池中,并可以提供IT资源的弹性伸缩服务,且能以最省力、最方便和无人干预的方式进行实时资源获取和释放。
2.2.1 云计算的体系结构
由于不同厂家的云计算所提供的解决方案不同,到目前为止仍然没有统一的云计算技术体系结构。在此,我们综合考虑了不同云计算厂家的方案,归纳出云计算技术体系结构的一般结构图,如图2-2所示[13-16]。云计算的技术体系结构一般可以分为四层,分别是:
图2-2 云计算技术体系结构的一般结构图
(1)物理资源层:包括各种计算机、存储器、数据库、软件以及网络设施等,用以确保用户的各种请求。
(2)资源池层:将云平台中的各类资源进行有效整合,尽量达到同构或近似同构的资源池。在该层中,重点是所有物理资源的有效集成以及管理等。
(3)管理中间件层:该层的主要任务是对云平台中的所有资源进行高效管理,同时,可以对任务进行调度,以达到所有的资源可以为用户提供安全、可靠、高效的优质服务。
(4)SOA构建层:云计算的能力被封装成标准的Web Services服务,并嵌入到SOA体系中被使用和管理。例如:服务注册管理、服务查找管理、服务访问管理和工作流管理等。
赵庶静从航务海事信息的资源利用率和规范化、智慧化、信息共享与扩展性系统平台建设问题出发,分析云计算在航务系统中应用的价值与优势,提出将信息系统架构分为资源层、平台层与应用层的多层架构模式,对云计算特点、海事信息系统架构以及制程技术进行了深度的探讨与研究分析,为海事系统中云计算的应用奠定了基础[17]。KIM,H 提出了一个增强的可信云计算平台,以提供用户数据和计算的机密性和完整性,所提供的平台提供安全且高效的虚拟机管理协议,不仅可以防止窃听和篡改传输,还可以保证虚拟机仅托管在可信云端节点上以抵御内部攻击者,该协议利用对称密钥操作和公共密钥操作一起使用高效的节点认证模型,因此加密操作和通信步骤的计算成本都显著降低[18]。从云计算的可信服务组合应用出发,孟顺梅提出以服务资源层、可信服务推荐层、可信服务组合层以及可信服务执行层构建可信服务组合框架,优化云环境下系统的安全性[19]。华英针对现代数据挖掘过程中面临的数据复杂程度高以及数据访问量大的问题,设计了基于云计算环境下的大数据挖掘体系架构,降低了企业和运营商在数据挖掘技术中的投入,减少了研发周期,可以帮助企业实现动态资源池的配置和数据分析,满足企业的需求,有效地提高了产品的效率[20]。Weishan Zhang提出了一种通用的基于云的架构和平台,可以为视频数据的智能分析和存储提供强大的解决方案,称为BiF(与快速处理集成的批处理)架构。我们已经实施了 BiF 使用 Hadoop 平台和 Storm平台的架构,分别是典型的离线批处理云平台和在线实时处理云平台。所提出的架构可以有效地处理连续监视视频数据,其中无缝集成实时分析、批处理、分布式存储和云服务,以满足视频数据处理和管理的要求,评估表明,所提出的方法在性能、存储和容错方面是有效的[21]。Ubaidullah Alias Kashif描述了云服务提供的巨大潜在优势如何使企业对采用云计算表现出极大的兴趣,由于服务提供商可以控制存储在云上的组织的整个数据,因此无论是内部的还是外部的恶意活动都可以篡改数据和计算。这导致企业由于隐私、安全和信任问题而缺乏对服务的信任。尽管存在此类问题,但消费者没有根级访问权限来保护和检查采购资源的完整性。为了在消费者和提供者之间建立信任,期望让消费者检查在提供者一侧托管的采购平台的安全性,Ubaidullah Alias Kashif提出了一个架构设计用于IaaS云计算的可信平台,消费者可以通过该平台检查客户平台的完整性。TCG 的 TPM 在消费者方面被部署和使用,作为所提出的体系结构的核心组件,并且它在服务提供者和消费者之间分发[22]。
2.2.2 云计算的服务模式
在我们的日常生活中,各种各样的云服务随处可见。例如:Google提供的云服务包括Google文档、Google云打印机、Google地图以及Google Gmail等;以及腾讯公司为我们提供的QQ空间在线制作Flash图片等。这些服务可以分为:基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS),如图2-3所示[5-7]。
图2-3 云计算的服务类型
IaaS(Infrastructure as a Service,基础设施即服务)是将云平台中的所有硬件设备等资源进行封装,并作为一种服务供用户使用。在IaaS中,用户可以根据自己的业务特点选择不同的操作系统,来完成自己想做的事情。例如:Amazon的EC2[1](弹性计算云)和S3[2](简单存储服务)。
PaaS(Platform as a Service,平台即服务)是对资源的进一步抽象,它提供给用户的服务是应用程序的运行环境。例如:Salesforce.com的Force.com[3]、Microsoft Windows Azure[4]和Google App Engine[5]。
SaaS(Software as a Service,软件即服务)是把某些应用软件作为服务封装起来,用户不必亲自动手来安装所需的软件,而是直接向云服务商购买该服务就可以了。例如:Salesforce online CRM[6]和Microsoft的Office Live[7]。
叶燕涛分析和比较了几种物流园区信息平台服务模式,提出了构建基于云计算的物流信息平台,建立了基础设施层(IaaS)、平台服务层(PaaS)和应用服务层3个层次,为物流园区进行服务创新提供借鉴[23]。
2.2.3 云计算的优势分析
徐伟对云计算安全性的优势和风险进行了分析,得出云计算安全的优势主要有资源集中效益、更新和默认选项更有效、审计与取证、快速智能化资源升级、标准化管理安全服务的接口、安全作为市场分化元素、规模的安全与优势等方面[24]。王丹从 IT 产业层面以及维护层面对云计算在专业分工、产业布局优化、降低管理成本与运营投资和提升资源利用效率等方面的优势进行详细的分析[25]。郑辉描述了云计算对中小企业信息化影响,明确了云计算对中小企业应用优势的分析,包括中小企业云计算应用的成本优势分析、云计算下价值活动本身本身优势、云计算下企业内部优势、基于价值链的优势分析等[26]。
通过使用云计算,我们可以发现,云计算的服务模式与传统IT服务模式相比,具有很多的优势[5-7,13-16],具体分析如下。
1.成本降低
云计算的成本一般由三部分构成,分别是构建成本、管理成本和能源成本。之所以说云计算可以降低成本,原因有三个:首先,在构建成本中,云平台一般都是由廉价的云节点构建而成的;其次,在管理成本中,云计算通常采用自动化管理,这使得数据中心的管理成本大大地降低;最后,在能源成本中,云计算一般都建立在电力资源比较丰富的地区,并且采用一定的措施,可以使能源成本大大地降低。作为用户,我们只需要通过向云服务提供商租赁所需的IT资源,以按需支付的方式付费,便可以为用户节省大量购置、安装以及管理软硬件的费用。低成本应用优势主要针对的是使用云服务的企业用户或个人用户。美国在国内倡导的“蓝领计算计划”(一种云计算应用),意味着要投入巨额的人力、物力、财力。“蓝领计算计划”帮助美国中小企业突破了成本和开发上的障碍。中小企业可以租用超级计算中心的硬件、软件资源,甚至可雇用超算中心的专家队伍,大大降低了高性能计算的使用门槛。云计算的高可扩展性是指云的规模可以动态伸缩,满足应用和用户规模增长的需要[27]。
2.提高资源利用率
据统计,在全球所购置的计算机中,被利用的计算机能力仅有30%,甚至低于30%,实际上,剩下的70%资源是没有被使用,而是闲置的。传统的数据中心在资源的高效利用和业务的可用性之间根本无法兼顾,通常都是顾此失彼,造成大部分企业数据中心的资源利用率远远不足15%。而采用云平台,可以让企业共同使用一个很大的资源池,它的规模可以根据实际情况随时调整,还可以采用动态资源的调度机制来对资源的合理分配进行实时监控和调整,使资源的利用率超过80%。
3.弹性计算和存储能力
通常情况下,云平台都是由数以万计甚至更多的服务器集群所构成的。这使得云平台可以为数据管理和数据存储提供无限大的资源和空间,同时也为不同用户的各种服务提供丰富的支持。
4.灵活定制
云计算平台可以为用户提供灵活定制的服务。根据自己的爱好或要求,用户可以灵活地定制其所需要的服务,包括:定制应用、资源的部署、计算能力和存储服务等。
5.高可靠性
在云服务器端,为用户提供了最可靠和最安全的数据存储中心,即使在动态迁移的过程中,云平台也能保证应用和计算的正常运行。云计算提供近乎无限的计算能力和海量数据的存储能力,并且云端数据无须用户容灾、备份,安全性得到有效保障。用户在处理显示效果要求较高、计算量和存储量较大的任务时,就不再依赖移动终端设备的性能,只要把移动终端设备接入云计算,这个过程中,在云端的处理速度和参数传递速度都很快,从而保证了信息处理能力。此外,用户所有的数据都存储在云端服务器中,用户不再负责保存和备份数据,这就保证了资源的可靠性[28]。
6.安全性
用户的数据或资料都存储在“云”端,如果用户的终端设备出现损坏或报废等问题,用户的数据或资料也不会有任何的损失。当用户需要这些数据时,只需从“云”端提取即可[29]。Canetti 等人提出使用二进制树加密机制和双线性映射构造了安全性的公钥加密机制。中国密码学家胡予濮教授发现了著名的GGH多线性映射的安全缺陷,从而保证了安全性[30]。云计算拥有文件备份、断点传输和数据恢复等多重保护机制,杜绝因为意外给客户带来巨大的财产损失。云计算这种保护机制,也有效地降低了云计算服务提供商对云计算设备的日常维护成本,相应的客户也可以较低的费用体验到高质量的云计算服务[31]。
2.2.4 云计算的国内外发展现状
云计算最早源于Google公司,由于技术的不断提升,著名的“Google云”产生,现如今已经广泛运用到各个领域[32]。随着云计算的快速发展,云计算已经在各个领域的应用都取得了显著成效。云计算技术的突破,为云计算的发展创造了有利条件,使云计算的相关理论日趋成熟,尤其是美国等一些发达国家,美国搭建了许多完善的云平台架构,IBM、微软等利用云计算提供相应的云产品和云平台。美国政府的大力支持,使云计算在商业以及军事领域广泛应用。在任务调度和资源分配问题上,Tripathy B等人提出了一种基于定向搜索优化(DSO)的人工神经网络(ANN)和径向基函数神经网络(RBFNN)的工作流程调度[33]。Tang Z等人考虑了任务的信息(即任务完成时间和任务的大小),并且在自适应调度技术中使用该信息来减少总处理时间和平均响应时间[34]。Tsai等人提出了一种采用改进的差分进化算法的多目标方法。该现有方法为云计算提供了成本和时间模型。但是,在这种方法中不考虑任务的变化[35]。Magukuri等人提出了一种不考虑作业大小的负载均衡和调度算法。作者考虑了服务器在满足请求时的刷新时间[36]。Cheng 等介绍了基于休假排队模型的任务调度。该方法未显示资源的适当利用[37]。林等人提出在考虑带宽作为资源的同时调度任务,已经形成了非线性编程模型以将资源分配给任务[38]。Ergu等人提出了基于AHP排序的任务调度[39]。朱等人引入了滚动时域调度架构来安排实时任务,通过资源分配说明了任务调度与节能之间的关系[40]。国内云计算起步较晚,发展相对滞后,但是随着我国经济的快速发展,云计算在商业和计算中的优势非常明显。国内的移动“大云”和阿里的“阿里云”在近十年的发展中也有了很大的成就。全球云计算大会从首届到2018年已经连续6年都在中国召开,标志着中国是“云”大国,有很大的市场潜力[41]。在政府的大力支持下,中国的一些大型互联网企业以及一些高校对云计算的研究力度不断加大,努力打造符合中国国情的“中国云”[42]。
王国峰分析和总结了模式内部威胁,从用户和云管理的角度对云计算平台中的用户数据进行保护制定了云服务端执行和访问代理执行的密文搜索方案,提出了基于操作频率分析的用户识别算法,可有效地检测用户行为是否异常[43]。姜涛针对云数据定位存储问题,提出了云服务提供商间的合作营利数据外包模型,有效地防止了云服务提供商的再次外包存储用户数据。针对支持多用户数据完整性审计方案难以支持密文的数据动态操作问题,提出了支持群用户数据更新的公开可验证性审计方案,实现了数据的安全审计功能[44]。云任务调度方法的好坏直接影响着云平台的性能,针对此问题,盛小东提出了基于模板遗传算法的任务调度算法,与Min-Min算法相比任务集合完成时间降低了20%左右,与遗传算法相比任务集合完成时间降低了30%左右,是一种有效的任务调度算法[45]。卢晶针对当前密度峰值聚类算法的高复杂度和高算量等问题,研究了一种基于 z 值的分布式密度峰值聚类算法(DP-z),该算法有效地提高了算法的执行效率,减少了大量无效距离计算和数据传输开销,提高了聚类算法的准确性[46]。为提升云平台的对外服务能力和云计算下的大数据高效并行处理,丁言提出了一种新的针对长期负载均衡优化基于聚类分析与贝叶斯定理的启发式多任务部署方法 LB-BC(Load Balancing approach based on Bayes theorem and Clustering)以及一种节能感知基于改进人工蜂群算法与贝叶斯概率模型的启发式虚拟机动态迁移位置选择策略PS-ABC(Placement Selection policy based on improved Artificial Bee Colony and bayes)[47]。张楠提出了面向功耗与任务执行稳定性优化的资源调度算法,该算法实现了对任务执行过程中的功耗和稳定性的同时优化,并且该算法对传统轮盘赌选择算子进行了优化,大大提高了算法的收敛速度,减少了算法的执行时间[48]。Qiong Wu针对当前的数据调度算法无法充分利用多核环境中节点的带宽资源,导致服务器负载过重、多媒体文件播放不连续的问题,提出了一种多媒体云计算平台数据动态任务调度方法。在多核处理器相关理论的基础上,建立了系统模型和多媒体云计算平台数据动态任务模型,在此基础上引入了多媒体云计算平台数据动态任务调度策略,仿真实验结果表明,该方法具有很高的调度性能[49]。卢迪针对云计算资源配置的公平性问题,提出了动态评估框架公平性(DEFF),描述了云计算环境下资源需求的动态特性和计算节点数,并且采用几种典型的资源分配算法,证明了公平性评估的有效性[50]。刘芳针对当前船舶敏感数据泄漏防止方法中数据隐藏率低和加密速度慢的问题,提出了一种新的云计算平台下的防泄漏方法。首先,船舶通信网络采用k匿名处理,计算了船舶通信节点集群的敏感数据丢失。其次,通过敏感数据的丢失,获得了全船通信网络中匿名化的敏感数据丢失船舶通信节点的匿名集群,然后计算船舶通信敏感数据的丢失率。最后,采用椭圆加密机制实现加密。采用该方法,船舶通信敏感数据的平均隐蔽率约为80%,船舶通信敏感数据加密的平均速度达到33MB/s。证明了该方法具有良好的隐蔽性能,可以防止敏感数据泄露,提高隐藏率和加密[51]。丁国军以后期扩容运营提高产业经济效应为研究方向,对云计算环境的技术现状进行分析,对服务器的资源存储计算方法以及参数的优化提出了合理的建议,为云主机业务在资源池的构建以及一般云主机的业务模型参数优化提出了有效的方法[52]。
众所周知,Google、Yahoo、IBM、微软和Amazon等公司都是云计算的先驱者。另外,在云计算领域中,做得比较成功的公司还包括:
(1)全球做虚拟化解决方案的领导厂商VMware。
(2)美国社交网络服务网站Facebook,它是目前世界排名第一的照片分享站点。
(3)全球按需CRM解决方案的领导者Salesforce。
(4)全球第二大的社交网站MySpace。
(5)世界上最大的视频分享网站YouTube等。
由于这些实力较强的云服务公司的大力推动,使得云计算发展非常迅猛,到目前为止,成熟度也较高。越来越多的机构对云计算的优势也已经给予认可。当前,已经出现了很多商业的云计算应用平台,图2-4总结了2007年至2014年,著名的云公司所引领的云计算发展现状和大事件。
云计算的目的是推动下一代数据中心的发展,通过架构这些数据中心来作为虚拟服务的网络。这些虚拟服务包括:硬件、数据库、用户界面、应用逻辑等。下一代云服务提供商应该能够满足以下需求:①对于工作量的突然猛增的情况,我们可以动态地从其他的云服务提供商那里租赁计算和存储能力,以扩大和提高自己的应对能力;②云服务提供商之间要通过市场价格进行竞争,并与用户之间要有合理的服务等级协议(Service Level Agreement,SLA);③基于虚拟化技术,按需提供可靠的、成本效益好的服务,以确保高服务质量和最小化服务成本。
图2-4 截至2014年云计算发展状况
无论是公有云、私有云,还是混合云,只要是独立的云平台,那么它的资源和计算能力终归是有限的,面对当今飞速增长的大数据,无论是数据量还是速度上来看,总会有资源缺乏的时候。因此,云计算技术正在向新的方向发展—互联云(InterCloud)[53~55]。
互联云又称网际云,也叫联盟云,是云计算服务发展的一种新模式。互联云将不同云服务提供商的服务和资源融入其框架之中,通过跨云资源的弹性分配以及无缝对接机制,保证部署在跨云环境中的大规模云服务面向不同地理分布用户提供更可靠的QoS服务等级保证[53]。从根本上说,互联云提供的是一种强大的跨平台互操作能力,以融合互联云的各子平台资源,达到资源与服务能力无缝扩展、统一分配的目标,而这正是不断扩张的大数据相关应用所迫切需要的底层平台支撑[54]。自2012年IEEE成立Intercloud互联云工作组(ICWG/2302)[55]开始,互联云的研究在国际上已经呈现出一种遍地开花的趋势。然而,由于互联云的相关研究正处在起步阶段,目前国际上对互联云的研究多集中在互联云体系结构、互操作模式、标准化以及实验环境等方面,而真正面向数据中心的互联云服务的融合、资源分配及调度问题尚未得到有效解决[56~91]。
2.2.5 云计算的关键技术及现状
云计算管理技术是一种为了保证数据在云平台的高效调用并执行的过程,而对云计算系统中的大量数据进行调用、计算、分析处理的技术。BigTable 是云计算数据管理技术中比较成熟的一种技术。BigTable 技术首先将数据读入到云计算处理系统中,然后按照关键字对数据进行排序,使在操作数据的过程中可以大大节省时间。Google公司将BigTable技术成功应用到Google Earth项目中使Google公司在云计算方面处于世界领先水平。姜栋瀚等对云计算过程中的相关关系与关键环节的国内外研究进行梳理总结,阐述了云计算在民用领域以及军事领域上的重要意义,提出了一种新的云计算资源管理框架[69];云计算数据外包过程中,现有的解决方案不能应对第三方审计者(TPA)恶意违反审计协议的问题,提出了BLA-MHT以及BLA-2-3树两种新型动态数据结构,以在此基础上提出了能够应对任何不可信实体的远程动态数据审计方案,此技术能够有效解决该问题[70]。郭煜以可信计算技术与云计算环境相结合,对安全的存储、访问认证等过程提供了基础支持,通过三层防护体系技术以及云计算安全管理的4个核心组件构建可信云体系结构,提高了云计算系统的安全性,保证了安全策略能够快速、安全地下发[71]。曹晨磊从建立云实体具有可鉴别性的环签名身份出发,对移动云系统的安全域进行合理的划分,基于 HIBE 算法理论更深层次的划分安全域的子域,建立层级化身份的密钥协商协议,设计出基于身份的可撤销匿名性环签名方案[72]。黎明为解决云计算环境下通信开销大,资源调度中易出现单点失效的问题,将并行遗传退火算法进行改进并应用于多代理的云计算资源调度模型,并通过仿真实验,证明了该技术的有效性[73]。
王清鑫针对云计算任务调度问题,提出了一种基于城市权重的蚁群算法,并在TSP环境下进行仿真,改进后的算法可以显著提高收敛速度,并在此基础上提出了果蝇蚁群融合算法,应用TSP问题进行验证,在快速游动精度和速度上都得到了很大的提高[74]。针对传统分析训练数据集的方法不能有效解析负载序列的变化特点这一问题,李生提出了一种有小波包变换、正余混沌双弦鲸鱼优化算法和多层感知器神经组成的云计算资源负载预测模型,强化了人工鲸鱼种群的信息交流,避免了种群个体陷入局部最优,同时也减少了寻优盲点,加快了收敛速度,提升了云计算资源负载预测模型的性能[75]。周作建以提高推荐准确率和降低数据稀疏性为研究目标,通过优化上下文感知、系统推荐技术,提出了基于动态协同过滤服务的推荐模型,并在此基础上改进拓扑排序算法构建预测服务推荐体系结构,最终应用于移动云环境下的服务推荐方面[76]。Xiaobo Ji提出了基于云计算平台资源监测的数据传输策略,分别是动态周期推送策略、基于窗口的事件驱动推送策略和基于窗口的混合推送策略,通过考虑资源状态信息的变化程度,结合动态周期性推送策略和基于窗口的事件驱动推送策略以动态更新的动态时间间隔周期性地推送资源状态信息,依据资源状态信息的变化程度,通过使用指数加权移动平均值动态更新的阈值基于窗口的事件驱动推送策略推送资源状态信息,进一步减少通信开销并提高数据一致性[77]。实验结果表明,基于窗口的混合推送策略在数据传输次数和数据一致性方面比以前的数据传输策略表现更好。张东波针对当前海量的交通数据处理面临的问题,从大数据聚类算法、浮动车交通参数估计、交通状态信息估计以及大规模交通路网的最短路径诱导算法等方面进行研究,改进了k-means 聚类算法,解决了局部陷阱迭代次数增长较快和耗时增加等问题[78]。李妍针对国家电网终端管理的运维成本、能耗成本以及信息安全等方面的问题,基于当下流行的云存储技术、云计算技术、结合虚拟化技术等进行设计,结合电力行业特点以及国家电网天津电力公司运行情况设计了基于云计算技术的电力系统虚拟办公自动化系统,大大提升了员工的工作效率,节省了电力公司的运营成本[79]。郑坤锋针对信息资源组织、信息资源服务所面临的任务进行分析,在内涵界定、需求分析、功能实现的基础上构建了信息资源组织与服务云平台模型,提出了促进平台高效运行的运行机制[80]。古雄针对传统实时报警系统耦合过于紧密、语音播报种类单一、灾备能力较弱、短信报警方式缺失等问题,开发了一套SOA架构下基于云计算平台的语音及短信实时报警系统。将实时报警作为一个独立的功能模块接入到调度自动化系统中,解决了传统报警系统耦合度高,不利于系统维护升级的问题,通过语音与报警信息的同步技术,保证了报警信息与报警语音的同步精准播报[81]。周杰针对物流企业服务交易的信息安全、智能化和自动化问题,提出了物流区块链、云物流区块链的定义、物流区块链云计算模型以及相关理论根据使用拜占庭算法的基本原理和物流区块链云计算模型,提出了基于云计算的物流区块链共识算法,在一定程度上解决了物流区块链数据存储安全信任问题[82]。李能能针对数据在传输过程中面临着恶意攻击的问题,提出了一种基于非对称加密的Kerberos认证协议应用于客户端与云服务端之间的解决方案,针对数据在存储过程中频发的由于密钥被破解而导致的数据非法访问的现象,提出了基于RSA加密技术一次一密加密的可信第三方平台数据安全方案,大大降低了破解密钥和非法访问数据库的可能性[83]。余盛季以提高云服务提供商的整体利益为研究方向,对于多用户对关键资源的竞争引发资源冲突等问题,通过优化云环境下的自主调度体系架构,提出了云代理博弈模型以期降低用户调度成本和云计算环境下任务调度所存在的问题[84]。姚虎通过研究对云任务高效调度,对简单遗传算法(SGA)进行了一系列的改进,如在选择操作中引入平均适应度函数和随机适应度函数,并引入交叉区域相似度与无性繁殖,重定义了交叉操作,增加了优秀个体数量,得到了IGA算法,提高了资源利用率和任务完成效率,节省了时间[85]。Yong Hu对云计算的数据处理和存储特性进行了分析和研究,提出了一种基于服务器集群的选择,从而完成具有负载均衡功能的空间数据存储模型,具有一定的可行性和应用优势[86]。徐华针对云计算中大数据处理虚拟集群调度、云环境中虚拟主机共存和异构性带来的数据可靠性以及大数据系统处理的推测性等问题为研究中心,提出基于位置感知的启发式调度算法优化大数据处理系统在云中的网路性能,优化数据块的可靠性以及应用处理性能低的问题,并在此基础上提出基于全局速度和局部速度相结合的方法挑选异常任务,以期降低任务的误判所带来的资源浪费情况[87]。
Ning Zhang针对在云计算平台上机场监控多媒体视频中特定人脸图像的检索过程中,由于人脸模式复杂易受干扰,采用传统算法进行人脸检索时,精度和效率降低的问题,提出了一种新的特定人脸图像检索算法,并将该方法部署到云计算平台,利用Harr face级联分类器检测机场监控多媒体视频中的人脸图像,为了找出机场监控多媒体视频中的人脸,采用块匹配方法进行人脸跟踪,得到视频中的人脸。PCA方法用于提取特定的面部特征,并且判别分析方法用于将提取的特征信息与特定人脸进行比较,以实现特定的人脸图像检索,从而提高了检索的效率和精度[88]。王树兰针对减少用户端的存储开销和提高加解密效率的问题,提出了一种安全高效的文件分层CP-ABE方案、灵活的属性表达CP-ABE方案、紧凑的外包解密CP-ABE方案、快速的外包CP-ABE方案,并针对共享文件具有多等级分层的特性,设计了访问结构的分层模型,减少了密文的存储开销和加密时间开销[89]。王继业为云服务建立了一套自动化管理机制,并提供了一套统一的应用程序生命周期管理方法,以降低云应用程序部署和维护的复杂性,同时,动态迁移技术解决方案的设计提供灵活的云服务。同时,自动化管理,即完成自动化部署,监控和动态应用程序迁移设计,有效地帮助GIS运维管理人员快速实施部署计划[90]。
云计算是一种新型的超级计算方式,它具有弹性的资源、无限的计算和存储能力。作为用户只需要根据自己所使用资源的情况进行付费即可。在本节中,结合我们的研究内容,重点针对虚拟化技术和分布式计算技术展开研究。
1.虚拟化技术
云计算中最关键的技术之一是虚拟化技术,它可以在一台物理计算机上同时运行多个虚拟机,在这些虚拟机上可以运行不同的操作系统和应用程序,它们之间相互独立,并且互不干扰。
目前,云计算中普遍使用的三种虚拟化技术是:VMware Infrastructure[92]、Xen[93]和KVM[94]。通过虚拟化技术,可以将服务器中的所有资源进行整合,从而形成资源池,用户可以根据业务需求向云服务提供商租赁的服务即可,有利于降低IT成本并提高灵活性和可用性[13]。
VMware是虚拟化技术的代表,由它开发设计的VMware Infrastructure能创建自我优化的IT基础架构。VMware Infrastructure作为一个虚拟数据中心操作系统,可以将离散的硬件资源统一起来,创建共享动态平台,同时实现应用程序的内置可用性、安全性和可扩展性。Xen是由XenSource所管理的一个开源GPL项目。Xen是openSUSE和Novell主要支持的虚拟化技术,它能创建更多的虚拟机,每一个虚拟机都是运行在同一个操作系统上的实例。KVM是指基于Linux内核(Kernel-based)的虚拟机(Virtual Machine),是以色列的一个开源组织提出的一种新的虚拟机实现方案,也称内核虚拟机[92~94]。
虚拟化技术面临的主要问题有:①虚拟化程度—由于整个数据中心不是完全的虚拟化,因此,管理的复杂度势必增加,既要管理虚拟环境,又要管理非虚拟化的环境,这让IT人员深感头疼;②跨平台与兼容—从管理的角度来说,如何将企业或个人现有虚拟化环境与不同的云平台解决方案进行跨平台的无缝迁移与兼容,已经成为了用户与企业选择虚拟化技术最关键的问题;③使用标准—目前虚拟化技术的服务商层出不穷,但其解决方案差异很大,缺乏统一标准。
2.分布式计算技术
分布式计算是近年提出的一种新的计算方式,它的基本思想是用多个服务器同时协调来求解一个问题,即将一个大的科学计算问题进行划分,分解为多个任务,再把分解后的计算任务分发给并行计算机的各个计算节点进行并发执行,其目的在于利用并发的特点来比较迅速地获得原复杂问题的解。目前,开源的云计算系统有Hadoop[13,99~102]、OpenStack[95]、Eucalyptus[96]、Nimbus[97]、Sector and Sphere[98]等。其中,最著名的云计算开源系统是Hadoop,它是一个分布式计算架构,由Apache开源组织研制开发,基本思想来自Google云计算的核心技术。Hadoop可以由大量的廉价服务器构成,大大降低了其成本,它不仅具有很强的计算能力和存储能力,而且还具有较好的可靠性和可扩展性[99]。作为Hadoop的使用者,可以在完全不了解该系统底层的前提下,进行分布式应用程序的开发工作。本章以Hadoop为例,重点介绍它的分布式计算技术。Hadoop的核心有:分布式文件系统(Hadoop Distributed File System,HDFS)、分布式计算模型 MapReduce 和分布式数据库(Hadoop Database,HBase)[103~110]。
如图2-5所示,Hadoop集群通常是由一个NameNode和多个DataNode构成,而这些DataNode可以由大量的廉价机构成,因此,Hadoop成本比较低。HDFS位于该系统的底部,负责存储系统中的所有文件,并支持一次写入,多次读取[9]。而 MapReduce 引擎在HDFS的上一层,由JobTrackers和TaskTrackers组成[55]。HDFS最大的特点之一就是高容错性,由于在HDFS中硬件出错是常态而并非异常,因此,快速检测系统的错误,并进行自动的恢复是 HDFS 最核心的设计目的。MapReduce 是一种分布式处理模型,我们可以利用它进行大规模数据集的并行运算工作[9,110]。本章将对HDFS、MapReduce和HBase做进一步介绍。
图2-5 Hadoop集群图
1)分布式文件系统HDFS
分布式文件系统 HDFS 是 Hadoop 的核心技术之一,也是分布式计算的存储基础,最大的特点就是高容错性。另外,它的存储能力也很强大,可以达到 TB 级,甚至 PB 级。HDFS 被部署在由廉价机构成的系统中,可以提供高吞吐率的数据读写操作。根据实际客户量的需要,可以通过便捷地向系统中添加数据节点的方式来提高系统的服务性能,从而解决大量客户同时并发访问的问题。HDFS 是 GFS(Google File System,GFS)的开源实现,图2-6所示的是HDFS的架构图。从图中我们可以发现,HDFS是一个典型的主从式结构,即由唯一的一个NameNode和多个DataNode构成,其中,NameNode是主节点,也是该系统的主控服务器,主要工作是管理该文件系统的元数据,即维护文件系统的命名空间,系统内的所有变化都要被记录下来,另外,NameNode负责的工作主要有:①做好系统与客户之间的桥梁,协调客户端对文件的访问;②记录命名空间内的所有变化;③记录所有文件的不同数据块及副本的相关信息,包括数据块的大小、位置、副本个数等[9,110]。
图2-6 HDFS的架构图
虽然客户端是通过联系NameNode来获取文件的元数据的,但是文件真正的输入和输出工作是由DataNode负责完成的。DataNode主要负责存储实际的数据,在HDFS中,每一个文件都被划分成大小相同的数据块(通常是以64MB或128MB为块大小,但可以根据用户需要自己定义),并按照一定的部署原则,被分配到系统中的 DataNode 中,并且DataNode会周期性地向NameNode发送所存储的数据块的列表[104~106]。
在 Hadoop 系统中,只有一个 NameNode 在很大程度上简化了系统架构,并且由于元数据设计得非常紧凑,因此,4GB内存的NameNode便可以轻松完成大量的文件和目录的处理工作。HDFS采用“一次写入,多次读取”的方式,DataNode的主要工作是负责响应客户的请求,按照NameNode的命令完成相应的任务,而NameNode并不参与文件的传输工作。为了保障系统的可靠性和提高系统性能,HDFS采取了以下几个措施:
(1)冗余备份。在HDFS中,每一个文件都按照相同的大小划分成不同的数据块(关于数据块的大小,用户可以自己配置,最后一个数据块可能会小于指定数据块大小),并分布在不同的DataNode中存储。其中,只有每个数据块都有效,才能保证整个文件的完整性。为了提高系统的容错能力,我们通常采用数据块的冗余备份机制来保证数据块的可靠性,在系统中,副本数量也称为复制因子,其值也可以由用户自己定义。
(2)副本部署。大型HDFS集群一般都是由多个机架构成的。不同机架上的机器是通过交换机进行通信的。一般情况下,同一个机架内的节点之间的带宽比不同机架节点之间的带宽大很多,所以HDFS中的三个副本部署情况如图2-7所示。第一个副本存放在本地机架的一个节点中,第二个副本存放在远程机架的一个节点中,最后一个副本放在同一个远程机架中的不同节点中。机架的出错率比节点的出错率低很多,该策略可以防止由于整个机架出错而造成的数据丢失,可以在不影响数据的可靠性和可用性的情况下,保证系统性能。
图2-7 数据块部署情况
(3)心跳检测。心跳检测是NameNode为了判断所有的DataNode是否处于正常工作状态而采取的一种有效手段。正常情况下,所有的DataNode会定期地向NameNode发送自己的心跳包和块报告,以证明自己的存在。如果在一段有效时间内,NameNode始终没有接收到任何心跳信息,则认为该DataNode为死机,以后就不会再给该DataNode发送任何新的任务请求。但是,存储在死机上的所有数据将失效,NameNode会根据系统需要进行相应的数据恢复工作,从而也有效地保证了系统的可靠性。
(4)安全模式。安全模式是在启动系统后,NameNode首先进入的一种状态,在这种模式下,不会出现任何数据块的写工作,相当于系统的一个自检过程。NameNode会根据来自DataNode的各个方面的信息来判断系统中的数据块是否处于安全状态。当数据块的副本数量满足最低副本因子时,该数据块就被确认为安全,否则要复制该数据块,并部署到其他DataNode中,以达到最低副本量。当完成了数据块安全确认工作之后,系统会自动退出安全模式,进入正常工作状态。
(5)数据完整性检测。很多情况都会造成数据块的损坏,从而破坏了数据的完整性,一个最常见的例子就是DataNode死机。在系统中,HDFS具有文件内容的校验和检查功能,可以在文件被创建时,就计算出每个数据块的校验和,并把它作为隐藏文件保存在命名空间中。当从客户端获取文件后,它会自动比较从DataNode中所获得的数据块对应的校验和是否与存放在命名空间中的校验和相同,如果不同,则认为数据块存在丢失,需要从其他DataNode中获得该数据块的副本。
(6)副本选择。当HDFS执行一个读操作的时候,系统会自动采用距离最短原则进行副本的选择,这样可以最大程度地降低全局的带宽消耗读延迟。例如,若同一个机架上有该读节点的副本,那么直接读取该副本就行;若HDFS集群来自不同的数据中心,那么存储在本地数据中心的副本显然优先于远程副本。采取该策略,可以有效地提升系统的性能。
云存储面临的主要问题有:①安全性—目前,很多企业不愿意将业务数据放在公有云上,主要从数据安全性的角度考虑,许多企业客户,甚至个人使用者都认为提供核心业务数据是存在一定风险的;②缺乏统一的标准—把云存储的数据取回或转移到另一个供应商,对跨行业来说没有一个通用的标准;当前云存储互操作性与协同管理的最重要且急迫的工作,莫过于统一标准接口的制定。
2)分布式计算模型MapReduce
在解决大数据处理的问题上,Hadoop的MapReduce起到了关键性作用,实际上,它是Google 的 MapReduce 的开源实现,所有人都可以利用 MapReduce 进行并行编程[55]。MapReduce是一种分布式计算模型,属于Hadoop的核心,利用这个模型,我们可以很容易地实现分布式并行程序的编写工作。在进行并行运算的整个过程中,可以抽象为两个阶段,也是两个函数,分别是Map和Reduce,即映射阶段和化简阶段[97,111]。剖析MapReduce解决问题的基本过程可以理解为:将一个任务分解成多个子任务,并分别进行处理,最后将所有子任务的处理结果进行有效汇总,得到最终结果的过程。其中,Map是把任务进行分解的阶段,而Reduce就是将所有子任务的处理结果按照一定的规则进行化简、归并,从而得到最终结果的阶段。实际上,在数据处理算法的复杂性上,MapReduce并没有使其减少,它是将任务通过分解,之后再进行合并,从而进行分布式并行处理,我们可以理解为:以前解决这个任务需要一台具有超级计算能力的计算机才可以完成,但现在通过MapReduce 可以将多台普通计算机组合起来,形成一个具有超级计算能力和处理能力的集群[112~117]。
MapReduce 编程模式是 Google 公司的工程师于2004年在一篇相关论文中首次提到的,引起了业界的广泛关注。由于MapReduce为程序员提供了很好的抽象编程接口,因此,作为当前一种非常流行的并行计算模型被很多用户所使用[118~127]。图2-8是MapReduce的概念模型,从中我们可以看出,首先,系统将大数据分解成若干个大小相等的数据块(Data1,Data2,…),并按照一定的规则分配到不同的节点中处理,当所有的数据块都被处理之后,再按照一定的原则将所有的处理结果进行汇总,最后将结果输出。另外,系统会自动管理集群中节点之间的通信[119]。作为程序员只需要明确自己的业务需求,就可以利用MapReduce框架编写Map函数和Reduce函数,并不需要过多地考虑任务的分配、资源的调度以及容错等问题[128~132]。
图2-8 MapReduce的概念模型
图2-9介绍了MapReduce处理数据的过程,从中我们看到整个过程可以分为两个阶段,分别是映射阶段(Map函数)和化简阶段(Reduce函数)。在映射阶段,首先将用户输入的数据分解成M个分段(分段0,分段1,…,分段M−1),相当于把一个大任务划分成了M个子任务,即M个Map任务,每一个分段都有自己的关键字Key和值Value,即键值对<Key,Value>。其次,针对每一个Map操作,输入该片段的键值对,其中调用的Map函数是用户根据实际需要编写的Map函数。最后,输出的结果是一个中间态的键值对,并按照中间态的关键字 Key 进行排序,这样就可以使具有相同关键字的数据集中在一起,根据不同中间态关键字的个数来作为Reduce任务的数目。在简化阶段,Reduce操作会调用用户根据实际需要编写的Reduce函数,最终得到用户需要的键值对,并作为结果输出[133~141]。
图2-9 MapReduce处理数据的流程图
3)分布式数据库HBase
HBase数据库是基于Hadoop的项目,是对Google的Bigtable的开源实现,即HBase的数据存放逻辑模型与Bigtable是一样的,HBase中的表就是所谓的Bigtable。用户在表格里存储一系列的数据行,每行包含一个可排序的行关键字、一个可选的时间戳以及一些可能有数据的列。数据行有三种基本类型的定义:行关键字(Row Key)、时间戳(Time Stamp)和列(Column)。HBase在磁盘上按照列族存储数据,一个列族里的所有项有相同的读/写方式。HBase 与一般的关系数据库的不同之处在于:①HBase 是一个适合于结构化和非结构化数据存储的数据库;②HBase是基于列的而不是基于行的模式。HBase不支持SQL,它实质上是一张极大的、非常稀疏的存储在分布式文件系统上的表[13]。
2.3 云计算环境下的数据管理与任务调度存在的问题
当前,Internet、移动互联网、物联网、云计算都得到了迅速的发展,尤其是移动智能终端的飞速普及,我们所产生的数据量比之前的任何一个时期都要多,并且速度是惊人的。换句话说,“大数据”时代已经真真实实地到来了,图2-10所示的是IDC数字宇宙研究对未来全球的数据量增长预测,从中我们可以看到,在未来的2020年,全球数据量可能会突破35ZB[58]。由于云计算的分布式架构不仅可以满足大数据的存储和处理分析请求,而且能够把大量的计算任务有效地分布在由很多计算机构成的资源池中,用户只要根据自己的需要向云服务提供商租赁相应的计算、存储,以及信息服务等服务即可。从2.2.3节的云计算的优势分析中我们可以看到,采用云计算技术处理大数据是经济实惠和可行的。作为信息技术的又一次变革,云计算和大数据的结合是一个必然趋势,它们正在给人类的技术进步和社会发展带来全新的方向[5]。
图2-10 全球数据量增长预测(单位:ZB)
2.3.1 数据管理
在云计算数据查询安全问题上,由于用户过度的访问和检索过程易造成数据的泄露,邢文凯通过相似子图和哈希函数的方法构建图状部署提高了用户查询的效率和查询的安全性[142]。
彭延国则通过建立无证书公钥密码系统的关键词可搜索加密系统,解决了公钥的关键词可搜索加密存在的密钥托管问题,并通过哈希算法、K-D 树降低通信开销,依据加法保序表、乘法保续表等设计了同态保序加密方案,从而实现了度量机制的密文计算提高查询过程的有效性和安全性[143]。
王于丁等人为了使云计算用户访问的安全高效,对加密体系用CP-ABE算法进行改进,以权限控制理论控制数据的访问[144]。杨挺等对于HDFS在存储过程中,未对数据间的差异性和使用频度进行综合考虑,其统一地将数据进行复制备份,增加了对DataNode节点的占用,使存储压力增大,通过萤火虫算法对分布式文件存储超图模型进行求解,从而合理地对 DataNode 节点进行分配,降低了 HDFS 的集群能耗,减少了网络传输拥堵时间[145]。
涂俊英通过分析传统的存储非结构化数据的方法,针对数据存储过程中易丢失的问题,通过负载均衡控制方法对HBase非结构化数据的存储架构进行改进,并提出了压缩冗余数据特征及信息存储的优化算法[146]。
张华丽等对冗余数据片段分配过程应用遗传算法进行求解,合理地解决了传统支持向量机在数据分配过程中出现冗余数据关联性低的问题,对大数据分布式存储中冗余度分类,构建评估准则,优化分配策略,提高了冗余数据的分配,也提高了分配效率和准确率[147]。
Misbah Liaqat等人设想利用联合资源提高服务质量,讨论了云环境中联合资源的管理,提供了最新的研究见解[148]。
Janez Kranjc等人基于云的Web使用MapReduce的数据挖掘软件ClowdFlows,在大数据的处理上具有显著的优越性[149]。
Faheem Zafar 等人提出了用于云存储的现有数据完整性方案的分类,还提供了对现有方案的比较分析,并详细讨论了可能的安全攻击及其缓解措施[150]。
AbdulsAlam Yassine 等人提出用雾计算节点和云系统来实现数据驱动的服务从而提高云计算的实用性[151]。
Maozhu Jin等为改进和优化海量数据分析,提出了缩减相邻顶点相似度计算以及不准确计算相邻点的方法以约简GXDSGC算法的复杂度,并提出了基于GraphX结构化图类算法GXDSGC,以期提高云计算在大数据环境下的运行速率[152]。
包笠从云环境下数据管理的安全问题出发,依据用户的隐私需求将云端数据切割分组处理,构建一种新的混合云存储方案,通过加密、信息分散算法将用户数据混淆后存放内部组织数据库,实现元数据与内容的分离[153]。
高崑等分析了GIS数据在云平台上存储的优点与难点,基于Hadoop论述GIS数据的存储和管理,分析了GIS数据的特性,通过建立索引的方式应用Hbase存储影像数据,并提高了管理效率,同时利用SquenceFile工具以及Hilbert算法对瓦片数据进行分割与数据编码,提高了瓦片数据的查询效率[154]。
陈玉林分析了传统的云平台数据存储技术在遥感数据存储上的不足,以特征分析与聚类的方式,依据分布式环境虚拟话存储技术对数据进行模型构建,完善了云平台对遥感数据存储的支持,同时将蚁群算法应用于遥感数据的任务调度,设计了云平台任务调度算法,提高了系统平台处理效率[155]。
重复数据删除存储证明(POSD)是一种很有前途的解决方案,可解决启用了重复数据删除的云存储系统的问题,当前POSD方案的有效性基于强有力的假设,即所有客户在生成密钥方面都是诚实的,Youngjoo Shin等提出了恶意客户利用不诚实操纵密钥的新攻击模型下的不安全性,并提出了一种改进的POSD方案来减轻攻击[156]。
目前,我们处于大数据的时代,数据的增长速度已经呈现出了指数型增长的趋势,通过处理大数据,我们最终的目标就是希望从中获得有价值的信息,可以对我们的未来决策起到一定的指导作用。从图2-1中我们可以看到,数据相关技术主要包括:数据采集、数据存储、数据管理、数据分析与挖掘,其中,数据存储、数据管理,以及数据分析与挖掘是核心内容[157]。当前,数据的来源有很多,主要包括:物联网、互联网、移动互联网、GPS、车联网、电信、安全监控、科研机构等。这些数据造成了今天结构化数据、非结构化数据和半结构化数据的爆炸式产生。这些数据需要通过运营商或应用提供方收集起来,把它们部署在大量的存储设备中,并对这些数据进行有效的管理,最终对数据进行读写操作、分析与挖掘等[96,102,158,159]。
近年来,随着Web 2.0技术的迅猛发展,传统用户从数据的消费者已经变为了数据的生产者,这种以用户为中心的数据生成模式使得互联网中的数据量呈现出指数级增长的趋势,给云计算系统的管理带来了严峻的挑战。大数据的特点决定了存储架构的复杂性[60-67,139-141],针对大数据处理的一般流程,这里提出了大数据存储和处理的系统级架构,如图2-11所示。
图2-11 大数据存储和处理的系统级架构
从图2-11中我们可以看出,整个架构可以提供的服务包括:数据采集服务、数据清洗分类服务、多维特征提取服务、物理数据存储服务、元数据管理服务、业务处理服务、数据分析服务、日志分析服务和集群监控服务。另外,我们也可以发现,整个架构属于分层设计结构,主要分成4层,分别是数据采集层、数据预处理层、数据存储与管理层、数据应用层。利用云计算对数据进行存储和管理是我们的研究重点。
在大数据被采集的整个过程中,我们面临的主要挑战就是任务的并发数高,原因是在同一个时间段内,可能会有数以万计,甚至千万计的客户蜂拥而至对数据进行操作。例如:在“双十一”期间,淘宝商城和天猫商城会举办一年一度的超级优惠活动,势必会吸引很多客户大量的购买产品。在那一天内,数据采集端必须准备大量的数据存储设备才可以支撑整个业务。再例如:全国火车票售票网站,在每年的出行高峰期,尤其是春节前后,造成网络和系统的瘫痪也时有发生。关于这些数据的存储以及整个系统的负载情况是我们必须要深入思考的问题。
由于数据类型的多样性和复杂性,因此,来自采集端的不同数据库的数据必须被导入到一个集中式的大规模分布式存储集群中,才可以对这些数据进行有效的分析。在导入的过程中,可以根据需要有针对性地对数据进行一定的预处理工作。在数据的导入和预处理阶段,我们面临的主要问题是数据量的巨大性,每秒钟数据的导入量可以达到百兆、千兆级。如何有效地进行数据的导入也是值得我们考虑的问题。
数据挖掘是在大量数据中发现有价值的信息,从而对未来的发展趋势起到预测的效果,并满足一些潜在数据分析的需求。目前的挖掘算法主要存在的问题是算法的计算复杂度过高,并且计算的数据量和计算量也都很大。
数据存储与管理是本书研究的主要问题之一。解决大数据的存储问题,一般根据业务需要采用分布式数据库或分布式集群,对数据进行存储和管理。通常业务需求可以分为两类:实时性处理和批处理。针对实时性要求高的业务,一般要求掌握 Oracle 的 Exadata、EMC的GreenPlum,以及采用以列为存储的工具等;而针对批处理业务,可以采用Hadoop来实现。
在数据存储与管理中,我们面临的主要挑战是:
(1)由于数据量巨大,因此对整个系统资源的要求极高,并且对整个系统的 I/O 设备也提出了很大的挑战。
(2)一般情况下,为了提高系统的可靠性,通常采用副本机制来解决,那么关于副本数量、副本部署,以及副本一致性问题也是我们亟待解决的问题。
(3)在数据存储过程中,关于整个系统的负载情况、服务成本以及服务质量等问题也是我们所关注的。
(4)由于Hadoop的文件管理系统适合一次写入、多次读取的场景,并不支持数据的修改,因此,从某种角度考虑,它是通过弱化数据的一致性,来达到访问效率优化的目的的。如何改进Hadoop的架构设计,也是我们的挑战之一。目前,针对这些问题的研究已经成为该领域的研究热点,并已取得了一定的商业价值和学术成果。
2.3.2 任务调度
云计算环境下任务的合理调度以及资源的高效利用,对用户的使用和数据的处理存储有着重要的作用。国内外学者在此问题上主要从算法的改进、优化和资源与任务需求相匹配等方面进行研究。
马红娟等对于实时并行任务子任务的子截止时间如何分配问题,提出了实时并行任务调度算法 SARR,其满足并行任务完成时间要求的同时增加子任务执行安全级别的安全感知[160]。
为了应对低延迟需求的应急响应通过将云计算服务扩展到边缘及雾计算,而传统的遗传算法在变异操作的过程中具有盲目性,任务执行速度慢,韩奎奎等人将适应度判别引入到雾计算秦代变异操作中,有效地提高了任务的执行速率[161]。
李昆仑等人为了有效地降低遗传算法在云任务调度过程中的成本,提出一种基于聚类改进的共生演算法。相比改进的遗传算法、混合粒子群遗传算法,其具有更高的可行性[162]。
任金霞等人以提高资源负载的均衡性为目标,对贪婪算法策略引入Qos约束获得初始解,并通过实行两阶段的退火过程,降低任务完成时间和减少最小负载均衡的标准差,使得任务调度过程中始终在用火满意的前提下寻得最优方案[163]。
王鑫等人从改进任务与资源的调度关系出发,提出了改进任务调度贪婪算法策略,有效促进任务与资源的合理匹配[164]。
张晞通过协调虚拟机处理性能与虚拟机之间的拓扑距离的关系,以虚拟拓扑结构为基础,建立虚拟机任务适应度评价函数,对云计算任务调度过程中虚拟机的拓扑结构进行了优化[165]。
刘东领等人对于顺序调度和聚类调度任务执行时间长的问题,提出了一种基于资源与任务的多样性、异构型的等价类划分的粗粒度调度算法,其与贪心算法相结合,匹配适应资源与同等需求的任务,有效降低了任务执行调度的总时间[166]。
邓见光等人将多目标的QoS目标约束问题在考虑云调度预算、截止时间的前提下,转化为单目标约束优化问题,从而对其求近似解,给出了一种合理的QoS目标约束的云计算调度策略[167]。
Mahendra Bhatu Gawali等人提出一种启发式的算法,结合改进层次分析法,带宽感知可分割调度分而治之的方法来执行任务调度和资源分配[168]。
Balamurugan Balusamy考虑云计算中调度任务和恢复资源的优化,并基于VM上的抢先式任务和非抢先式任务的工作负载平衡问题,提出基于蚁群负载均衡和故障恢复(ACBLBR)的算法,实现跨VM的均衡负载[169]。
孙敏等人基于遗传与粒子群算法相融合的目标任务调度策略,该算法在任务调度中的执行效率、寻优能力均有提高[170]。
李延元等人以资源方与用户方的QoS需求能耗均衡为研究方向,提出一种降低任务的子执行任务截止时间和能耗的工作流能效调度算法 QCWES,同时降低了云计算环境下的工作流调度的执行能耗问题[171]。
陈暄等人在云计算任务调度过程中应用 IFWA-ABC 算法,对柯西分布与混沌反向学习,核心烟花与非核心烟花半径分别进行优化,有效地提高了资源在任务调度过程中的利用率,减少了用户的等待时间[172]。
SuKhpal Singh等人根据分配的权重及其QoS要求,通过K-means识别,分析和聚类云工作负载,与现有算法相比在能耗上更低[173]。
Jun wu Zhu等将复杂的任务划分为多个子任务,然后以形式化的方式呈现子任务调度问题,其次,提出了一种包含任务调度机制、优胜者联盟形成机制和支付共享机制的实用任务调度方案[174]。
Hend Gamal EI Din Hassan Ali等提出了一种分组任务调度(GTS)算法,该算法用于通过应用服务质量来满足用户需求,在云计算网络中调度任务。
Leila Ismail推导出一种能量感知任务调度(EATS)模型,该模型在云中划分和调度大数据,EATS的主要目标是提高应用效率并降低底层资源的能耗[175]。
Shima Rashidi等提出了一种混合遗传算法(GA)—蚁群优化(ACO)算法,以最小化整个系统的任务分配的平均完成时间[176]。
Sucha Smanchat 等人从调度过程和资源任务分配上对现有的算法进行分类,为后来研究者提供了参考[177]。
Sanjaya Kumar Panda将匈牙利算法应用于云计算任务调度上,将任务配对以进行调度决策[178]。
Javier Panadero 等人对于组成云计算系统的节点为大量用户而非单个机构提供,具有不稳定性的问题,提出了多准则偏差随机化(MCBR)算法,其基于多标准优化策略,在降低计算能力的基础上提高大规模不可靠节点的选则,并通过仿真实验证明其有效性[179]。
Keke Gai等人以节能为研究点,分析了任务分配不合理对远程云计算服务器及异构核心处理器带来的能源浪费问题,提出了基于异构任务分配算法(HTA2)的能量感知异构云管理模型(EA-HCM),降低了计算成本[180]。
Rakesh Kumar等人分析了现有的云中心框架结构,对现有框架中缺乏移动设备执行任务的反馈机制,以及没有可用的方法获取移动设备的动态参数和根服务器无法决定云端cloudlet系统规模的扩大和缩小等问题,考虑将移动设备发送的反馈存储于云服务器中的根服务器的维护目录中,通过Gabriel架构及人群感知框架组合,提出了收益因子度量机制,有效地处理处理本地感测信息,并将处理结构信息传递服务器进行决策,通过收益因子值度量,根服务器可以准确地解决云计算系统的扩大与缩小问题,并在 Cloundsim 模拟器上对该改进策略与移动运中心系统框架进行比较,提出了可扩展参数模型,该模型优于原有框架[181]。网络物理系统(CPS)架构为云计算提供实时的可扩展的资源监控,其可扩展性和灵活性对用户带来了极大便利,数据中心虚拟机(VM)布局算法的性能极大地影响了CPS的云服务质量以及应用程序与物理资源的分配,而传统的VM算法建立在双层架构之上,无法准确地量化VM在运行时所需的不同数量的计算资源,这种架构不再适用现代云计算模式,Yunliang Chen等人基于LP的变体生成最小化能耗VM架构,并将其与可行性驱动的随机VM算法(FDSP)相结合,通过实验证明基于LP的变异无意识VM算法有效地降低了能耗[182]。
粒子群算法(PSO)是解决云环境下任务调度的重要智能算法,王晴等人以减少执行时间和降低代价消耗为研究点,对于粒子群算法和自适应惯性权重粒子群算法易陷入局部最优问题进行研究,提出了将惯性权重与随机因子相融合,以执行任务时间和代价为目标的增强粒子群算法(EPSO),并将其与原有算法相比较,调度方案更优[183]。任务调度作为NP问题,其求解对于云资源的异构和动态特性非常重要,Mohammed Abdullahi等人基于模拟退火(SA)原理的 SOS 云计算任务调度算法,以其强大的全局搜索能力优化任务调度、收敛速度和质量,并通过自适应函数降低虚拟机之间的不平衡程度,仿真实验表明SASOS性能优于原有SOS算法[184]。
传统的启发式算法在 NP 完全问题处理上效率不高,任务调度算法多集中于混合元启发式算法上,Amin Kamalinia基于混合元启发式方法提出了HEFT算法,其在执行时间和效率优于遗传算法[185]。Zhiqiang Xie等人基于任务节点的约束关系的构建优先级值列表,依据欲调度任务节点的动态基本路径计划成本、通信成本,提出动态基本长路径策略,并通过 Matlab 工具仿真证明了其有效性[186]。AR Arunarani 等人对云计算任务调度策略和适用于云计算环境的相关指标进行了全面的调查,讨论相关问题,以方法、应用和基于参数的措施研究了独特的调度程序[187]。Jiachen Yang等人将博弈论作为数学工具,提出了平衡任务可靠性的任务调度算法,依据合作博弈论模型用于计算节点上的速率分配策略,并通过实验证明该算法具有较好的优化效果[188]。Chuge Wu等人以有效的最小化时间和能量消耗为目标,构建了多模型分布估计(mEDA)算法,来确定任务处理排列和电压供应水平(VSL),增强数据的多样性非主导的解决方案[189]。Fredy Juarez等人对于云计算任务调度的NP难题,提出一种多项式时间算法,结合了一套启发式规则和资源分配技术,以便在经济实惠的时间尺度上获得良好的解决方案,所提出的算法最小化了多目标函数,其根据资源提供者或用户提供的能量-性能重要性因子组合能量消耗和执行时间,以在分布式平台上有效地执行基于任务的应用程序,以最大限度降低能耗[190]。
引力搜索算法(GSA)是一种自然启发的元启发式优化技术,用于解决云计算环境中的负载调度问题,Divya Chaudhary等人基于引力搜索提出一种近似最优的Cloudy-GSA负载调度算法,用于最小化传输时间和云任务调度到VM所产生的总成本[191]。Hend Gamal El Din Hassan Ali等人依据用户类型、任务类型、任务大小和任务延迟等属性构建一种分组任务调度算法(GTS),并通过分步分级的策略对任务按照优先级执行,以期执行任务时间最少[192]。
任务初始分配合适的VM对于有效的利用资源有着重要的作用,D.Chitra Devi等人通过分析VM执行任务的特征,提出了通过静态或动态调度对每个请求的作业的任务长度以及多个任务的相互依赖性来介绍和评估所提出的调度和负载平衡算法,将任务分配给适当的资源来管理参与执行,使云计算更有效[193]。Xing Liu等人研究了移动应用程序的MD和云端之间的协作任务执行关系,假设移动应用程序由一系列彼此独立的任务组成,并且可以在MD上执行或者在云端,以通过将移动应用程序的一部分任务加载到云端为目标,在满足执行时间的同时最大限度地降低MD的能耗,并将此协作任务执行问题转换为能量优化问题,通过表征最优解来推导出阈值,并为协同任务执行基于拉格朗日对偶原理提出了一种协同任务执行调度(CTES)算法来近似解决优化问题,仿真结果表明,提出的CTES算法对于MCC环境节约能耗,与本地执行和云执行相比,CTES算法可以显着节省MD上的能量消耗[194]。
移动设备之间协调任务卸载并同时快速卸载结果是一个具有挑战性的问题,Zhikai Kuang等人提出了一个基于代理的MCC框架,通过对代理进行卸载决策,使设备能够更快地接收卸载结果,提出了一种动态编程后滤波(DPAF)算法以解决优化问题,通过代理上的过滤过程将原始卸载问题转换为经典的0-1背包问题,采用动态规划算法来寻找最优的卸载策略,仿真结果表明,该框架可以比其他方案更快地获得代理响应,DPAF算法在节能方面优于其他解决方案[195]。
传统技术和新兴方法进行融合,以填补用户需求和移动设备有限功能之间的这种差距,Bowen Zhou 等人通过将移动设备计算和存储外包给更强大的计算资源的计算范例和解决方案以期提高移动设备的性能,以便增强移动设备的计算能力和能量效率,采用增强技术异构和间歇性移动云计算环境为计算管理,能效和系统可靠性带来了新的机遇[196]。
对于目前的大多数研究工作都集中在如何设计有效的卸载系统以节省时间和能源,同时对启用技术给予考虑,Fei Gu等人对卸载框架中的不同计算资源进行研究,介绍了先进的使能技术和用于分区和卸载的不同计算资源,从分区和卸载启用技术的角度研究移动云计算和相关范例,提出了分区和卸载技术的分类,并分析现有的成熟卸载框架[197]。
为克服SMD仍然受到低带宽、处理潜力、存储容量和电池寿命的限制问题,Muhammad Shiraz 等人利用丰富的资源和强大的计算云来实现 SMD 上的密集型应用,在移动云计算(MCC)中,利用计算云的应用程序处理服务来减轻SMD中的资源限制,为MCC中的密集型应用提出了一种新颖的分布式和弹性应用处理(DEAP)模型,并通过分析模型来评估提出的DEAP模型,在真实MCC环境中测试原型应用程序,以证明DEAP模型的有用性,使用DEAP模型的计算卸载可最大限度地减少密集移动应用程序的分布式处理中SMD上的资源利用率[198]。
为了增强调度过程,K.Pradeep等人提出将布谷鸟搜索(CS)、和声搜索(HS)算法和CHSA混合,以改善优化问题,有效地结合起来进行智能流程调度,将CHSA算法的性能与不同的算法进行了比较,如现有的混合布谷鸟重力搜索算法,具有各种多目标参数的单独CS和HS算法。CHSA算法与现有技术相比,可以实现最低成本,最小内存使用,最小能耗,最小惩罚和最大信用[199]。Madhu Sudan Kumar等人提出了一种工作流调度算法,称为粒度分数调度(GSS),它基于给定工作流中任务的粒度,主要目标是最小化完工时间并最大化平均虚拟机利用率,包括得分调整和任务排序和调度,该算法在完工时间和平均虚拟机利用率方面显着地展示了其性能[200]。
根据用户的请求执行提供者VM的分配,Seyedeh Aso Tafsiri等人提出的分配问题被公式化为整数线性规划模型,以期最大化用户和提供者的总利润,并证明了所提出的模型满足了所需的性质,包括真实性、公平性、经济效率和分配效率,还提出了一种具有准线性时间复杂度的启发式资源分配算法,通过评估结果证实了启发式算法与优化模型在分配性能方面的良好一致性,使用CloudSim的仿真结果表明,与现有算法相比增加了提供者和用户的利润,减少了资源浪费[201]。
目前,云计算利用率很高,成功案例也不少。对于云服务提供商来说,以最小的成本赢得最大的利润是他们追求的目标。而作为终端用户来说,以最低的租赁价格赢得最优的服务质量是他们的目标[139,202~214]。但是如何设定恰当的价格,另外,针对云系统中的所有资源,如何高效地进行任务调度,用以最大化双方各自的利益是本书研究的热点问题[215-235]。传统的任务调度方法已经不再适合现在的云计算环境,对于不同的云框架和不同的云服务提供商,任务调度方法有很多,在本章中,我们重点介绍Hadoop 集群中最常用的三种任务调度策略,它们分别是FIFO策略、公平调度策略和计算能力调度策略[13,109-110]。
1.先来先服务策略(FIFO)
在默认情况下,Hadoop通常采用的是先来先服务策略(First In First Out,FIFO)。该策略的优点是简单和开销低,同时也减轻了jobtracker的负担。它解决问题的基本思想是:把终端客户提交的所有任务,按照提交作业的时间排成一个队列,对于该作业队列的执行顺序一般都是按照优先级和提交顺序来确定的,即系统默认先提交的作业具有较高的优先级,并将会被较早地处理。但是FIFO策略的缺点是存在不公平的现象。根据这种策略的解决思路,那么对于那些优先级不高的作业将大大地减少了被处理的机会,等待空闲机的时间会特别长,即针对优先级不高的作业,很难保证它们的服务质量。该策略缺乏对作业需求差异的考虑。
2.公平调度策略
随着时间的移动,为了使所有的作业都可以得到相应的资源,提高整个系统的公平性,Facebook提出了公平调度策略。该策略可以在较短的时间内,完成所有作业的处理,避免长时间的等待。公平调度策略的主要解决思路是:尽可能地使所有的作业都得到等量的资源。当整个系统中只有一个作业执行的时候,系统将把所有的资源都提供给该作业使用。当再有其他的作业被提交的时候,系统就会释放TaskTracker,并把它分配给这个新提交的作业,从而保证所有的作业都可以获得基本相等的计算资源。
FIFO策略是在每一个时刻,只有一个作业被执行,而公平调度策略则是在同一个时刻,有多个作业同时被运行。公平调度策略适合于多用户共享集群的环境,其吞吐率高于FIFO。
3.计算能力调度策略
计算能力调度策略是以队列为单位来分配TaskTracker的,该策略配置了多个队列,而每个队列的最小额度的TaskTracker数量也被配置。在一个队列中,如果有空闲的TaskTracker,那么这些空闲的TaskTracker会被调度器分配给需要的队列。此时,可能存在多个队列没有得到最小额度的TaskTracker数量,并且正在申请,那么空闲的TaskTracker会被优先分配到最饥饿的队列。我们通过计算队列中正在执行的任务数与所得的计算资源之间的比值是否最低来衡量它们的饥饿程度,其值越低表明该队列的饥饿程度越高。
在计算能力调度策略中,一个用户的作业可能存在于多个队列中,假设我们不对用户做一定的限制,那么在多个用户之间出现严重不公平的现象就很容易发生。因此,如果作业所属的用户超过了资源的限制,那么该作业将不会被选中执行。
在本书中,我们重点考虑了影响系统性能和服务质量的主要因素,并对任务调度的优化策略进行研究。
2.3.3 容错机制
伴随云计算的快速发展,越来越多的企业开始将云计算应用到生产和研究中,同时随着节点的增多,故障率也随之增多,如何有效地降低任务调度及数据存储过程中的事故率,成为业界和学界研究的热点问题。
陈超对于 Spark 在重新计算丢失数据,在长任务场景计算中存在计算恢复事件过长的问题,提出一种基于补偿函数的乐观容错机制,以此机制对 Spark 的容错机制进行优化,降低了容错过程中的额外开销[236]。
丁凯通过分析Hadoop源码中MapReduce容错机制的不足,针对不足设计并实现了检查点容错机制[237]。
英昌甜等人为了有效地降低作业恢复开销,提出基于权重生成(WG)算法和监测点自动选择(CAS)算法的自动检查点策略,解决了现有Spark在检查点上存在高风险性、随机性的不足[238]。
关国栋对MapReduce作业执行时间预测进行改进,以历史作业信息和数据输入量为基础,提出了新的作业执行时间预测模型,对执行预测时间有非常好的能力[239]。
关键配置失败将严重影响系统的可靠性和性能,Ashish Singh 等人对云计算的框架服务部署模型、容错机制、任务调配进行详细分析[240]。
陈煌宁等人通过采用主/副版本技术提供容错机制,提出了一种基于粒子群优化的执行时间和容错的多目标优化算法,有效地降低任务失效个数,减少任务总执行成本[241]。
袁曹等人基于故障信号诊断数据处理问题,用过偏差分类算法对数据流的分区策略进行改进对数据进行建模分类,减少了执行过程中的计算量[242]。
朱艳伟以迁移虚拟机的为研究角度,通过双降序策略基于云计算的特点将服务部署到各主机,同时考虑虚拟主机的迁移对服务的可靠性影响,降低能耗节省资源[243]。故障节点、网络环境异常因素对云环境性能有着重要的影响,在此基础上提出了可以随作业任务大小以及节点CPU占用率自适应的多因素心跳机制和信誉值检测机制,同时考虑节点大小、工作状态、CPU占用等多因素对系统环境的影响,综合各因素给出最优方案,并通过节点信誉值与最小阈值检测节点的有效性,并通过大量实验对比该算法能更快地发现故障点并及时重新分配任务[244]。
Gabriele D'Angelo等人提出一种基于容错并行的分布式机制FT-GAIA,旨在可靠地处理并行和分布式仿真(PADS)模型,为解决多核处理器,以及多个执行单元在运行过程中的组建故障问题,通过FT-GAIA算法复制模拟实体并分布在多个执行节点,模拟实体之间的交互消息被复制,因此接收实体可以识别和丢弃损坏的消息。分析模型和实验评估的结果表明,FT-GAIA提供了高度的容错性,但执行单元的计算负荷适度增加[245]。
对于云环境中的高效资源配置和可能的系统故障管理问题,早期故障检测可以在影响QoS 之前提供从潜在故障中恢复的空间,当前计算系统中的故障管理静态技术不足以保证云用户请求的QoS。Ziad A.Al-Sharif等人介绍了用于云计算基础架构的ACCRS框架,以提高系统的利用率水平,降低成本和功耗并实现 SLA,ACCRS 框架采用自主计算基本组件,包括状态监控、规划和决策,通过缩放资源以响应云系统状态的变化,对恢复操作进行故障预测、检测和根本原因分析,以提高系统的可靠性、可用性和利用率水平[246]。
拒绝服务(DoS)攻击和分布式拒绝服务(DDoS)攻击可能主要危及系统服务的可用性,并且可以通过使用各种工具轻松启动,从而导致财务损失,这些攻击非常难以检测和过滤,因为导致攻击的数据包与合法流量非常相似,DoS攻击被认为是对IT行业的最大威胁,并且每年都会发现攻击的强度,大小和频率都在增加。BB Gupta等人概述了可以在云环境中执行的DoS攻击和分布式DoS攻击以及可能的防御机制、工具和设备,讨论了针对DoS攻击防御云环境的许多未解决的问题和挑战,有助于更好地理解云计算环境中的DDoS攻击问题,当前的解决方案空间以及未来的研究范围,以有效地处理此类攻击[247]。
任何一个系统,都不可能保证在使用过程中没有任何故障出现,但是作为一个优秀的系统即便在出现故障的情形下,仍有能力快速地、有效地完成数据的恢复工作,不会影响终端用户的正常使用。HDFS最常见的故障有:NameNode故障、DataNode故障和网络断开[13-33,163~175]。Hadoop结构是由一个NameNode和多个DataNode构成的,因此,NameNode发生故障将是致命的故障,属于瓶颈问题,可以造成整个系统的瘫痪。即在 HDFS 中,NameNode 故障属于单点失效,非常严重。这种情况只能采取人工干预的方式进行恢复工作,该问题是目前比较关注的热点之一。另外,网络断开会造成一组 DataNode 子集和NameNode失去联系,这个也是很致命的。
目前,云计算之所以得到了广泛的认可,最重要的一个原因就是成本廉价,换言之,云平台可以由大量的廉价机组成,那么对于廉价机而言,宕机事件就是常态而非异常,如果云平台没有很好的容错机制的话,这一点也是很难实现的。在HDFS中,DataNode会定期地向NameNode发送心跳包和块报告,以证明自己处于正常工作状态,如果连续一段时间内NameNode没有收到该数据节点的任何信息,就判断该节点宕机,那么不会再给该节点发送任何服务请求。而宕机的数据节点中所存放的所有数据将丢失,可能会造成一些数据块的副本数量低于指定的最小值,这个时候就需要对丢失的数据块进行恢复,并部署到正常工作的数据节点中去。因此,为了更好地提高系统性能和服务质量,关于丢失数据的恢复、备份数据节点的选择,以及将恢复数据的重新部署等问题,都是本书重点研究的内容。
2.4 本章小结
本章对云计算及其关键技术进行了介绍和分析,并对它们的国内外发展现状进行了阐述;并且在云计算环境下的资源优化管理方面,针对目前存在的主要问题,分别从数据管理、任务调度和容错机制这三个最重要的环节进行了优化策略的研究和问题分析,具体研究成果将分别在以下三章中进行详细阐述。
[1].http://aws.amazon.com/ec2/
[3].http://www.salesforce.com/platform/
[4].http://www.microsoft.com/windowsazure/
[5].http://code.google.com/appengine/