本篇文章目录导航:
【题目】探究云存储系统的云数据放置优化方法??
【第一章】面向云存储系统的云数据放置方法研究绪论
【第二章】云存储及其相关技术
【第三章】云数据多目标存储模型
【第四章】基于多目标遗传算法的云数据放置策略
【第五章】云数据放置实验与分析
【第六章】云数据放置优化方法的结论与参考文献
第二章 云存储及其相关技术
本章主要介绍与本课题有关的云存储及其相关技术。包括云计算的相关概念与分类及其最基本的核心思想虚拟化技术。其次着重研究了云存储技术,包括相关概念、应用分类、系统架构。最后深入研究Hadoop中的HDFS文件系统,分析了HDFS中的实现模式,为后续章节提供了理论基础。
2.1云计算概述
2.1.1 云计算的概念
随着互联网时代的高速发展,计算机硬件更新换代的速度十分迅速。
Intel创始人之一Gordon Moore曾在1965年曾提出:当维持价格不变,集成电路上可容纳的元器件的数量,约每隔两年就会增加一倍,其性能也会提高一倍[28].这一定律揭示了互联网技术的高速发展,硬件发展过快造成了大量的闲置资源,这些资源除了本身的老旧之外还有性能上的缺陷。而云计算(Cloud Computing)的出现不仅解决了大量的闲置资源问题,节约了互联网资源。而且通过其集群技术、网格计算、虚拟化以及分布式文件系统等技术实现了设备之间的协同工作,使多个硬件设备可以统一对外提供同一种服务[29],并且提供高品质的计算、存储等功能。
而且对于使用者来说并不需要了解“云”中的设备信息以及部署细节,也不需要掌握相关的专业知识,更加不需要进行直接的控制。
但是目前对于云计算在全世界范围内还没有一个统一的定义和标准。
NIST(the NationalInstitute of Standrads and Technology,美国国家技术与标准局)定义云计算是通过互联网可被访问者进行配置以及共享所有云资源的一种模式[30].被共享的云资源包括网络、存储和应用等,资源池通常以最小的带价来控制资源以及依靠服务提供商的应用接口对云资源进行实时的获取与释放[31].根据维基百科对于云计算的定义为一种基于互联网的计算方式,该计算方式可以实现软件和硬件资源以及数据的共享,并且通过共享按照用户的需要提供给用户各种终端和其他硬件[32].
Galibus T定义云计算为一种高效的可以提供大规模分布式计算的ICT(Information Communications Technology,信息通信技术)架构。其包括虚拟化资源、并行处理、数据安全和大规模数据存储。云计算不仅可以最小化个人以及企业的自动化计算成本和限制,而且可以提供廉价的硬件设施成本、高效的管理以及用户访问模式[33].
2.1.2 云计算的分类
云计算根据部署模式和服务目标的区别可划分为公有云、私有云以及混合云[34]:
(1)公有云公有云体现了云服务的公共性,而非个人用户所拥有,公有云是面向所有用户提供资源的公共服务,通常通过IDC运营商或者第三方提供相关的云服务。对于中小型企业来说,采用公有云可以有效的降低成本,并且在后期的扩展上也有优势。其缺点也很明显,包括对云数据的控制不足、难以保证云上数据的安全性。
(2)私有云私有云是相对于公有云的一种延伸和优化,相较于公有云最大的不同就是其是为一个用户使用而单独分配的,各用户之间不存在存储空间的交叉,因此极大的提升了数据的安全性以及作为云服务的质量。相对的,由于私有云的特点导致其构建和维护的成本较为昂贵,所以一般是通过收费的方式给用户提供服务。
(3)混合云混合云就是结合了公有云和私有云的优缺点,通过有效策略将这两种云有机的结合起来为用户提供服务,以达到最好的云计算效果。例如,在混合云中,对于用户私密性高的数据操作或者高质量的服务要求可以提供私有云的服务,而对于其他相对次要的需求可以通过公共云服务来降低成本。目前对于混合云的研究处于起步阶段,但其拥有很大的研究价值和应用前景。
云计算可以根据其服务的种类划分可以分为基础设施作为服务(Infrastructure as a Service,Iaa S)、平台作为服务(Platform as a Service, Paa S)和软件作为服务(Software as a Service,Saa S)三种类型[35].
(1)基础设施作为服务基础设施作为服务将硬件设备等基础资源经过虚拟化的方式封装成为一种云设备,通过网络提供给用户使用。用户可以远程控制像使用电脑一样使用这些云端的远程设备,并且只需要支付廉价的使用费用。用户可以在这些虚拟化之后的硬件上安装Windows或Linux等系统运行应用服务。
(2)平台作为服务平台作为服务是服务商提供给用户运行应用程序的运行环境。相当于一种操作系统,这一服务提供给用户要求的操作环境和云计算能力,用户可以在该环境中进行开发、部署、运行、测试等操作。用户不需要考虑运行环境的配置和维护,但是用户的自主权受到了限制,通常由于运行环境的限制,只能够按照有限的模型去解决问题。因此平台作为服务通常用于解决特定的问题。
(3)软件作为服务软件作为服务具有最强的针对性,运营商将用户所需要的功能封装成软件服务。相较于基础设施作为服务和平台作为服务,软件作为服务既不提供硬件资源,也不提供特定的系统环境,用户只能够通过网络使用特定的软件完成特定的功能操作。
2.1.3 虚拟化技术
云计算是并行计算、分布式计算、网格计算的发展延伸,它将虚拟化[36]、公共计算、Iaa S、Paa S和Saa S等概念加以融合,形成了一个新的框架。云计算的思想和网格计算不同,前者的目标是资源集中管理和分散使用,而网格计算的思想是整合分散的资源集中使用。云计算在服务器端集中提供计算资源。为了节约成本、发挥空间的最大利用率,就是要借助虚拟化技术构建资源池,虚拟化技术是云计算的基础和重要组成部分。
计算机科学家David Wheeler曾有一句名言:“计算机科学中的任何问题,都可以通过加上一层逻辑层来解决[37].”虚拟化的思想就是在系统中构建一个层次,其本质上是将具体资源抽象为逻辑资源,即多种基础资源进行虚拟化处理后,被表示为虚拟化资源,并且可以将单个物理资源映射为多个虚拟化资源[38].它为云计算提供自适应、自管理的灵活基础结构,通过虚拟化技术,可以扩大硬件的逻辑容量,简化软件的配置过程。云计算在此基础之上,为不同用户分配逻辑资源,提供相互隔离、安全可信的工作环境,并实现各种工作模式的快速部署。
虚拟化是一个层次接口抽象、封装、和标准化的过程,在封装过程中虚拟化技术会屏蔽掉硬件在物理上的差异性,比如型号差别、容量差别、接口差别等[39].这样,硬件资源经由虚拟化处理后以一种标准化、一致性的操作界面呈现给上层。这样在硬件上部署虚拟化产品后,上层的业务就可以摆脱和硬件细节相耦合的设计。但是虚拟化不是万能的,它不负责解决计算问题,它往往仅是和硬件结合在一起对物理资源进行资源池构建。
在云计算平台中,IT资源、硬件、软件、操作系统、网络存储等都可以成为虚拟化的对象。我们可以根据虚拟化的对象不同将虚拟化技术分为网络虚拟化、系统虚拟化以及存储虚拟化[40]:
(1)网络虚拟化网络虚拟化是将各种网络硬件以及软件资源进行有效的整合,向用户提供虚拟网络连接的服务。网络虚拟化通常包括虚拟局域网(Virtual LAN,VLAN)和虚拟专用网(Virtual PrivateNetwork,VPN)两种形式。虚拟局域网是通过对部分物理局域网的整合,使其整合后转变成了单个局域网,这一过程对用户是透明的。由于目前大型厂商数据中心规模的不断增大,导致其内部臃肿、效率低下。通过采用虚拟局域网的方式可以对数据中心进行优化,改善内部结构、增加运行效率。虚拟专用网是对广域网络进行虚拟化,通过抽象化网络连接,使得远程用户可以像物理连接通过虚拟连接随时访问组织内部的网络。采用虚拟专用网可以提高外部网络连接的可靠性。
目前,服务商们又为网络虚拟化技术加入了新概念。对于网络设备供应商来说,网络虚拟化是对以往的网络设备包括路由器、交换机、桥接器等加强和延伸,让这些设备具有更强的扩展性提供更多的应用,如防火墙、Vo IP(Voice over Internet Protocol,模拟信号数字化)、移动通信业务等。现在网络虚拟化虽然有所成果,但还远远不足,仍然存在很多的问题等待解决,其中包括适应更加大型的网络环境、检测出虚拟化的网络等。
(2)系统虚拟化系统虚拟化通常也被称为服务器虚拟化,是用户接触最多的虚拟化类型。比如,使用虚拟化软件例如VMware server在电脑上搭建出一个虚拟机,用户可以在该虚拟机上安装ubuntu等系统和相关系统兼容的应用程序。实际操作一个虚拟机就相当于使用一台真正的电脑。系统虚拟化的中心内容就是在硬件设备上通过虚拟化软件创建一个或者多个虚拟机。这些虚拟机在同一台设备上运行,但实际上是互不干扰的。每一个虚拟机都拥有如同实体的硬件功能以及操作系统,而且同一个硬件设备的多个虚拟机可以安装不同的操作系统,一定程度上对硬件设备实现了功能上的扩展。
(3)存储虚拟化存储虚拟化是一种有效存储数据的模式,是云存储的重要基础。存储虚拟化是通过虚拟化技术将相同或者不同的、相邻或者远距离的物理存储设备抽象成为一个存储设备。其内部结构对于用户是透明的。存储虚拟化有两种实现方式,即硬件存储虚拟化和网络存储虚拟化。
磁盘阵列技术(Inexpensive Disks,RAID)是根据一件存储虚拟化的实现原理,将多个磁盘结合在一起构成一个磁盘阵列。由于虚拟化的特性,磁盘整理技术可以回收廉价的、低性能磁盘硬件组合成为统一的并且拥有较高性能的存储设备。而网络存储虚拟化通过将存储设备和管理系统以网络连接的方式组合在一起。在这种模式下,存储设备的地理位置可以不同且对用户透明,用户可以使用管理员权限来管理存放在这些设备上的数据。基于网络存储虚拟化的实现主要有网络附加存储(Network Attached Storage,NAS)和存储区域网络(Storage AreaNetwork,SAN)。
2.2云存储技术
2.2.1 云存储的概念
云存储是在云计算基础上衍生、延伸和发展出来的,是一种以数据存储和管理为核心的云计算系统。云存储通过网络将由大量异构存储设备构成存储资源池,融合分布式存储、多租户共享、数据安全、数据去重等多种云存储技术,通过统一的Web服务接口为授权用户提供灵活的、透明的、按需的存储资源分配的云系统,是传统存储技术在大数据时代自然发展的结果。
云存储的主要思想是高冗余和虚拟化聚合[41].高冗余的设计是为了保证数据在生命周期内的可靠性和可用性,是云存储系统的设计重点之一。回顾过去,为了保证互联网在遭受核打击后可以继续工作,设计者采用了高容错的设计。例如端点之间的路径是冗余的,信息分组后通过不同的路径传输,丢失的数据包按照重传机制保证数据的完整性。这些高冗余的设计使云存储系统获得了整体层面的高容错性。例如,在云存储系统的中将数据的多个副本存储在位置不同的多个服务器上。这样,在部分服务器发生故障时,系统只需要简单地改变指向存储对象位置的指针即可。
Amazon AWS[42]在其Iaa S系统中就采用了高冗余设计,它允许EC2虚拟机实例和S3存储容器创建到四个数据中心的任何一个区域中。用户就可以将数据合理的分布在亚马逊的系统中,通过高冗余设计保证系统的高可用性。虚拟化技术可以实现云存储资源的高效聚合,消除资源的差异性,通过一致性的抽象接口实现资源的同质化。通过虚拟化技术,可以实现硬件聚合、数据聚合,以帮助企业削减运营成本,保护既有投资。
Net App公司的存储虚拟化软件Storage GRID可以创建一个虚拟化层把不同的存储设备通过管理系统聚合为单个存储池。通过它可以构建PB级别的存储池,能够兼容不同的存储设备、不同的传输协议和不同的地理位置。
云存储相较于传统存储系统具有硬件成本低、管理成本低、能耗成本低、资源利用率高、服务能力强的优势。云存储系统由大量廉价的存储设备组成,通过多副本技术等到了很强的容错能力,使企业可以使用低端硬件替代高端硬件,一些原本面临淘汰的陈旧硬件也可以在云存储系统中继续使用。云存储系统通过虚拟化技术对资源进行池化管理、实现管理高度自动化,极少需要人工干预,大大降低了管理成本。传统存储系统资源利用率很低,其按照静态方式分配存储资源,有大量的预留空间被浪费掉。在云存储系统中,通过服务器整合和重复数据删除技术,可以大幅度减少不必要的存储开销,从而提高存储资源的利用率。用户在使用云存储服务时,不必关心存储基础设施的实现细节,也不必关心底层的业务弹性和抗风险性,而是按照实际需求获取适当的资源并付费,用户可以通过各种网络设备进行访问及管理数据。
2.2.2 云存储的分类
云存储根据管理类型可以分为非可管理型云存储和可管理型云存储。非可管理性云存储应用程序提供软件作为服务(Saa S)类型的Web服务,可管理型云存储的应用程序提供基础设施作为服务(Iaa S)类型的Web服务。具体分类如下:
(1)非可管理型云存储在非可管理型云存储中,存储服务供应商为用户提供存储容量,但限定了存储量、使用方式和客户端应用程序。对于用户来说,管理这类存储的可选项是有限的。但从另一方面来说,非可管理型云存储具有可靠性高、使用成本低、操作简单等优点。大多数面向客户的云存储应用程序都属于非可管理型。
非可管理型云存储服务将磁盘空间作为一个特定容量的分区提供给用户。也就是说,远程存储作为一个映射的驱动器出现在文件夹中。文件托管服务允许用户读取和写入该驱动器,在某些情况下,用户可以和其他用户共享驱动器。随着非可管理型云存储产品逐渐发展成熟,云存储厂商开始提供增值的软件服务,如文件夹同步和备份等。国外的非可管理型存储的典型产品有Microsoft Onedrive、Google Drive等,国内的非可管理型云存储产品有百度云盘、华为网盘以及清华大学设计的Corsair系统等。
(2)可管理型云存储可管理型云存储的主要用户是开发人员,他们使用可管理型云存储为提供Web服务的应用程序存储数据。可管理型云存储将存储空间呈现为原生磁盘,并将提供给用户进行配置和管理。它由用户来进行磁盘分区和格式化。可管理型云存储的资源可以同时提供给应用程序和其他用户使用。
国外很多IT巨头提供了可管理型云存储服务,有Amazon AWS、Microsoft Azure等。国内的可管理型云存储发展迅速,产业界有阿里云OSS、百度BCS、七牛云,还有解放军理工大学开发的Mass Cloud.
2.2.3 云存储的系统结构
2009年4月,全球网络存储工业协会(Storage Networking Industry Association,SNIA)主持组建了云存储技术工作组TWG.该组织的主要任务是引领云存储的发展方向,领导全世界范围的存储行业开发、推广标准、技术和培训服务。目前该组织已发布了关于云存储规范的第一个版本云数据管理接口(Cloud Data Management Interface,CDMI)[43],对于数据对象、存储容器、计算、计费、性能、队列、元数据这些方面制定了较为完善的规范。与传统存储系统相比,云存储系统作为多种类型的网络在线存储服务,是一个由网络设备、存储设备、服务器、应用软件、公共访问接口、接入网和客户端程序等多个部分组成的复杂系统,对外提供安全、可靠、高效的数据存储和业务访问服务。云存储系统的体系结构由上往下可以划分为四个层次[44],如图2.1所示:
(1)用户访问层用户访问层是云存储系统应用程序的入口,是云存储架构的最上层。授权用户可以使用客户端或者网络登陆并访问该云存储系统,进行相关存储操作。不同的云存储产品会采用不同的访问类型以及访问手段。
(2)数据服务层数据服务层是云存储系统中与用户访问层进行对接的部分,为用户访问层提供了交互协议以及编程接口,实现了网络接入、身份验证和访问控制等功能。应用接口层是四层系统结构中最为灵活的层次,主要体现在应用服务接口、应用软件和网络服务的多样化。
(3)数据管理层数据管理层是云存储系统架构中最为重要的部分,该层通过虚拟化相关技术使大量存储设备协同工作并提供稳定、高质量的服务。数据管理层向上接收用户的相关数据并提供数据检索方式,向下对数据存储层进行管理,决定数据的存储方式。
(4)数据存储层数据存储层作为云存储系统的最底层也是最基础的部分,其最主要的功能就是存储云环境中的数据。该层的结构是由大量的而且成本低的存储硬件设备通过网络连接组合成一个具有大容量、高可靠性、高安全性的存储集合。该层还包含了存储虚拟化、实时状态监控以及集中管理的功能。数据存储层的设备可能包含多个种类并且分布在不同的位置,甚至是世界各地。云存储系统将这些存储设备通过网络连接在一起实行集中管理,统一化分配的方式来存储数据。
2.3分布式文件系统
2.3.1 分布式文件系统概述
分布式文件系统[45]是云存储系统实现的重要技术之一。由于互联网数据规模越来越大,并发请求越来越高,传统的关系数据库系统在性能、价格、可扩展性方面已经不能很好地满足需求。
Google、Amazon等互联网公司在后台基础设施中引入超大规模分布式存储系统,用来解决海量数据的存储问题。
文件系统作为操作系统中的主要组成部分,其功能是对系统中所有的文件进行统一的管理及存储服务,向上对用户提供通用和标准的接口。用户使用这些系统接口能够对存放在系统内的文件进行访问、删除、复制等一系列操作。传统的文件系统由于其基于本地磁盘的特性存在着一些缺陷。一方面由于所有文件都存放在一块磁盘上,即使磁盘内部进行了备份,但只要磁盘收到了损坏,将导致所有文件的丢失;另一方面这种存储方式扩充起来比较困难,其内存空间受到限制,从而无法满足大量数据存储要求。而分布式的存储系统由于数据可以存放在不同的物理设备上,而且这种数据分散的存储方式能够很好地与Map Reduce并行计算框架相结合[46],为大数据处理提供了一种有效的实现方法。相较于传统的单一存储模式,分布式存储具有成本低和高扩展性,能够弱化关系型数据库模型,并且可以得到高并发和高性能。
分布式文件系统对于云计算相关产业的发展起到了不可替代的重大作用,但是也面临着数据存储中数据的可靠性与一致性问题。为了解决这些问题Google提出了GFS(Google FileSystem)分布式文件系统,受到GFS的启发,更多高性能的分布式文件系统相继出现,比如HDFS、TFS、Lustre FS等,虽然这些分布式文件系统实现方式大同小异,但是也存在各自的优势。下面将对HDFS进行重点研究,为后续章节提供理论基础。
2.3.2 Hadoop 分布式文件系统
HDFS[47](Hadoop Distributed File System)是分布式系统架构Hadoop的分布式文件系统,是基于Google GFS分布式文件系统的优化结果。其设计的目的就是利用淘汰或者低性能的机器搭建出一个稳定的、高性能的分布式存储系统。
HDFS采用了主从式的架构模式,在系统的节点集群中存在着一个Name Node和多个DataNode[48].
Name Node是一个控制节点,其功能是存放文件块在物理存储中具体的位置,同时控制整个系统中对于文件的一系列访问。
Data Node则通过执行Name Node的命令对系统中存储的文件完成打开、关闭、重命名等具体操作。
Data Node节点是从节点,主要功能是对它所在的节点上所有存储的数据进行管理。每个文件在实际存储Data Node前都会进行切分操作产生一个或多个文件块,将切分的文件块存储在各个Data Node中。
Data Node主要负责用户对于文件的读写请求。
Secondary Name Node作为次控制节点是负责备份元数据信息的,元数据是对数据的描述,Name Node中的元数据信息保存在FSImage以及Edit Log这两个文件里,Secondary Name Node的作用就是定期的从Name Node复制这两个文件到本地目录中,这一操作是为了保证在Name Node宕机时可以通过备份文件将HDFS恢复到宕机之前的状态。
Data Node和Name Node之间的联系是通过Heart Beat机制来进行的,Data Node需要定期向Name Node发送Heart Beat,一旦Name Node在定期之内没有收到从Name Node传递的Heart Beat,就认为此Data Node的连接被断开,无法再运行下去,最后把这一节点标记成为“死亡节点”.同样的,当Name Node接收到了新加入或者断开的Data Node节点所发送的Heart Beat时,则可以根据Heart Beat中包含的相关信息,把这个节点添加到节点集群中,这种模式使得HDFS拥有很好地扩展性。
HDFS分布式文件系统主要是对大文件进行处理,由于其对于某个文件可以接受多个访问请求的特性,从而适用于并发性高的环境。适合为大数据分析、网络爬虫、搜索引擎这些并发性要求很高的应用提供存储服务。相反的,HDFS一般不用于存储大量的小文件,这是因为Name Node在运行的状态时,需要将所有文件的元数据都加载到内存,每个元数据包括的信息大约为150KB,由于这些内存的额外开销,Name Node节点的内存大小直接限制了HDFS所能包含的文件的数量。
接下来我们将对HDFS中数据的读写操作进行研究:
(1)HDFS写数据流程(a)在需要写数据时,系统首先会向Name Node发送创建文件的请求。
(b)Name Node先确定系统中是否存在与该文件名相同的文件,如果存在,则拒绝请求。
其次系统首先在文件系统的目录信息当中加入新文件的相关信息,然后授权给系统进行新文件的创建。
(c)在收到授权信息后,系统进行写入文件的操作,首先将文件切割然后分块写入。在每一个文件块进行存储时,系统都先向Name Node申请数据节点,然后写入文件块。
由于HDFS对于每个数据块都要保存三个副本,所以在写入操作中,对于每个数据块的申请,Name Node都会返回三个Data Node的位置用于该数据块的存储。在数据块写入到第一个Data Node中后,该Data Node会将数据块再发送给其他两个Data Node,只有在这些操作全部完成后,系统才会反馈信息给Name Node,告知该数据块已经完成存储。
同时,HDFS为了保证数据的一致性,其并不支持数据块的修改操作。如果需要对文件进行修改,唯一的办法就是首先删除原有的文件,然后再写入新的文件。这种模式是实现HDFS高并发性的原因之一。
(2)HDFS读数据流程(a)在需要读取文件的操作时,系统首先会向Name Node节点发出读数据请求。
(b)由于Name Node内存之中存放了所有文件的元数据,其中包括每个文件块对应的Data Node的物理位置。当Name Node收到了系统对于文件访问的请求时,会把该文件所对应的所有的Data Node的位置返回给系统。
(c)系统从Name Node获取到的所有相关Data Node的地址之后,会根据地址到对应的Data Node中进行数据的读取。
Name Node在文件的读取操作中除了提供Data Node的地址之外,实际并不参与文件的读取。也就是说文件不会经过Name Node,而是Data Node和客户端之间直接进行交互,文件直接从Data Node传送到客户端上。这样的模式极大的增强了HDFS读取文件的效率,使得其在处理并发请求上具有很高的效率。
客户端通过Name Node返回的一系列Data Node地址,到相应的Data Node去读取数据。
在读取文件时,HDFS客户端是直接与Data Node进行交互的,Name Node只是处理地址,并不提供数据服务。由于数据只是在各个Data Node之间流动,使得HDFS可以同时处理大量并发的读文件请求。
2.4 本章小结
本章为了深入的了解云数据存储问题,研究了云存储相关技术。其中包括云计算的相关概念、分类以及核心的虚拟化技术。其次,研究了云存储系统的相关概念、应用分类以及系统架构。最后对于云存储的核心部分分布式文件系统进行了详细的探究。采用了HDFS作为典型个例,分析了其相关组成及逻辑架构,并且研究了其对读写文件操作的流程。通过以上的相关技术研究,更加的了解了云存储的实现模式,为后续章节打下了坚实的基础。