非结构化数据是指数据库的二维逻辑表不能表示的数据,包括各种格式的办公文档、电子邮件、文本、图片、XML、HTML,各种报表、图像和音视频信息等。非结构化数据具有异构性和多样性,具有多种格式,包括文本、文档、图形、视频等。根据2011年IDC的调查,非结构化数据将占未来十年产生的数据的80%。根据Gartner的数据,全球信息的最低年增长率为59%,其中15%为结构化数据,其余85%为各种非结构化数据。非结构化数据的增长率高于结构化数据。
非结构化数据的增长速度快于传统的存储和分析解决方案,因此需要具有成本效益的存储来管理大规模数据。大数据规模包括从TB级到PB级的数据集,要求高性能的系统能够实时或接近实时地处理大量数据。随着大规模并行处理等技术的发展,高可靠性、高可用性、高可扩展性、低成本、高性能的存储系统已成为大数据解决方案的关键技术。
(一)分布式文件系统
1.摘要
随着大数据时代的到来,需要提供一个高性能、高可靠性、高可用性和低成本的存储系统来满足不同业务和数据分析的需要。分布式文件系统具有高可扩展性、高可靠性、高可用性和低成本等特点,是解决大数据问题的有力武器。
分布式文件系统是指文件系统管理的物理资源不是本地资源的事实。应用最广泛的传统分布式文件系统是NFS(Network File System),其目的是使计算机共享资源。在其发展过程中(即20世纪80年代),计算机工业的迅速发展、廉价的CPU和客户机/服务器技术促进了分布式计算环境的发展。但是,在处理器价格下降时,大型存储系统的价格仍然很高,因此必须采取一定的机制,使计算机能够在充分发挥单处理器性能的同时,共享存储资源和数据。所以NFS诞生了。
20世纪90年代初,随着磁盘技术的发展,单位存储成本不断下降。Windows的出现极大地促进了处理器的发展和微型计算机的普及。随着Internet的出现和普及,网络中实时多媒体数据传输的需求和应用越来越普遍。
随着大数据时代的到来,数据处理已迅速转移到并行技术,如集群计算和多核处理器等,以加快并行应用的发展和广泛应用。这种并行技术的应用解决了大多数计算瓶颈,但将性能瓶颈转移到存储I/O系统。随着主流计算转向并行技术,存储子系统也需要转移到并行技术。当从较少的客户端访问相对较小的数据集时,NFS结构工作良好,直接连接内存带来了显著的好处(就像本地文件系统一样)。也就是说,多个客户端可以共享数据,任何具有NFS功能的客户端都可以访问数据。然而,如果大量客户端需要访问数据或数据集太大,NFS服务器很快就会成为瓶颈,从而影响系统性能。
分布式文件系统的开发具有高可扩展性、高可靠性、高可用性和低成本的特点。与传统的分布式文件系统的区别如下。
(1)对于大规模集群系统,机器的故障是正常的。应该将分布式文件系统中任何组件的故障或错误视为正常,而不是抛出异常。
(2)支持系统扩展,任何节点的意外停机不影响文件系统的正常工作。
(3)将文件操作分为控制信息路径和数据路径,提高了文件访问性能。
2.技术架构
在传统的分布式文件系统中,所有的数据和元数据都通过服务器存储在一起,这种模式通常被称为带内模式。随着客户端数量的增加,服务器成为整个系统的瓶颈,因为系统中的所有数据传输和元数据处理都必须通过服务器,不仅单个服务器的处理能力受到限制,存储容量也受到磁盘容量的限制,而磁盘I/O和网络I/O限制了系统的吞吐量,出现了一种新的分布式文件系统存储区域网络,它将应用服务器与存储设备直接连接起来,大大提高了数据传输能力,减少了数据传输延迟。在这种结构中,所有应用服务器都可以直接访问存储在SAN中的数据,元数据服务器只能提供关于文件信息的元数据,从而减少了数据传输的中间环节。提高了传输效率,减少了元数据服务器的负载。每个元数据服务器都可以向更多的应用服务器提供文件系统元数据服务,这种模式通常被称为带外模式。区分带内模式和带外模式的主要依据是文件系统元数据操作的控制信息是否与文件数据一起通过服务器传输。前者需要服务器转发,后者可以直接访问。
目前,分布式文件系统主要有两种技术体系结构:一种是元数据服务器的中心体系结构,即元数据服务器负责管理文件系统的全局命名空间和文件系统的元数据信息;另一种是离中心架构,即所有服务器都是用户的接入点,每个服务器节点负责管理部分名称空间和元数据,用户可以通过任何服务器访问文件的内容。
3.关键技术
(1)元数据集群
分布式文件系统采用控制流与数据流分离的思想。元数据服务器负责管理整个文件系统的所有元数据信息和数据存储服务器的集群信息等关键信息。因此,如果元数据服务器失败,整个文件系统将无法继续为用户服务。单节点元数据服务器的处理能力和存储容量是有限的。随着系统数据量的增加,元数据服务器的处理能力将成为制约系统规模的瓶颈。
一个常见的解决方案是元数据服务器使用主/备份模式,也就是说,在正常情况下,主元数据服务器负责处理所有请求和管理整个分布式文件系统。并定期将所有信息同步到备份元数据服务器。如果主服务器失败,备份服务器将接管主服务器,不需要中断用户服务,但可能会丢失一些尚未与备份服务器同步的数据。这种方法只能在一定程度上解决元数据服务器的单点故障问题,但不能解决系统规模问题。因此,具有较高可扩展性的元数据服务器集群已成为分布式文件系统设计中的关键技术。
使用主/备份模式的元数据集群体系结构。HDFS和GFS目前的做法是使用辅助节点将主节点数据与主节点同步,用户请求由主节点处理。当主节点失败时,辅助节点将接管主节点的工作。
主备份模式的实现相对简单,但主备份模式的局限性问题没有得到有效解决。
元数据服务器基于主从(主从/从)体系结构,即服务器集群构成元数据服务节点,其中完整集管理节点管理服务器节点中的整个命名空间和文件系统元数据的分区。
主从体系结构元数据服务器需要一个全局管理节点,负责全局名称空间分段和全局负载平衡。实现过程更加复杂,负载平衡过程可能需要大量的数据迁移。
在元数据空间约束的情况下,还有一个相对简单的解决方案,用户负责管理多个挂载点,每个挂载点仍然使用典型的主/备用模式元数据集群体系结构。使用这种模式在系统的实现和维护上都降低了成本,但是由于存在多个名称空间而导致的孤立信息孤岛的情况,需要由用户来处理。
分散结构管理是一种自管理架构,它不需要全局管理节点来感知文件存储的位置,而是使用特定的方法来确定文件存储中节点的位置。每个服务器可以管理存储的文件数据和相关的文件系统元数据。一致散列算法通常用于保证存储服务器节点中数据的均匀分布。
(2)可靠性技术
可靠性是存储系统的一个重要指标。为了提高分布式文件系统的可靠性,采用了不同的策略。有两种常见的方法:多个副本和EC编码。多副本模式易于理解,这意味着数据以多个相同的副本(如GFS)存储在系统中,这通过使用多个副本来确保可靠性。
目前,根据Google发布的文件,GFS主要采用全拷贝备份的冗余模式。虽然存储介质的成本正在下降,但显然是对空间的巨大浪费,这是需要考虑的问题。
多拷贝的空间消耗非常大,空间存储空间的减少意味着拷贝数量的减少,对于200%的空间浪费来说,即使只减少到150%,节省的能源也是非常可观的。Google也看到了这一点,在下一代GFS中,RAID和擦除代码将被用来确保文件的完整性。
采用EC擦除码技术的存储系统具有许多优点,如能够在相同冗余的情况下占用较小的存储空间。目前,典型的应用产品是EMC Atmos。
Atmos是EMC开发的云存储基础设施解决方案。Geo Protect技术于2010年2月发布,使用擦除代码技术为Atmos提供类似RAID的数据保护功能。通过在Atmos云之间编码和分发目标,支持三次或六次故障(存储开销分别为33%和66%)。擦除代码技术使Atmos能够降低提高数据存储可靠性的额外成本。Geo Protect允许用户配置副本或擦除代码策略的选择,并调整副本的数量和擦除代码的冗余。
Hadoop分布式文件系统(HDFS)是GFS的开源实现。它最初使用三个完整的副本备份。虽然它具有简单、高效的特点,但其200%的空间冗余导致了大量的空间浪费。一些小企业会发现很难接受。最近,HDFS采用了一种新的磁盘还原方法,即用RAID技术代替完全复制来实现数据冗余。
Disk Reduce的基本原理是在实现功能的基础上对HDFS进行最低程度的修改。它利用了HDFS的两个重要特性:一是写文件,不做修改;二是一个文件的数据块在开始时都是三个副本。在提交和备份文件时,不修改HDFS并在后台处理书面数据。不同之处在于,HDFS守护进程一直在寻找拷贝不足的数据块。Disk Reduce是一个数据块,它占用低开销数据块的高成本,例如用于空间压缩的RAID编码。在数据块编码完成之前,不删除冗余的完整副本。如果空间允许,Disk Reduce可以推迟编码。
在将文件的三个副本放入三个不同的数据节点后,Disk Reduce选择空间最大的节点作为编码数据存储节点,并从其他两个节点中删除数据。
(3)重复数据删除
重复数据删除是一种先进的无损压缩技术,主要用于减少存储系统中的数据量。在备份存档存储系统中,重复数据删除技术可以达到20∶1或更高的数据压缩比。数据存储大幅减少了对存储空间的需求,降低了存储设备的购买成本,也降低了物理存储资源的管理和维护成本。从ESG实验室的测试结果可以看出,采用重复数据删除技术可以基本实现10~20倍容量的压缩比。
总之,重复数据删除技术利用了文件系统中文件之间和文件内部的相同和相似之处,它们的粒度可以是文件、数据块、字节甚至是位。处理粒度越细,冗余数据删除越多,存储容量越大,但计算开销越大。重复数据删除的主要功能如下。
1)有效地节省有限的储存空间。重复数据删除技术大大提高了存储系统的空间利用率,节省了存储系统的硬件成本。
2)减少冗余数据在网络中的传输。在网络存储系统中,重复数据删除技术可以减少重复数据的网络传输,节省网络带宽。
3)在广域网环境下,消除冗余数据传输的好处更加明显,也有利于远程备份或灾难恢复。
4)帮助用户节省时间和成本。它主要体现在数据备份/恢复速度的提高和存储设备的节省上,具有很高的性价比。
(4)文件系统访问接口
数据访问是存储系统的重要组成部分,包括数据访问的接口定义和具体的实现技术。标准的访问接口可以屏蔽存储系统之间的异构性,使应用程序能够以统一的方式访问不同的存储系统,提高存储系统的适用性和兼容性,从而支持更多的应用。
便携式操作系统接口由IEEE发起,由ANSI和ISO标准化。其目标是提高各种UNIX执行环境之间应用程序的可移植性,即确保在重新编译后P0SIX兼容的应用程序能够在任何符合POSIX的执行环境中正确运行。
P0SIX文件接口规范是P0SIX标准的一部分。它是一组简单实用的标准文件操作规范。它已经成为本地文件系统的行业标准,拥有大量的用户,并且具有良好的兼容性。另外,经过近20年的发展,POSIX已经非常成熟,应用领域也非常广泛,有多种接口解决方案可供参考。
传统的应用程序可以在Linux或Windows等POSIX兼容的执行环境中运行,因此实现POSIX兼容的云存储数据访问方法可以保证传统应用程序能够透明地访问云存储资源。与Internet小型计算机系统接口相比,POSIX只定义了文件操作的接口规范,而不关心文件的数据组织,使得云存储系统的数据管理更加灵活。
POSIX实际上规范了执行环境和应用程序之间的接口,符合POSIX接口规范的执行环境和应用程序可以无缝集成。在Linux执行环境中,虚拟文件系统是执行环境的一部分,符合POSIX接口规范。因此,云存储系统的数据访问方法只要满足VFS编程规范,同时又符合POSIX标准,大大简化了云存储系统访问方法的设计和实现。
4.产业地位
(1)GFS(www.xing528.com)
GFS是Google发布的一种分布式文件系统技术。它是根据Google应用的特点和要求设计的。该方法已成功应用,但其应用范围有限。从Google应用的需求分析来看,它具有以下特点。
1)数据量巨大,文件大小往往很大。
2)文档的藤条工作模式具有明显的特点,通常进行大容量的读取操作(>1MB)。
3)文件的写入方式具有明显的特点,通常是按顺序(大于1MB)写大件。
4)对文件的大多数修改不包括原始数据,而是在文件末尾添加新数据。对文件的随机写入几乎不存在,并且当它们被写入时,它们只被读取,通常是顺序的。
5)多个客户端经常同时向单个文件追加内容。
在全局视图条件下,使用单一的Master可以简化系统设计,制定出更好的块处理策略,但也存在一个瓶颈问题。因此,Master只存储相当于元数据服务器的元数据,而特定的数据传输则由客户端和Tracker服务器完成。
主服务器管理文件系统的元数据,包括文件和块的命名空间、文件到块的映射以及块副本的位置。
文件和块的命名空间,即文件到块的映射,由Master永久保存。当主服务器通过心跳检测到所述Tracker服务器信息时,所述块保存的复制信息由所述Tracker服务器携带,所保存的块信息由所述Tracker服务器携带。主服务器可以在启动后保持最新的信息,因为它控制所有块的位置,并使用正常的心跳信息监视Tracker服务器的状态。在启动时定期获取块信息和刷新可以有效地解决主服务器和Tracker服务器之间的同步问题。
通过B树压缩存储,可以将元数据保存在内存中,从而降低了集群管理的复杂性,降低了主服务器和集群服务器的维护复杂度。
(2)HDFS
Hadoop分布式文件系统(HDFS)是一种适合在商用硬件上运行的分布式文件系统。它与现有的分布式文件系统有很多共同之处,但它们之间的区别也很明显。HDFS是一种高度容错的系统,适合在廉价的机器上部署。HDFS提供了高吞吐量的数据访问,非常适合大型数据集上的应用程序。HDFS放宽了POSIX的一些限制,实现了对文件系统数据的流读取。它最初是作为Apache Nutch搜索引擎项目的基础设施开发的,是Apache Hadoop Core项目的一部分。
HDFS基本上可以看作是GFS实现的一个简化版本,两者之间有许多相似之处。HDFS采用主从结构,HDFS集群由一个命名节点(Name Node)和一定数量的数据节点(Data Node)组成。Name节点是一个中央服务器,负责管理文件系统的命名空间(命名空间)和客户端对文件的访问。通常,集群中的每个节点都有一个数据节点,该数据节点管理其所在节点上的存储。HDFS公开用户可以文件形式存储数据的文件系统的命名空间。在内部,可以将文件划分为存储在一组数据节点上的一个或多个数据块。Name节点在文件系统上执行名称空间操作,例如打开、关闭、重命名文件或目录,它还负责确定数据块到特定数据节点的映射。数据节点负责处理文件系统客户端的读写请求,在名称节点的统一调度下创建、删除和复制数据块。
HDFS可以支持大型文件操作,例如需要处理大型数据集的应用程序。这些应用程序只写一次数据,但是读取一次或多次,读取的速度应该是流式读取。
根据需要,HDFS支持文件的“写多读”语义。典型的数据块大小为64 MB,因此HDFS中的文件总是根据64 MB被切割成不同的块,每个块尽可能多地存储在不同的数据节点中。
HDFS文件只允许打开和追加数据一次。客户端将所有数据写入本地临时文件。当数据量达到块大小(通常为64 MB)时,请求HDFS Master分配工作站和块号。立即将块的数据写入HDFS文件。由于实际编写HDFS系统需要积累64 MB的数据,对HDFS主程序的压力并不大,因此不需要类似于GFS的机制来授权写入机器,而且不存在重复记录和无序的问题,极大地简化了系统的设计。
HDFS有很多问题,因为它不支持Ajjpend模型,因为HDFS客户端需要积累64 MB的数据才能立即写入HDFS,如果它崩溃,一些操作日志可能会丢失数据,如果它们不能写入HDFS。
名称节点是HDFS集群中的单个故障点,如果名称节点机器失败,则需要手动干预。目前,在另一台计算机上自动重新启动或执行名称节点故障转移的功能尚未实现。
1)删除和恢复文件。
当用户或应用程序删除文件时,不会立即从HDFS中删除该文件。实际上,HDFS将文件重命名移至/杂质目录,该文件保存在/False中进行可配置的时间,当超过此时间时,Name节点将文件从命名空间中移除。
只要已删除的文件仍然在/回收站目录中,用户就可以恢复该文件。如果用户希望恢复已删除的文件,可以浏览/回收站目录来检索该文件,而/回收站目录仅保存已删除文件的最后一份副本。垃圾目录与其他目录没有什么不同,当前的默认策略是删除/回收站目录中停留超过6小时的文件,这些文件以后可以通过一个定义良好的接口进行配置。
2)减少复制系数。
当文件的复制系数减小时,名称节点选择要删除的多余副本。下一次检测将此信息传递给数据节点,数据节点将删除相应的数据块,使集群中的空闲空间增加。同样,对setReplication API端的调用和集群中空闲空间的增加也可能被延迟。
3)流水线复制。
当客户端将数据写入HDFS文件时,最初会将其写入本地临时文件。假设文件的复制系数设置为3,当本地临时文件累加到数据块的大小时,客户端将从名称节点获取数据节点列表以存储副本;然后,客户端开始向第一数据节点发送数据,第一数据节点逐渐(4KB)接收数据,将每个部分写入本地仓库,并将该部分传输到列表中的第二个数据节点。第二数据节点逐渐接收数据,将数据写入本地仓库,同时传递给第三数据节点。最后,第三个数据节点接收数据并在本地存储。因此,数据节点可以流水线地接收来自前一个节点的数据并将其转发到下一个节点,并且以流水线方式将数据从前一个数据节点复制到下一个数据节点。
4)快照函数。
HDFS目前不支持快照功能,但计划在以后的版本中支持它。
(二)对象存储系统
1.摘要
大数据时代给存储系统的容量、性能和功能带来了巨大的挑战,主要表现在大容量、高性能、可伸缩性、共享性、适应性、可管理性、高可靠性和可用性等方面。市场上没有满足所有这些要求的解决办法。基于对象的存储技术是快速升级存储需求的一种很有前途的解决方案。它集合了高速、直接访问SAN和安全、跨平台的NAS共享数据的优点。
传统的文件系统架构将数据组织成目录、文件夹、子文件夹和文件的“树结构”。文件是与应用程序关联的数据块的逻辑表示形式,也是处理数据的最常见方式。传统文件系统存储在一个文件夹中的文件数量在理论上是有限的,只能处理简单的元数据,这将给处理大量类似的文件带来问题。
随着存储复杂度的进一步提高,下一代Internet和PB级存储的大规模部署迫切期待面向对象存储技术的成熟和大规模应用。基于对象的存储技术提供了一种新的基于对象的设备访问接口,在性能、跨平台能力、可扩展性、安全性等方面,SAN的块接口与NAS的文件接口有很好的折中。成为下一代存储接口标准之一。
在众多集群计算用户中,一种基于对象的存储技术正在悄然兴起,成为构建大规模存储系统的基础。利用现有的处理技术、网络技术和存储组件,可以一种简单方便的方式实现前所未有的可扩展性和高吞吐量。
2.技术架构
对象存储系统以对象作为最基本的逻辑访问单元。每个对象由唯一的对象访问,形成一个平面命名空间。典型的对象存储体系结构采用哈希算法来管理基于全局唯一OID的对象存储,具有全局负载均衡和快速定位对象存储节点的优点。
3.产业地位
(1)Amazon S3
Amazon S3是一个简单的存储服务,为用户提供对象操作语义。用户使用S3存储和读取对象操作。Amazon有一个简单的Web服务接口,可以随时随地访问网络上的数据。Amazon使用高度可伸缩、可靠、快速和廉价的数据存储基础设施来运行自己的全球网站网络,允许任何开发人员访问相同的数据存储基础设施。服务通过最大限度地扩大规模并向开发人员提供利益而受益。
Amazon S3设计的典型特性如下。
1)可扩展性。Amazon S3可以在存储容量、请求频率和用户数量方面进行扩展,以支持无限数量的Internet应用程序。规模是S3的一个优势,向系统中添加节点将提高系统的可用性、速度、吞吐量、容量和鲁棒性。
2)可靠性。实现了数据的持久化存储,可用性为99.99%。没有单一的失败点。所有系统故障都可以在不停机的情况下被容忍和修复。
3)速度快。Amazon S3的响应必须足够快,以支持高效的应用程序。相对于Internet延迟,服务器端的延迟不能很大。
4)价格低廉。Amazon S3使用廉价、通用的硬件结构。节点故障是常见的,但它们并不影响整个系统的操作。该系统必须是硬件独立的,因为亚马逊一直在努力减少基础设施开销。
5)简单。构建一个高度可伸缩、可靠、快速和廉价的存储,而Amazon构建了一个系统,使应用程序在任何地方都很容易使用。
(2)Open Stack SWIFT
Open Stack SWIFT是一个具有高可用性、分布式和最终一致性的对象/二进制大型对象存储仓库。它也是一个具有内置冗余和故障转移功能的无限可伸缩存储系统。对象内存提供了大量的应用程序,例如数据、服务图像或视频的备份或存档(来自用户浏览器的流式数据)、二次或三级静态数据的存储、开发新的数据存储应用程序、在预测存储容量困难时存储数据、为基于云的Web应用程序创造灵活性和灵活性。
SWIFT用于在PB级别存储可用数据,支持REST接口,并提供类似于S3的云存储服务。它不是文件系统,也不是实时数据存储系统,而是为永久静态数据设计的长期存储系统,可以检索、使用和更新。SWIFT没有主节点作为主控制器,这反过来提供了更大的扩展性、冗余性和持久性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。