1.2.3 大数据的存储

对海量数据进行存储,一般需要基于分布式架构,并支持通过网络方式访问。常见的外挂存储或网络存储方式有DAS、NAS和SAN等,如图1-5所示。

48306-00-030-1.jpg

图1-5 常见外部存储形式

DAS(Direct Attached Storage,直连式存储):存储设备是通过电缆直接连到服务器。

NAS(Network Attached Storage,网络接入存储):存储设备连接到网络中,通常是标准的TCP/IP网络。客户端通过网络文件存取协议(例如NFS等)存取数据。

SAN(Storage Attached Network,存储区域网络):存储设备组成单独的网络,大多利用光纤连接。SAN和NAS的主要差别在于,NAS中的每台设备均独立维护自己的文件系统,而SAN中所有设备共享一套文件系统(元数据),每个设备只维护自身存储的数据块。

随着云计算概念的兴起,人们提出了“云存储”的概念,其核心思想是将存储作为服务提供出来,用户不再需要购买存储设备与管理软件,而是通过易用化的网络接口租用存储服务;用户不再需要对存储系统进行运维,而是付费让云存储服务商进行数据备份和系统维护。对于用户来说,云存储是易用的、可靠的、免维护的,并且是几乎无限的。对于云服务的提供者来说,云存储是大规模的、统一管理的、成本可控的。

从实现方式上说,基于云的存储服务有多种形式,以亚马逊的AWS云平台为例,云存储有以下常见类型。

(1)对象存储(Object-based Storage):数据放入容器,客户端利用Http或Restful等应用层接口分别访问元数据和数据块。对象存储一般不会提供POSIX兼容的文件系统(例如:可以嵌套的目录结构)。

(2)文件存储:可以看作基于云模式实现的NAS服务,即可租用、免维护的网络文件系统服务。

(3)块存储(卷存储):可以实现在云主机中挂载一个虚拟盘符的功能(例如将一个存储卷映射为Windows主机下的虚拟D盘),以及云主机镜像和快照存储等功能。

(4)键值对(Key-Value)存储:即在云平台上直接实现键值对形式的NoSQL数据库,免安装、免维护、用户可以直接使用。

(5)数据库存储:一般指在云平台上直接实现的关系型数据库。

(6)快照存储和镜像存储:对云平台上的虚拟机镜像和实例快照进行存储。一般基于块存储实现。

(7)消息队列存储:异步消息是分布式系统中的一种重要通信方式。消息的发送者一般会将消息发送到一个可靠的存储容器,并等待接收者收取该消息。此时要求存储容器是可靠的,消息不会丢失。

考虑到对大数据查询或处理时,如果将数据汇总到一处进行,显然是难以实现且效率低下的,因此在对大数据管理和使用时,通常会遵循“计算本地化”策略。所谓“计算本地化”,首先需要将数据存储在多个网络节点之上,各个节点既是存储节点也是处理节点,这和之前介绍的网络存储或云存储模式有所不同。

需要进行查询或处理时,将查询指令或处理数据所需的程序(通常不会很大,如几兆或几十兆字节大小)分发到各个节点,每个节点只处理或分析一部分数据,最好是本节点的数据。通过这种程序随数据移动的并行处理的方式,在较短时间内完成了处理任务。考虑到成本和易于部署等问题,节点可能会采用通用的x86架构服务器实现,如图1-6所示。

有些NoSQL系统会自行实现分布式存储,例如MongoDB系统;有些系统则会基于现成的分布式存储系统构建,例如HBase系统基于HDFS分布式文件系统构建,并将所有文件操作交给HDFS,自身只负责数据库表的操作。

48306-00-032-1.jpg

图1-6 分布式存储和计算本地化