《云计算——分布式存储.pptx》由会员分享,可在线阅读,更多相关《云计算——分布式存储.pptx(51页珍藏版)》请在优知文库上搜索。
1、云计算原理与实践Principles and Practice of Cloud ComputingOutline 5.1 分布式存储的基础 5.2 文件存储 5.3 从单机存储系统到分布式存储系统 5.4 实践:分布式存储系统CephMachine LearningDomain expertiseMathematicsData engineering5.1 分布式存储的基础5.1.1 基本概念5.1.2 分布式存储分类5.1.3 分布式存储的发展历史5.1.1 基本概念分布式存储系统的定义:分布式存储系统是将为数众多的普通计算机或服务器通过网络进行连接,同时对外提供一个整体的存储服务。分布式
2、存储系统包括以下几个特性: 高性能 可扩展 低成本 易用性分布式存储系统的技术挑战包括:数据和状态信息的持久化、数据的自动迁移、系统的自动容错、并发读写的数据的一致性等方面。5.1.2 分布式存储分类分布式存储面临的应用场景和数据需求都比较复杂,根据数据类型,可以将其分为非结构化数据、结构化数据、半结构化数据三类。正因为数据类型的多样性,不同的分布式存储系统适合处理不同类型的数据,因此可以将分布式存储系统分为四类:1.分布式文件系统2.分布式键值(Key-Value)系统3.分布式表系统4.分布式数据库1. 分布式文件系统分布式文件系统存储三种类型的数据:Blob对象、定长块以及大文件。图5.
3、1 数据块与Blob对象、定长块、大文件之间的关系2 分布式键值(Key-Value)系统 分布式键值系统用于存储关系简单的半结构化数据,它提供基于主键的CRUD(Create/Read/ Update/Delete)功能,即根据主键创建、读取、更新或者删除一条键值记录。典型的系统有Amazon Dynamo。 分布式键值系统是分布式表系统的一种简化,一般用作缓存,比如Memcache。 从数据结构的角度看,分布式键值系统支持将数据分布到集群中的多个存储节点。 一致性散列是分布式键值系统中常用的数据分布技术,由于在众多系统中被采用而变得非常有名。3 分布式表系统 分布式表系统主要用于存储半结构
4、化数据。 与分布式键值系统相比,分布式表系统不仅仅支持简单的CRUD操作,而且支持扫描某个主键范围。 分布式表系统以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的CRUD功能以及范围查找功能。 典型的分布式表系统包括Google Bigtable、Microsoft Azure Table Storage、Amazon DynamoDB等。4 分布式数据库分布式数据库是从传统的基于单机的关系型数据库扩展而来,用于存储大规模的结构化数据。分布式数据库采用二维表格组织数据,提供经典的SQL关系查询语言,支持嵌套子查询、多表关联等复杂操作,并提供数据库事务以及并发控制。关系
5、数据库是目前为止最为成熟的存储技术,功能丰富,有完善的商业关系数据库软件的支持。随着大数据时代的到来,为了解决关系数据库面临的可扩展性、高并发以及性能方面的问题,各种各样的非关系数据库不断涌现,这类被称为NoSQL的系统,可以理解为“Not Only SQL”的含义。图5.2 分布式文件系统的发展5.1.3 分布式存储的发展历史120世纪80年代的代表:AFS、NFS、Coda(1) AFS:1983年CMU和IBM共同合作开发了Andrew文件系统(Andrew File System,AFS)(2) NFS:1985年,Sun公司基于UDP开发了网络共享文件系统(Network File
6、System, NFS)(3) Coda:1987年,CMU在基于AFS的基础上开发了Coda文件系统5.1.3 分布式存储的发展历史220世纪90年代的代表:XFS、Tiger Shark、SFS5.1.3 分布式存储的发展历史XFS:加州大学伯克利分校(UC Berkeley)开发了XFS文件系统,克服了以往分布式文件系统只适用于局域网而不适用于广域网和大数据存储的问题,提出了广域网进行缓存较少网络流量设计思想,采用层次命名结构,减少Cache一致性状态和无效写回Cache一致性协议,从而减少了网络负载,在当时获得了一定的成功。320世纪末的代表: (1) SAN(Storage Area
7、 Network)(2) NAS(Network Attached Storage)(3) GPFS (General Parallel File System)(4) GFS (Google File System)(5) HDFS (Hadoop Distributed File System)5.1.3 分布式存储的发展历史(1)SAN(Storage Area Network)通过将磁盘存储系统和服务器直接相连的方式提供一个易扩展、高可靠的存储环境,高可靠的光纤通道交换机和光纤通道网络协议保证各个设备间链接的可靠性和高效性。设备间的连接接口主要是采用FC或者SCSI。图5.3 SAN网
8、络结构(2) NAS(Network Attached Storage) 通过基于TCP/IP的各种上层应用在各工作站和服务器之间进行文件访问,直接在工作站客户端和NAS文件共享设备之间建立连接,NAS隐藏了文件系统的底层实现,注重上层的文件服务实现,具有良好的扩展性图5.4 NAS存储网络结构(3) GPFS (General Parallel File System) GPFS是IBM公司开发的共享文件系统,起源于IBM SP系统上使用的虚拟共享磁盘技术。 GPFS是一个并行的磁盘文件系统,它保证在资源组内的所有节点可以并行访问整个文件系统。 GPFS允许客户共享文件,而这些文件可能分布在
9、不同节点的不同硬盘上。它同时还提供了许多标准的UNIX文件系统接口,允许应用不需修改或者重新编辑就可以在其上运行。(4) GFS (Google File System)图5.5 GFS架构图(5) HDFS (Hadoop Distributed File System)图5.6 HDFS总体结构示意图421世纪的代表:Cassandra、HBase、MongoDB、DynamoDB(1) Cassandra:是一套开源分布式NoSQL数据库系统,最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于
10、一身。(2) HBase:列存储数据库,擅长以列为单位读取数据,面向列存储的数据库具有高扩展性,即使数据大量增加也不会降低相应的处理速度,特别是写入速度。5.1.3 分布式存储的发展历史421世纪的代表:Cassandra、HBase、MongoDB、DynamoDB(3) MongoDB:文档型数据库同键值(Key-Value)型的数据库类似,是键值型数据库的升级版,允许嵌套键值,Value值是结构化数据,数据库可以理解Value的内容,提供复杂的查询,类似于RDBMS的查询条件。(4) DynamoDB:Amazon公司的一个分布式存储引擎,是一个经典的分布式Key-Value存储系统,具
11、备去中心化、高可用性、高扩展性的特点。5.1.3 分布式存储的发展历史5.2 文件存储5.2.1 单机文件系统5.2.2 网络文件系统5.2.3 并行文件系统5.2.4 分布式文件系统5.2.5 高通量文件系统5.2.1 单机文件系统现代文件系统的起源要追溯到分时操作系统时期。1965年,在Multics操作系统中首次提出使用树型结构来组织文件、目录以及访问控制的思想。这些思想被后来的UNIX文件系统(1973年)所借鉴。从结构上看,它包括四个模块:引导块、超级块、索引节点和数据块。为解决UNIX文件系统I/O性能低的问题,先后出现了1984年的快速文件系统(Fast File System,
12、FFS)和1992年的日志结构文件系统(Log-Structured File,LFS)。20世纪90年代至今,出现了很多单机文件系统。包括SGI公司于1994年发布的XFS,以及Sun公司于2004年发布的ZFS。5.2.2 网络文件系统NFS(Network File System,网络文件系统)由Sun公司在1984年开发,被认为是第一个广泛应用的现代网络文件系统。NFS的设计目标是提供跨平台的文件共享系统。由于NFS的实现和设计思想都相对简单,该协议很快被纳入到RFC标准,并开始大量应用。然而,NFS单一服务器的结构也决定了它的扩展性有限。AFS(Andrew File System)
13、是美国卡耐基梅隆大学1982年开发的分布式文件系统。其设计目标是支持500010000个节点的集群,扩展性是首要考虑的因素。与NFS等系统不同的是,AFS中有多个服务器,整个命名空间被静态地划分到各个服务器上,因此,AFS具有更好的扩展性。5.2.3 并行文件系统早期的并行文件系统有BFS(Bridge File System)和CFS(Concurrent File System)等。它们运行在MPP(Massively Parallel Processing,MPP)结构的超级计算机上。20世纪90年代中期,开源的Linux操作系统逐渐成熟并得到广泛使用,为了能在越来越多的Linux集群上
14、运行,出现了以PVFS和Lustr为代表的Linux集群上的并行文件系统。它们吸收了MPP并行文件系统的很多思想,包括采用一个专门的元数据服务器来维护和管理文件系统的命名空间,以及将文件数据条带化并分散存储在所有的存储服务器上等。5.2.4 分布式文件系统20世纪90年代后期,随着互联网的发展,出现了搜索引擎这样的海量文本数据检索工具。搜索引擎需要高吞吐率、低成本、高可靠的系统,而非高峰值处理性能的系统。于是产生了以谷歌的Google File System(GFS)、MapReduce 为代表的新型数据处理架构。GFS的底层平台是大规模(数千台到数万台)的、廉价的、可靠性较低的PC集群,存储
15、设备是集群中每个节点上的多块IDE磁盘谷歌架构被互联网企业广泛采用,现在流行的Hadoop就是GFS和MapReduce的一种开源实现,被很多企业采用。5.2.5 高通量文件系统高通量文件系统是为大型数据中心设计的文件系统,它将数据中心中大量低成本的存储资源有效地组织起来,服务于上层多种应用的数据存储需求和数据访问需求。随着云计算技术的发展,数据中心的数据存储需求逐渐成为数据存储技术和文件系统发展的主要驱动力,高通量文件系统将成为一种重要的文件系统。大型数据中心在数据存储和数据访问方面有着与先前的应用非常不同的需求特征,主要包括:数据量庞大、访问的并发度高、文件数量巨大、数据访问语义和访问接口
16、不同于传统的文件系统、数据共享与数据安全的保障越来越重要等。表5.1 文件系统的发展脉络5.3 从单机存储系统到分布式存储系统5.3.1 单机存储系统5.3.2 分布式存储系统5.3.1 单机存储系统1硬件基础简单来说,单机存储就是散列表、B 树等数据结构在机械硬盘、SSD 等持久化介质上的实现。单机存储系统的理论来源于关系数据库,是单机存储引擎的封装,对外提供文件、键值、表或者关系模型。由摩尔定律可知,相同性能的计算机等 IT产品,每18个月价钱会下降一半。而计算机的硬件体系架构却保持相对稳定,一个重要原因就是希望最大限度地发挥底层硬件的价值。计算机架构中常见硬件的大致性能参数如表5.2所示。表5.2 常用硬件性能参数5.3.1 单机存储系统2存储引擎存储引擎直接决定了存储系统能够提供的性能和功能,其基本功能包括:增、删、改、查,而读取操作又分为随机读取和顺序扫描两种。散列存储引擎是散列表的持久化实现,支持增、删、改,以及随机读取操作,但不支持顺序扫描,对应的存储系统为键值(Key-Value)存储系统。B树(B-Tree)存储引擎是树的持久化实现,不仅支持单条记录的增、删、读、改操