揭秘大数据 | 11、大数据的五大问题 之 大数据存储

当传统的方法已无法应对大数据的规模、分布性、多样性以及时效性所带来的挑战时,我们需要新的技术体系架构及分析方法来从大数据中获得新的价值。

麦肯锡全球研究院曾在一份报告中认为大数据会在以下几个方面创造出巨大的经济价值。

(1)通过让信息更透明及更频繁地被使用来解锁大数据的价值。

(2)通过交易信息的数字化存储来采集更多、更准确、更详细的数据,以用于决策支撑。

(3)通过大数据来细分用户群体,实现精细化产品、服务定位。

(4)通过深度的、复杂的数据分析及预测来提升决策准确率。

(5)通过大数据(反馈机制)改善下一代产品、服务的开发。

规划大数据战略、构建大数据的解决方案与体系架构、解决大数据问题及大数据发展历程中通常会依次涉及大数据存储、大数据管理、大数据分析、数据科学、大数据应用这五大问题,如图1所示。

图1:大数据的五大问题

接下来几天,老夫将对此进行分别介绍。

今儿先聊聊大数据存储这点事儿。

从19世纪到今天,按时间顺序,数据存储介质至少经历了5个阶段,其发展历程如图2所示,并且这些技术直到今天依然存在于我们的生活中。

图2:数据存储介质的5个发展阶段

(1)穿孔卡(Punched Card)

穿孔卡设备(又称打孔机)早在18世纪上半叶就被纺织行业用于控制织布机,不过最早把打孔机用于信息存储与搜索是在一个世纪之后,俄国人SemenKorsakov发明了一系列用于对穿孔卡中存储的信息进行搜索与比较的设备(Homeoscope、Ideoscope及Comparator)​,并且拒绝申请专利,无偿地开放给公众使用。今天依然有很多设备在使用与穿孔卡同样原理的技术,如投票机、公园检票机等。 

图3:穿孔卡片就是织布机能进行设计的本质,当这些穿孔卡片被送入织布机时,它们将下降或升起相应的线,用丝线重新创造图案

(2)磁带(Magnetic Tape)

最早的磁带可以追溯到20世纪初,但在数据呈现爆发式发展的今天,磁带作为一种成本低且可用作长期存储的介质,依然具有一定优势。2014年,索尼公司与IBM公司宣布它们制造了一款容量高达185TB的磁带,这款磁带的存储密度惊人,平均每平方英寸(1in2=6.4516cm2)的存储量达到了18GB。

(3)磁盘

磁盘有两种形式:

硬盘驱动器(Hard Disk Drive,HDD)

软盘驱动器(Floppy Disk Drive,FDD)

两者都是最早由IBM公司推出的(1956年的IBM 350RAMAC HDD、1971年的IBM 23 FD)​。硬盘经几十年的发展,在容量、速度、信息存储密度上均得到了很大提升,目前HDD的吞吐量可以达到300MB/s,而容量已经跨入8TB门槛。

(4)光盘(Optical Disc)

光盘作为一种晚于硬盘出现的存储形式,因为其轻便、易于携带而成为音响制品的主要介质。另外,它也可以作为长期(永久)数据存储的媒介。现在光盘产品主要有3代:第1代的激光视盘(LD)与小型光盘(Compact Disc,CD)、第2代的数字通用光盘(Digital Versatile Disc,DVD)、第3代的蓝光光盘、HD DVD等。光盘的存储能力在过去40年中并没有像硬盘那样快速增长,只是从早期CD的700MB增长到BD的100GB,只有不到150倍的增长量。比起硬盘与下面要介绍的固态盘(Solid State Disc,SSD)类存储,数据读取速率是光盘的短板,第3代的蓝光光盘也只有63MB/s的读取速率,大约是普通SATA(Serial AdvancedTechnology Attachment)类硬盘读取速率的1/3。

(5)半导体存储器(Semiconductor Memory)

半导体存储器包含易失性与非易失性两大类存储器。易失性的随机存储器(Random Access Memory,RAM)有我们熟知的动态随机存储器(DynamicRandom Access Memory,DRAM,常用于计算机内存)与静态随机存储器(Static Randon Access Memory,SRAM,常用于CPU缓存)​;非易失性的只读存储器(Read-Only Memory,ROM)是只读内存,主要用于存储计算设备初始启动的引导系统,而非易失性随机访问存储器(Non-Volatile RandomAccess Memory,NVRAM)则是我们今天俗称的闪存。闪存是由电擦除可编程只读存储器演化而来的,早期主要是NOR闪存,如可拔插存储CompactFlash,后来逐渐被性价比更高的NAND闪存替代。不过值得一提的是,NAND闪存牺牲了NOR闪存的随机访问与页内代码执行等优点,以换取高容量、高密度与低成本优势。大多数SSD是采用NAND架构设计的,SSD的数据读取速率可以小到消费者级的600MB/s,大到普通企业级的几吉字节每秒(DRAM中DDR4内存的读取速率为10~20GB/s)​。 

传统意义上,按照冯·诺依曼体系结构的分类方式,我们通常把CPU可以直接访问的RAM类的半导体存储器称为主存储(Primary Storage)器或一级存储器;把HDD、NVRAM称为辅助存储器或二级存储器。而三级存储器则通常由磁带与低性能、低成本HDD构成。还有一种存储器被称为线下存储器,有光盘、硬盘、磁带等方式。

前面我们以时间为顺序介绍了存储介质的发展历程,在业界我们通常还会按照数据存储的其他特性来对一种存储介质进行定性、定量分析,例如数据的易失性、可变性、性能、可访问性等(见图4)​。

图4:数据存储特性的4个维度

另外,存储形式逐渐由早期的单主机单硬盘存储形式发展为单主机多硬盘存储、多主机多硬盘存储、网络存储、分布式存储、云存储、多级缓存+存储、软件定义存储等形式。在存储的发展过程中,有大量为了提高数据可访问性、可靠性、读写速率,以及节省存储空间或成本的技术涌现,比如独立磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID)技术,网络附接存储(Network Attached Storage,NAS)技术,存储区域网(Storage Area Network,SAN)技术,去重、压缩、备份、镜像、快照等技术,软件定义存储技术。 

1.RAID技术

RAID,顾名思义,是用多块硬盘组建成存储阵列来实现高性能/高可靠性。从这一点来看,早在1987年由加利福尼亚大学伯克利分校的大卫·帕特森(DavidPatterson)教授和他的同事们率先实现的RAID架构与十几年后的互联网公司推动的使用基于X86的商用硬件来颠覆以IBM公司为首的大/小型主机体系架构是如出一辙的——单块硬盘性能与稳定性虽然可能不够好,但是形成一个横向扩展的分布式架构后,可以做到线性提高系统综合性能。

RAID标准一共有7种,分别是RAID0、RAID1、RAID2、RAID3、RAID4、RAID5和RAID6,常见的是RAID0、RAID1、RAID5和RAID6。RAID0采用的是分条方式,它的原理是把连续的数据分散到多块磁盘上存储,以线性提高读写性能。RAID1采用镜像方式来实现数据的冗余备份,同时通过并发读取提高读的性能(这对写的性能则无任何帮助)​。在实践中几乎不会见到RAID2和RAID3,一方面是因为RAID2与RAID3的低并发访问能力与实现复杂(RAID2和RAID3分别采用了比特级与字节级的分条存储方式,而RAID0、RAID4~RAID6都是块级,显然后者的效率会相对更高)​;另一方面是因为它们存在的价值大抵只是为了保证RAID体系架构的学术完整性。RAID4则几乎被RAID5取代,因为后者均衡的随机读写性能弥补了前者的弱随机写性能的缺陷。在企业环境中,通常采用RAID5或RAID6实现数据读取性能的均衡提升,唯一的区别是RAID5采用分布式的奇偶校验位,RAID6则多用一块硬盘来存储第二份奇偶校验位,例如,RAID5最少需要3块硬盘,RAID6则最少需要4块硬盘。

还有其他类型的非标准化RAID方案,如RAID1+0(常被简称为RAID1/0或RAID10,后者容易引起混淆,我们很难想象RAID是何等复杂)​、RAID0+1、RAID7等。RAID0+1采用分条+镜像的硬盘组合方式,而RAID1+0采用镜像+分条的方式,后者在出现磁盘故障后重构的效率高于前者,因此更为常见。RAID1+0适用于需要频繁、随机、小数据量写操作的场景,因此OLTP、数据库、大规模信息传递等具有高输入/输出(Input/Output,I/O)需求的业务常使用RAID1+0存储方案。闪存也被应用得越来越广泛(NAND闪存逐步取代HDD)​。基于NAND闪存构建的RAID存储架构被称作独立NAND冗余阵列(Redundant Array of Independent NAND,RAIN),有趣的是这里的“I”是Independent而非Inexpensive,大抵是因为NAND的造价高于HDD硬盘数倍……

在高阶RAID(如RAID1/0、RAID0/1)中,奇偶校验功能被广泛使用,它的主要目的是在硬盘故障或掉线后以低于镜像成本的方式保护分条数据。在一个通过RAID技术构成的硬盘组中,硬盘越多,则通过奇偶校验功能节省的空间越多。例如,5块硬盘为一组的RAID中有4块硬盘被用来存储数据,1块硬盘用于存储奇偶校验位数据,其开销为25%。如果把RAID扩容到10块硬盘,此时依然可以使用1块硬盘来存储奇偶校验位数据,但开销降低到10%,而用类似RAID1镜像的方法时,开销为100%。

奇偶校验位的计算使用的是布尔型异或(XOR)逻辑运算,如下所示。如果硬盘A或硬盘B因故下线,则剩下的硬盘B或硬盘A中的数据与奇偶校验位的数据做简单的XOR逻辑运算,就可以恢复硬盘A或硬盘B中的数据。示例如下。


在云存储中通过对海量的非常用数据、备份数据使用奇偶校验功能可以大幅度地节省存储成本,近些年越来越常见的编码存储技术擦除码的核心算法正是XOR逻辑运算。以Hadoop的HDFS大数据存储平台为例,它默认对数据保存3份副本,这意味着200%的额外存储开销用来保证数据可靠性,通过擦除码可以让额外存储开销降低到50%(如Windows Azure Storage)​,甚至降低到30%(如EMC Isilon OneFS)​,从而大幅度提升存储空间利用率。随着数据的保障性要求的增长,越来越多的技术型公司,特别是那些需要对数据保存多份副本的公司开始关注并采用擦除码技术,例如谷歌公司、淘宝网的某些数据需要多达6份副本。由此可见,擦除码类技术的经济价值不言而喻。

2.NAS与SAN

网络存储技术NAS和SAN是相对于非网络存储技术而言的。在NAS、SAN出现之后,我们把先前的那种直接连接到主机的存储方式称为DAS。值得一提的是,NAS与SAN都是由Sun Microsystems公司推出的商业产品,它们改变了之前那种以服务器为中心的存储体系结构(例如各种RAID,尽管RAID系统采用的也是块存储)​,形成了以信息为中心的分布式网络存储架构。图5展示了本地存储到网络存储的发展。 

图5:本地存储到网络存储


NAS与SAN的主要区别如下:

(1)NAS提供了存储与文件系统。

(2)SAN提供了底层的块存储(其上可以叠加文件系统)​。

(3)NAS的通信协议主要有NFS协议/CIFS协议/SMB协议/AFP/NCP,它们主要是在NAS发展过程中由不同厂家开发的协议:SunMicrosystems公司开发并开源的NFS协议,微软公司开发的CIFS/SMB协议,苹果公司开发的AFP,以及Novell公司开发的NCP。

(4)SAN在服务器与存储硬件间的通信协议主要是SCSI协议,在网络层面主要使用光纤通道、以太网或无限宽带协议栈来实现通信。

SAN的优势如下: 

(1)网络易部署。服务器只需要配备一块适配卡——光纤通道主机总线适配器(Fibre Channel Host Bus Adapter,FCHBA),就可以通过光纤通道交换机接入网络,经过简单的配置即可使用存储。

(2)高速存储服务。SAN采用了光纤通道技术,因而具有更高的存储带宽,对存储性能的提升效果更加明显。SAN的光纤通道使用全双工传输方式来传输数据,传输速率为8~16Gbit/s。

 (3)良好的扩展能力。由于SAN采用了网络结构,因此它的扩展能力更强。

NAS的优点如下:

(1)真正的即插即用。NAS是独立的存储节点,并存在于网络之中,与用户的操作系统无关。

(2)存储的部署简单。NAS不依赖通用的操作系统,而是采用一个面向用户设计的、专门用于数据存储的简化操作系统,内置了与网络连接所需要的协议,因此使整个系统的管理和设置较为简单。

(3)共享的存储访问。NAS允许多台服务器以共享的方式访问同一存储单元。

(4)管理容易且成本低(相对于SAN而言)​。

3.对象存储

分布式存储架构中除了NAS与SAN两大类外,还有一类叫作基于对象的存储(简称对象存储)​。对象存储比SAN大概晚了10年“出道”​。与基于文件的NAS和基于块的SAN不同,对象存储的基本要素是对存储数据进行了抽象化分隔,将存储数据分为源数据与元数据。应用程序通过对象存储提供的API访问存储数据实际上可被看作对源数据与元数据的访问。一种流行的观点是对象存储集合了NAS与SAN的优点,不过对象存储具有NAS和SAN所不具有的3个优势,具体如下。

(1)应用可对接口直接编程。

(2)命名空间(寻址空间)可跨多硬件实体,每个对象具有唯一编号。

(3)数据管理颗粒细度为对象。

对象存储在高性能计算特别是超级计算机领域的应用极为广泛,全球排名前100的超级计算机系统中有超过70%的系统使用了开源的Lustre(Linux + Cluster)对象存储文件系统,其中包括中国天河2号与Titan超级计算机。在商业领域,对象存储用于归档及云存储,如早在2002年推出的EMC Centera及HDS的HCP。云存储领域的知名产品有亚马逊公司于2006年推出的AWS S3(AWS S3已经成为云存储的事实标准,有大量开源解决方案甚至是竞争对手提供的存储服务都兼容AWS S3 API,如Rackspace的Cloud Files、Cloudstack、OpenStack Swift、Eucalyptus等)​,以及微软公司的Windows Azure Storage与谷歌公司的Google Cloud Storage,还有如Facebook公司为存储数以10亿计的海量照片等非结构化数据而定制开发的对象存储系统Haystack。

AWS S3的架构设计及所提供的API超级简洁,可以存储小于5TB的对象文件,每个文件对应2KB的元文件,多个对象文件可以被组织到一个桶(Bucket)之中,每个对象在桶中被赋予唯一的Key,可以通过REST风格的HTTP或SOAP接口来访问桶及其中的对象,对象可以直接通过HTTP中的Get方法或比特流(BitTorrent)协议进行下载。关于对象访问的详细资料,读者可直接参考亚马逊官方网站。

云计算、大数据与软件定义数据中心的出现对存储管理有了更高的要求,传统存储也面临着诸多的挑战。

对于服务器内置存储来说,单一磁盘或磁盘阵列的容量与性能都是有限的,不仅很难进行扩展,还缺乏各种数据服务,例如数据保护、高可用性、数据去重等。最大的麻烦在于这样的存储使用方式导致了一个个信息孤岛,这对于数据中心的统一管理来说无疑是一个噩梦。

对于SAN和NAS来说,目前的解决方案存在一个供应商绑定的问题。与服务器的商业化趋势不同,存储产品的操作系统(或管理系统)仍然是封闭的。不用说不同的提供商之间的系统互不兼容,就是一家提供商不同的产品系列之间也不具有互操作性。供应商绑定的问题导致了技术壁垒和价格高企的现状。此外,管理孤岛的问题依旧存在,相对于DAS来说,只是“岛”大一点、数量少一点。用户在管理存储产品时仍然需要一个个地单独登录到管理系统中进行配置。总之,SAN与NAS的扩展性仍然是个问题。

不仅如此,一些其他需求也开始出现,例如,对多租户模式的支持、云规模的服务支持、动态定制的数据服务,以及直接服务虚拟网络的应用。这些需求并不是通过对现有存储架构进行简单的修修补补就可以满足的。

4.软件定义存储技术

在这样的背景下,一种新的存储管理模式开始出现,那就是软件定义存储。

软件定义存储不同于存储虚拟化,软件定义存储的设计理念与软件定义网络(Software Defined Network,SDN)有着诸多相似之处。软件定义存储旨在开辟一个如下的新世界。

(1)把数据中心中所有物理的存储设备转化为一个统一的、虚拟的、共享的存储资源池,其中存储设备包括专业的SAN/NAS存储产品,也包括内置存储设备和DAS。这些存储设备可以是同构的,也可以是异构的,还可以是来自不同厂商的。

(2)把存储设备的控制与管理从物理设备中抽象与分离出来,并将它们纳入统一的集中化管理之中。换言之,就是将控制平面和数据平面解耦合。

(3)基于共享的存储资源池,提供一个统一的管理与服务/编程访问接口,使得软件定义存储与软件定义数据中心或者云计算平台下其他的服务之间具有良好的互操作性。

(4)把数据服务从存储设备中独立出来,使得跨存储设备的数据服务成为可能。专业的数据服务甚至可以运行在复杂的、来自不同提供商的存储环境中。

(5)让存储成为一种动态的可编程资源,就像我们在服务器(或者说计算平台)上看到的一样,即基于服务器虚拟化的软件定义计算。

(6)让未来的存储设备采购与选择变得像现在服务器的购买一样简单直接。

(7)存储的提供商必须要适应并精通于为不同的存储设备提供关键的功能与服务,即使他们并不真正拥有底层的硬件。

时至今日,服务器虚拟化、计算虚拟化、软件定义计算已经彻底改变了我们对计算能力的理解。现在存储领域也在经历着从存储虚拟化到软件定义存储的变革。前面我们提到过对象存储中出现的源数据与元数据的分离——数据平面与控制平面,这实际上已经是一种存储虚拟化(抽象化)的概念。另外,存储资源池化(形成虚拟资源池)也是软件定义存储的重要概念。

软件定义存储的解决方案有很多种,有针对NAS/SAN网络存储设备的,有针对服务器内置磁盘与DAS的,有通用的,还有专为虚拟化平台优化而生的。这些不同的解决方案之间虽然存在诸多的差异,但我们大致上仍然可以把软件定义存储的技术栈自下而上分为3层:数据保持层、数据服务层与数据消费层,如图6所示。

图6: 软件定义存储的技术栈

数据服务层位于中间层。这一层组件主要的职责就是负责数据的移动并向上层提供服务接口:复制、分层、快照、备份、缓存。其他的职责还包括去重、压缩、加密、病毒扫描等。一些新兴的存储类型也被归入数据服务层,如对象存储和HDFS。这里需要指出复制与数据保持层的副本功能的差异:副本只是最简单的一种数据冗余机制,防止硬件问题所引起的数据丢失,对用户来说是完全透明的;而复制作为一种附加的数据保护服务,多用于高可用性、远程数据恢复等场景,其中一个非常有特色的产品就是Dell-EMC的RecoverPoint。有兴趣的读者可以去详细了解一下,我们在此就不展开介绍了。 

在理想的情况下,数据服务是独立于其下的数据保持层与其上的数据消费层的,各层具体技术的实现并不存在强依赖关系。同样,由于经过了虚拟化和抽象,数据服务得以从存储硬件设备中分离出来,可以按需进行动态创建,从而具有很大的灵活性。创建出来的数据服务可以根据软件定义存储控制器的统一调度运行在任何一个合适的服务器或者存储设备上。

数据消费层位于最顶层,是最贴近用户的一层。这里首先展现给用户的是一系列数据访问接口,包括块存储、文件存储、对象存储、HDFS,以及其他随着云计算与大数据的发展而出现的新型访问接口。数据消费层的另一个重要的组成部分是展现给租户的门户,也就是每个用户的管理平台(GUI/CLI)​,每个租户可以进行相关操作,如部署、监控、事件及警报管理、资源的使用、报表生成、流程管理、定制服务等。灵活的编程接口也是这一层的核心组件,用于更好地支持存储与用户应用的整合。与普通的编程接口相比,软件定义存储的接口有着更高的标准和更多的功能。

软件定义存储作为软件定义数据中心的一个核心组成部分,与系统中的其他组件(如软件定义计算、软件定义网络)存在大量的交互,因此对互操作性有着很高的要求。关于组件之间的互操作与协同工作,后面老夫再详细介绍。从数据消费层的视角来看,其下的数据服务层与数据保持层提供的是一个统一的虚拟化资源池,它基于该虚拟资源池根据用户需求进行分配、创建与管理。

综上所述,海量数据的存储发展历程如图7所示,从本地存储到网络存储(尤其是以NAS和SAN为代表的分布式存储)​,再到以对象存储为实施标准的云存储阶段,未来的发展方向是软件定义存储,通过软件定义存储实现低成本、高效率、高灵活性及高可扩展性。

图7:海量数据的存储发展历程

(文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)

· END ·

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值