1、数据中国“百校工程”项目系列教材数据科学与大数据技术专业系列规划教材第4章 大数据存储与管理 本章主要内容如下。本章主要内容如下。(1 1)数据的存储模式。)数据的存储模式。(2 2)大数据时代的存储管理系统。)大数据时代的存储管理系统。4.1 数据存储概述4.1.1 4.1.1 数据的存储介质数据的存储介质 存储介质是数据存储的载体,是数据存储的基础。存储介质存储介质是数据存储的载体,是数据存储的基础。存储介质并不是越贵越好、越先进越好,我们要根据不同的应用环境,合并不是越贵越好、越先进越好,我们要根据不同的应用环境,合理选择存储介质。早期的存储介质有纸带、卡片、磁带等,目前理选择存储介质。
2、早期的存储介质有纸带、卡片、磁带等,目前常见的数据存储介质有机械硬盘、固态硬盘、可记录光盘、常见的数据存储介质有机械硬盘、固态硬盘、可记录光盘、U U盘、盘、闪存卡等。闪存卡等。1 1机械硬盘机械硬盘 组成:机械硬盘即传统普通硬盘,主要由盘片、磁头、磁头组成:机械硬盘即传统普通硬盘,主要由盘片、磁头、磁头停泊区、磁头臂等组成,如图停泊区、磁头臂等组成,如图4-14-1所示。所示。图4-1 机械硬盘 读读/写原理:机械硬盘的磁头可沿盘片的半径方向运动,加上盘写原理:机械硬盘的磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置进片每分钟几千转的高速旋转,磁头
3、就可以定位在盘片的指定位置进行数据的读行数据的读/写操作。机械硬盘中所有的盘片都装在一个旋转轴上。写操作。机械硬盘中所有的盘片都装在一个旋转轴上。每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头连在一个磁头与盘片之间的距离比头发丝的直径还小,所有的磁头连在一个磁头控制器上,磁头控制器负责各个磁头的运动。另外,机械硬盘在读控制器上,磁头控制器负责各个磁头的运动。另外,机械硬盘在读取的时候,各个部件在做机械运动,所以会产生一定的热量和噪声。取的时候,各个部件在做机械运动,所以会产生一定
4、的热量和噪声。稳定性:机械硬盘都是磁碟型的,数据存储在磁碟扇区里,所稳定性:机械硬盘都是磁碟型的,数据存储在磁碟扇区里,所以机械硬盘不能摔,通电不能移动,否则易损坏。以机械硬盘不能摔,通电不能移动,否则易损坏。优缺点:优点在于便宜,性价比高,可以用较少的花费获得较优缺点:优点在于便宜,性价比高,可以用较少的花费获得较大容量,使用寿命长;缺点是相对固态硬盘来说,读大容量,使用寿命长;缺点是相对固态硬盘来说,读/写速度较慢;写速度较慢;防震性也没有固态硬盘好。防震性也没有固态硬盘好。2 2固态硬盘固态硬盘 组成:固态硬盘(组成:固态硬盘(Solid State DriveSolid State D
5、rive,SSDSSD)是用固态电子)是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(存储芯片阵列制成的硬盘,由控制单元和存储单元(FlashFlash芯片、芯片、DRAMDRAM芯片)组成,如图芯片)组成,如图4-24-2所示。所示。图4-2 固态硬盘 读读/写原理:与普通磁盘的数据读写原理:与普通磁盘的数据读/写原理不同,固态硬盘的写原理不同,固态硬盘的读取直接由控制单元读取存储单元,不存在机械运动,因此读取读取直接由控制单元读取存储单元,不存在机械运动,因此读取速度非常快。相对机械硬盘,固态硬盘的读取速度提高了两倍多。速度非常快。相对机械硬盘,固态硬盘的读取速度提高了两倍多。由
6、于固态硬盘属于无机械部件及闪存芯片,所以具有发热量小、由于固态硬盘属于无机械部件及闪存芯片,所以具有发热量小、散热快等特点,而且没有机械马达和风扇,工作噪声值为散热快等特点,而且没有机械马达和风扇,工作噪声值为0 0分贝。分贝。稳定性:固态硬盘使用闪存颗粒(即内存、稳定性:固态硬盘使用闪存颗粒(即内存、MP3MP3、U U盘等存储盘等存储介质)制作而成,所以内部不存在任何机械部件,这样即使在高介质)制作而成,所以内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下,也不会影响正常使用。而且速移动甚至伴随翻转倾斜的情况下,也不会影响正常使用。而且在发生碰撞和震荡时,能够将数据丢失的
7、可能性降到最小。相较在发生碰撞和震荡时,能够将数据丢失的可能性降到最小。相较机械硬盘,固态硬盘更可靠。机械硬盘,固态硬盘更可靠。优缺点:固态硬盘的优点是读取和写入速度快,缺点是价格优缺点:固态硬盘的优点是读取和写入速度快,缺点是价格较高,有写入次数的限制,读较高,有写入次数的限制,读/写有一定的寿命限制。写有一定的寿命限制。3 3可记录光盘可记录光盘 常使用的可记录光盘分为常使用的可记录光盘分为CD-RCD-R、CD-RWCD-RW、DVDDVDR/RWR/RW多种格式,多种格式,如图如图4-34-3所示。所示。图4-3 可记录光盘(1 1)CD-RCD-R是一次刻录、可多次读取的光盘,标准容
8、量为是一次刻录、可多次读取的光盘,标准容量为650MB650MB,现在常用的刻录容量为现在常用的刻录容量为720MB720MB。(2 2)CD-RWCD-RW是可以多次刻录、反复擦写的光盘,容量为是可以多次刻录、反复擦写的光盘,容量为650MB650MB。(3 3)目前主流的)目前主流的DVDDVD刻录盘有两种刻录盘有两种DVD-R/RWDVD-R/RW和和DVD+R/RWDVD+R/RW。4 4U U盘盘 U U盘是一种盘是一种FlashFlash存储设备,是用存储设备,是用FlashFlash芯片(芯片(Flash RAMFlash RAM,电,电可擦写存储器)作为存储介质制作的移动存储器
9、,如图可擦写存储器)作为存储介质制作的移动存储器,如图4-44-4所示。所示。U U盘采用通用串行总线(盘采用通用串行总线(Universal Serial BusUniversal Serial Bus,USBUSB)接口,可)接口,可反复擦写的性能大大加强了数据的安全性。反复擦写的性能大大加强了数据的安全性。U U盘使用极为方便,无盘使用极为方便,无须外接电源,支持即插即用和热插拔,只要用户计算机的主板上须外接电源,支持即插即用和热插拔,只要用户计算机的主板上有有USBUSB接口,就可以使用。由接口,就可以使用。由U U盘发展起来的盘发展起来的MP3MP3、MP4MP4播放机也可播放机也可
10、当数据存储设备使用。当数据存储设备使用。图4-4 U盘5 5闪存卡闪存卡 闪存卡一般用于数码类的产品中,如用于手机、数码照相机、闪存卡一般用于数码类的产品中,如用于手机、数码照相机、数码摄像机、数码录音笔等。常用类型有数码摄像机、数码录音笔等。常用类型有SDSD卡、卡、MiniSDMiniSD卡、卡、MicroSDMicroSD(TFTF)卡、)卡、CFCF卡、记忆棒等,如图卡、记忆棒等,如图4-54-5所示。所示。图4-5 闪存卡6 6数据存储介质的选择原则数据存储介质的选择原则 数据存储介质的选择主要考虑如下原则。数据存储介质的选择主要考虑如下原则。(1 1)耐久性)耐久性 耐久性能高的存
11、储介质不容易损坏,降低了数据损失的风险。耐久性能高的存储介质不容易损坏,降低了数据损失的风险。因而存储数据应选用对环境要求低、不容易损伤、耐久性能高的因而存储数据应选用对环境要求低、不容易损伤、耐久性能高的介质。介质。(2 2)容量恰当)容量恰当 介质的高容量不仅有利于存储空间的减少,还便于管理,但介质的高容量不仅有利于存储空间的减少,还便于管理,但会使存储的成本增加。对大容量数据,如果存储介质容量低,将会使存储的成本增加。对大容量数据,如果存储介质容量低,将不利于存储数据的完整。介质的存储容量最好与所管理的数据量不利于存储数据的完整。介质的存储容量最好与所管理的数据量大小相匹配。大小相匹配。
12、(3 3)低费用)低费用 介质的价格低,可以减少存储管理与系统运行的费用。介质的价格低,可以减少存储管理与系统运行的费用。(4 4)广泛的可接受性)广泛的可接受性 为减少为减少ITIT业界对存储介质不支持的风险,我们应当选用具有业界对存储介质不支持的风险,我们应当选用具有广泛可使用性的存储介质,特别应注意选用能满足工业标准的存广泛可使用性的存储介质,特别应注意选用能满足工业标准的存储介质。储介质。4.1.2 4.1.2 数据的存储模式数据的存储模式 目前,数据有目前,数据有3 3种常见的存储模式(见图种常见的存储模式(见图4-64-6),它们被广泛应),它们被广泛应用于企业存储设备中:附加直接
13、模式(用于企业存储设备中:附加直接模式(Direct-Attached StorageDirect-Attached Storage,DASDAS);附加网络模式();附加网络模式(Network-Attached StorageNetwork-Attached Storage,NASNAS);存储);存储区域网络模式(区域网络模式(Storage Area NetworkStorage Area Network,SANSAN)。)。图4-6 数据的存储模式1 1DAS DAS DAS DAS 将存储设备通过将存储设备通过 SCSI SCSI 接口直接连接到一台服务器上使接口直接连接到一台服务
14、器上使用,如图用,如图 4-7 4-7所示。所示。DAS DAS是通过小型计算机系统接口(是通过小型计算机系统接口(Small Computer System Small Computer System InterfaceInterface,SCSISCSI),在计算机与外部设备之间进行连接。),在计算机与外部设备之间进行连接。图4-7 DAS(1)DASDAS依赖主机的操作系统来实现数据的读依赖主机的操作系统来实现数据的读/写、管理、备份等写、管理、备份等工作,如图工作,如图4-84-8所示。所示。图4-8 DAS(2)(1 1)DASDAS的优点的优点 配置简单:配置简单:DASDAS购置
15、成本低,配置简单,仅仅是一个外接的购置成本低,配置简单,仅仅是一个外接的SCSISCSI接口。接口。使用简单:使用方法与使用本机硬盘并无太大差别。使用简单:使用方法与使用本机硬盘并无太大差别。使用广泛:在中小型企业中,应用十分广泛。使用广泛:在中小型企业中,应用十分广泛。(2 2)DASDAS的缺点的缺点 扩展性差:在新的应用需求出现时,需要为新增的服务器单扩展性差:在新的应用需求出现时,需要为新增的服务器单独配置新的存储设备。独配置新的存储设备。资源利用率低:不同的应用服务器存储的数据量随着业务发资源利用率低:不同的应用服务器存储的数据量随着业务发展出现不同,有部分应用存储空间不够,而另一些
16、却有大量的存展出现不同,有部分应用存储空间不够,而另一些却有大量的存储空间。储空间。可管理性差:数据分散在应用服务器各自的存储设备上,不可管理性差:数据分散在应用服务器各自的存储设备上,不便于集中管理、分析和使用。便于集中管理、分析和使用。异构化严重:企业在发展过程中采购不同厂商、不同型号的异构化严重:企业在发展过程中采购不同厂商、不同型号的存储设备,设备之间的异构化严重,使维护成本很高。存储设备,设备之间的异构化严重,使维护成本很高。I/O I/O瓶颈:瓶颈:SCSISCSI接口处理能力会成为数据读接口处理能力会成为数据读/写的瓶颈。写的瓶颈。2 2NAS NAS NAS NAS存储设备是一
17、种带有操作系统的存储设备,也叫作网络文件存储设备是一种带有操作系统的存储设备,也叫作网络文件服务器。服务器。NASNAS设备直接连接到设备直接连接到TCP/IPTCP/IP网络上,网络服务器通过网络上,网络服务器通过TCP/IPTCP/IP网络存取与管理数据。网络存取与管理数据。应用:文档、图片、电影的共享等。应用:文档、图片、电影的共享等。典型的典型的NASNAS架构如图架构如图4-94-9所示。所示。图4-9 典型的NAS架构(1 1)NASNAS的优点的优点 即插即用:容易部署,把即插即用:容易部署,把NASNAS设备接入以太网就可以使用。设备接入以太网就可以使用。支持多平台:可以使用支
18、持多平台:可以使用LinuxLinux等主流操作系统。等主流操作系统。(2 2)NASNAS的缺点的缺点 NAS NAS设备与客户机通过以太网连接,设备与客户机通过以太网连接,NASNAS使用网络进行数据的使用网络进行数据的备份和恢复,因此数据存储或备份时都会占用网络带宽。备份和恢复,因此数据存储或备份时都会占用网络带宽。存储数据通过普通数据网络传输,因此容易产生数据泄漏的存储数据通过普通数据网络传输,因此容易产生数据泄漏的安全问题。安全问题。只能以文件级访问,不适合块级的应用。只能以文件级访问,不适合块级的应用。3 3SAN SAN SAN SAN是一个采用网状通道(是一个采用网状通道(Fi
19、bre ChannelFibre Channel,FCFC)技术,通过)技术,通过FCFC交换机连接存储阵列和应用服务器,建立专用于数据存储的区交换机连接存储阵列和应用服务器,建立专用于数据存储的区域网络,如图域网络,如图4-104-10所示。所示。SAN SAN支持数以百计的磁盘,提供了海量的存储空间,解决了大支持数以百计的磁盘,提供了海量的存储空间,解决了大容量存储问题;这个海量空间可以从逻辑层面上按需要分成不同容量存储问题;这个海量空间可以从逻辑层面上按需要分成不同大小的逻辑单元,再分配给应用服务器。大小的逻辑单元,再分配给应用服务器。SANSAN允许企业独立地增加允许企业独立地增加它们
20、的存储容量。它们的存储容量。SANSAN的结构允许任何服务器连接到任何存储阵列,的结构允许任何服务器连接到任何存储阵列,这样不管数据放在哪里,服务器都可以直接存取所需的数据。这样不管数据放在哪里,服务器都可以直接存取所需的数据。图4-10 SAN(1 1)SANSAN的优点的优点 传输速度快:传输速度快:SANSAN采用高速的传输媒介,并且采用高速的传输媒介,并且SANSAN网络独立于网络独立于应用服务器系统之外,因此存取速度很快。应用服务器系统之外,因此存取速度很快。扩展性强:扩展性强:SANSAN的基础是一个专用网络,增加一定的存储空间的基础是一个专用网络,增加一定的存储空间或增加几台应用
21、服务器,都非常方便。或增加几台应用服务器,都非常方便。磁盘使用率高:整合了存储设备和采用了虚拟化技术,因而磁盘使用率高:整合了存储设备和采用了虚拟化技术,因而整体空间的使用率大幅提升。整体空间的使用率大幅提升。(2 2)SANSAN的缺点的缺点 价格贵:不论是价格贵:不论是SANSAN阵列柜还是阵列柜还是SANSAN必需的光纤通道交换机,必需的光纤通道交换机,其价格都是十分昂贵的,就连服务器上使用的光通道卡的价格也其价格都是十分昂贵的,就连服务器上使用的光通道卡的价格也是不易被小型企业所接受的。是不易被小型企业所接受的。异地部署困难:需要单独建立光纤网络,异地扩展比较困难。异地部署困难:需要单
22、独建立光纤网络,异地扩展比较困难。4 4不同应用场景对应的存储选择不同应用场景对应的存储选择 CPU CPU 密集的应用环境:某种应用极其消耗密集的应用环境:某种应用极其消耗CPUCPU资源,其程序内资源,其程序内部逻辑复杂而且对磁盘访问量不高。这种程序在运行时根本不用或部逻辑复杂而且对磁盘访问量不高。这种程序在运行时根本不用或只需少量读取磁盘上的数据,只是在程序载入的时候读入一点点程只需少量读取磁盘上的数据,只是在程序载入的时候读入一点点程序数据而已。进程运行后便会使序数据而已。进程运行后便会使CPUCPU的核心处于全速状态,这会造的核心处于全速状态,这会造成其他进程在同一时间只能获得少量的
23、执行时间,进而严重影响性成其他进程在同一时间只能获得少量的执行时间,进而严重影响性能。能。I/OI/O密集的应用环境:某种程序的内部逻辑并不复杂、耗费的密集的应用环境:某种程序的内部逻辑并不复杂、耗费的CPUCPU资源不多,但要随时读取磁盘上的数据,如资源不多,但要随时读取磁盘上的数据,如FTPFTP服务器。服务器。对高并发随机小块对高并发随机小块I/OI/O或共享访问文件的应用环境:我们往往或共享访问文件的应用环境:我们往往会采用会采用NASNAS。因为对小块的。因为对小块的I/OI/O读读/写并不会对网络造成大的影响,写并不会对网络造成大的影响,并且并且NASNAS提供了网络文件共享协议。
24、提供了网络文件共享协议。4.2 大数据时代的存储管理系统 在普通在普通PCPC中,目前已经被广泛使用的存储管理系统有普通的中,目前已经被广泛使用的存储管理系统有普通的文件系统、键文件系统、键-值数据库和关系型数据库。值数据库和关系型数据库。在大数据时代,普通在大数据时代,普通PCPC的存储容量已经无法满足大数据需求,的存储容量已经无法满足大数据需求,需要进行存储技术的变革,我们采用分布式平台来存储大数据。需要进行存储技术的变革,我们采用分布式平台来存储大数据。4.2.1 4.2.1 文件系统文件系统1 1文件系统简介文件系统简介 在计算机中,文件系统(在计算机中,文件系统(File Syste
25、mFile System)是提供了命名文件及放置文)是提供了命名文件及放置文件的逻辑存储和恢复等功能的系统。件的逻辑存储和恢复等功能的系统。DOSDOS、WindowsWindows、OS/2OS/2、MacintoshMacintosh和和UNIX-basedUNIX-based操作系统都有文件系统。在此系统中,文件被放置在分等级操作系统都有文件系统。在此系统中,文件被放置在分等级的(树状)结构中的某一处。文件被放进目录(的(树状)结构中的某一处。文件被放进目录(WindowsWindows中的文件夹)或中的文件夹)或子目录。子目录。文件系统是软件系统的一部分,它的存在使应用可以方便地使用抽
26、文件系统是软件系统的一部分,它的存在使应用可以方便地使用抽象命名的数据对象和大小可变的空间。象命名的数据对象和大小可变的空间。2 2操作系统和文件系统的关系操作系统和文件系统的关系 文件系统是操作系统用于存储设备(磁盘)或分区上的文件文件系统是操作系统用于存储设备(磁盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构被称为文件操作系统中负责管理和存储文件信息的软件机构被称为文件管理系统,简称文件系统。文件系统是对文件存储设备的空间进管理系统,简称文件系统。文件系统是对文件存储设备的空间进行
27、组织和分配,负责文件存储并对存入的文件进行保护和检索的行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,允许用户进行存入、系统。具体地说,它负责为用户建立文件,允许用户进行存入、读出、修改等操作。读出、修改等操作。4.2.2 4.2.2 分布式文件系统分布式文件系统1 1分布式文件系统简介分布式文件系统简介 普通文件系统的存储容量有限,但是大数据一般都是海量数普通文件系统的存储容量有限,但是大数据一般都是海量数据,无法在以前的普通文件系统进行存储。据,无法在以前的普通文件系统进行存储。分布式文件系统把文件分布存储到多个计算机节点上,成千分布式文件系统
28、把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。和以前使用多个处理器和专上万的计算机节点构成计算机集群。和以前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文件系统用高级硬件的并行化处理装置不同的是,目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的,这就大大降低了所采用的计算机集群,都是由普通硬件构成的,这就大大降低了硬件上的成本开销。硬件上的成本开销。计算机集群的基本架构如图计算机集群的基本架构如图4-114-11所示。所示。图4-11 计算机集群的基本架构2 2分布式文件系统的整体结构分布式文件系统的整体结构 如图如图 4-12 4-1
29、2 所示,分布式文件系统在物理结构上是由计算机集群所示,分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。这些节点分为两类,一类叫中的多个节点构成的。这些节点分为两类,一类叫“主节点(主节点(Master Master NodeNode)”或者也被称为或者也被称为“名称节点(名称节点(NameNodeNameNode)”,另一类叫,另一类叫“从节从节点(点(Slave NodeSlave Node)”或者也被称为或者也被称为“数据节点(数据节点(DataNodeDataNode)”。图4-12 分布式文件系统的整体结构3 3ApacheApache下的分布式文件系统下的分布式文件系统
30、 Hadoop Hadoop是是ApacheApache软件基金会旗下的一个分布式系统基础架构。软件基金会旗下的一个分布式系统基础架构。HadoopHadoop框架最核心的设计就是框架最核心的设计就是HDFSHDFS、MapReduceMapReduce,为海量的数据提,为海量的数据提供存储和计算。供存储和计算。MapReduce MapReduce主要运用于分布式计算,主要运用于分布式计算,HDFSHDFS主要是主要是HadoopHadoop的存储,的存储,用于海量数据的存储。用于海量数据的存储。HDFSHDFS 是一个分布式文件系统,具有高容错是一个分布式文件系统,具有高容错的特点。它可以
31、部署在廉价的通用硬件上,提供高吞吐率的数据访的特点。它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问,适合那些需要处理海量数据集的应用程序。问,适合那些需要处理海量数据集的应用程序。HDFS HDFS使用的是传统的分级文件体系,因此,用户可以像使用普使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命名文件等。命名文件等。在在HDFSHDFS中,一个文件被分成多个块,以中,一个文件被分成多个块,以块作为存储单位,块的作用如下。块作为存储单位,块的作用如下。(1 1)支持大规模
32、文件存储)支持大规模文件存储(2 2)简化系统设计)简化系统设计(3 3)适合数据备份)适合数据备份 HDFSHDFS采用了主从(采用了主从(Master/SlaveMaster/Slave)结构模型,如图)结构模型,如图4-134-13所示。所示。一个一个HDFSHDFS集群包括一个名称节点(集群包括一个名称节点(NameNodeNameNode)和若干个数据节点)和若干个数据节点(DataNodeDataNode)。)。名称节点作为中心服务器,负责管理文件系统的命名空间及客名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。户端对文件的访问。集群中的数据节点负责处理客户
33、端的读集群中的数据节点负责处理客户端的读/写请求,在名称节点的写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地每个数据节点的数据实际上是保存在本地LinuxLinux文件系统中的。文件系统中的。图4-13 HDFS的体系结构 HDFSHDFS主要组件的功能(见图主要组件的功能(见图4-144-14)。)。图4-14 HDFS主要组件的功能(1 1)NameNodeNameNode 名称节点(名称节点(NameNodeNameNode)存储元数据,元数据被保存在内存中)存储元数据,元数据被保存在内
34、存中(磁盘上也保存了一份),保存文件(磁盘上也保存了一份),保存文件BlockBlock、DataNodeDataNode之间的映射之间的映射关系;关系;NameNodeNameNode记录了每个文件中各个块所在的记录了每个文件中各个块所在的DataNodeDataNode的位置的位置信息。信息。元数据的内容包括文件的复制等级、修改和访问时间、访问元数据的内容包括文件的复制等级、修改和访问时间、访问权限、块大小及组成文件的块。对目录来说,权限、块大小及组成文件的块。对目录来说,NameNodeNameNode存储修改存储修改时间、权限和配额元数据。时间、权限和配额元数据。(2 2)DataNo
35、deDataNode 数据节点(数据节点(DataNodeDataNode)负责数据的存储和读取,数据被保存在磁)负责数据的存储和读取,数据被保存在磁盘中,维护盘中,维护BlockIdBlockId到到DataNodeDataNode本地文件的映射关系。本地文件的映射关系。DataNodeDataNode定期向定期向NameNodeNameNode发送发送BlockBlock信息以保持联系,如果信息以保持联系,如果NameNodeNameNode在一定的时间内没在一定的时间内没有收到有收到DataNodeDataNode的的BlockBlock信息,则认为信息,则认为DataNodeDataN
36、ode已经失效了,已经失效了,NameNodeNameNode会复制其上的会复制其上的BlockBlock到其他到其他DataNodeDataNode。4.2.3 4.2.3 数据库数据库 数据库(数据库(DataBaseDataBase)就是一个存放数据的仓库。这个仓库是)就是一个存放数据的仓库。这个仓库是按照一定的数据结构(数据结构是数据的组织形式或数据之间的按照一定的数据结构(数据结构是数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方式来联系)来组织、存储的,我们可以通过数据库提供的多种方式来管理数据库里的数据。管理数据库里的数据。数据库家族如图数据库家族如
37、图4-154-15所示。所示。图4-15 数据库家族1 1关系型数据库关系型数据库 关系型数据库把复杂的数据结构归结为简单的二元关系(即关系型数据库把复杂的数据结构归结为简单的二元关系(即二维表格形式)。二维表格形式)。在关系型数据库中,程序对数据的操作几乎全部建立在一个在关系型数据库中,程序对数据的操作几乎全部建立在一个或多个关系表格上,即程序通过对这些关联表的表格分类、合并、或多个关系表格上,即程序通过对这些关联表的表格分类、合并、连接或选取等运算来实现对数据的管理。连接或选取等运算来实现对数据的管理。2 2非关系型数据库非关系型数据库 非关系型数据库也被称为非关系型数据库也被称为NoSQ
38、LNoSQL数据库,如图数据库,如图4-164-16所示。所示。NoSQL NoSQL的本意是的本意是“Not Only SQL”“Not Only SQL”,指的是非关系型数据库,指的是非关系型数据库,而不是而不是“No SQL”“No SQL”的意思,因此,的意思,因此,NoSQLNoSQL的产生并不是要彻底否定的产生并不是要彻底否定关系型数据库,而是成为传统关系型数据库的一个有效补充。关系型数据库,而是成为传统关系型数据库的一个有效补充。NoSQL NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和数据库在特定的场景下可以发挥出难以想象的高效率和高性能。高性能。图4-16 非关系
39、型数据库 NoSQLNoSQL是非关系型数据库的广义定义。它打破了长久以来关系是非关系型数据库的广义定义。它打破了长久以来关系型数据库与型数据库与ACIDACID理论理论“大一统大一统”的局面。的局面。NoSQLNoSQL数据存储不需要固数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(型数据库无法比拟的性能优势。该术语(NoSQLNoSQL)在)在20092009年初得到年初得到了广泛认同。了广泛认同。当今的应用体系结构需要数据存储在横向伸缩性上能够满足当今的应用体系结构需要数据
40、存储在横向伸缩性上能够满足需求,而需求,而NoSQLNoSQL存储就是满足这个需求而诞生的。存储就是满足这个需求而诞生的。NoSQL NoSQL典型产品包括典型产品包括MemcachedMemcached、RedisRedis、MongoDBMongoDB、HBaseHBase等。等。4.2.4 4.2.4 键键-值数据库值数据库 键键-值(值(Key-ValueKey-Value)数据库是一种)数据库是一种NoSQLNoSQL数据库,用户可以通数据库,用户可以通过过KeyKey来添加、查询或者删除数据。因为使用来添加、查询或者删除数据。因为使用KeyKey主键访问,所以会主键访问,所以会获得
41、很高的性能及扩展性。键获得很高的性能及扩展性。键-值存储非常适合不涉及过多数据关值存储非常适合不涉及过多数据关系和业务关系的数据,同时能有效减少读系和业务关系的数据,同时能有效减少读/写磁盘的次数,比写磁盘的次数,比SQLSQL数数据库存储拥有更好的读据库存储拥有更好的读/写性能。写性能。键键-值数据库主要使用一个哈希表,这个表有一个特定的键和值数据库主要使用一个哈希表,这个表有一个特定的键和一个指针指向特定的数据。一个指针指向特定的数据。Key-ValueKey-Value模型对模型对ITIT系统的优势在于简系统的优势在于简单、易部署、高并发。单、易部署、高并发。1 1键键-值对的存储值对的
42、存储 键键-值对存储是数据库最简单的组织形式。键值对存储是数据库最简单的组织形式。键-值对存储通常值对存储通常都有如下接口。都有如下接口。(1 1)Get(Key)Get(Key):获取之前存储于某标示符:获取之前存储于某标示符“Key”“Key”之下的一些数之下的一些数据,如果据,如果“Key”“Key”下没有数据则报错。下没有数据则报错。(2 2)Set(Key,Value)Set(Key,Value):将:将“Value”“Value”存储到存储空间中某标示符存储到存储空间中某标示符“Key”“Key”下,使我们可以通过调用相同的下,使我们可以通过调用相同的“Key”“Key”来访问它。
43、如果来访问它。如果“Key”“Key”下已经有了一些数据,旧的数据将被替换。下已经有了一些数据,旧的数据将被替换。(3 3)Delete(key)Delete(key):删除存储在:删除存储在“Key”“Key”下的数据。下的数据。2 2键键-值数据库的优缺点值数据库的优缺点 优点:在键已知的情况下查找内容,键优点:在键已知的情况下查找内容,键-值数据库的访问速度值数据库的访问速度比关系型数据库快好几个数量级。比关系型数据库快好几个数量级。缺点:在键未知的情况下查找内容,键缺点:在键未知的情况下查找内容,键-值数据库的访问速度值数据库的访问速度是非常糟糕的。因为键是非常糟糕的。因为键-值数据库
44、不知道存储的数据是结构的还是值数据库不知道存储的数据是结构的还是内容的,它没有关系型数据库中那样的数据结构,无法像内容的,它没有关系型数据库中那样的数据结构,无法像SQLSQL那样那样用用WHEREWHERE语句或者通过任何形式的过滤来请求数据库中的一部分数语句或者通过任何形式的过滤来请求数据库中的一部分数据,它必须遍历所有的键,获取它们对应的值,进行某种用户所据,它必须遍历所有的键,获取它们对应的值,进行某种用户所需要的过滤,然后保留用户想要的数据。需要的过滤,然后保留用户想要的数据。市场上流行的键市场上流行的键-值数据库有值数据库有MemcachedMemcached、RedisRedis
45、、MemcacheDBMemcacheDB、Berkeley DBBerkeley DB。4.2.5 4.2.5 分布式数据库分布式数据库 HBase HBase(分布式数据库)是一种(分布式数据库)是一种NoSQLNoSQL(非关系型数据库)模型,(非关系型数据库)模型,经常用于分布式环境里,是一个分布式的结构化数据存储系统,是经常用于分布式环境里,是一个分布式的结构化数据存储系统,是ApacheApache的一个开源项目,是的一个开源项目,是GoogleGoogle公司的公司的BigTableBigTable的开源实现。的开源实现。HBase HBase的目标是处理非常庞大的表,可以通过水
46、平扩展的方式,的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群来处理超过利用廉价计算机集群来处理超过 10 10 亿行数据和数百万列元素组成亿行数据和数百万列元素组成的数据表。的数据表。HBaseHBase是一个疏松的、分布式的、已排序的多维度持久化的列是一个疏松的、分布式的、已排序的多维度持久化的列族数据库。族数据库。列存储数据库将数据存在列族(列存储数据库将数据存在列族(column familycolumn family)中,一个列)中,一个列族存储经常被一起查询的相关数据。例如,如果我们有一个族存储经常被一起查询的相关数据。例如,如果我们有一个PersonPerso
47、n类,我们通常会一起查询其姓名和年龄,而不是薪资。在这种情况类,我们通常会一起查询其姓名和年龄,而不是薪资。在这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。中。若要使用若要使用HBaseHBase,我们需要了解如下,我们需要了解如下6 6个重要概念。个重要概念。(1 1)表()表(tabletable):):HBaseHBase采用表来组织数据。采用表来组织数据。(2 2)行()行(rowrow):每个表都由行组成,每个行由行键():每个表都由行组成,每个行由行键(rowkeyrowkey)来标识。)来标识。(3
48、 3)列族()列族(column familycolumn family):一个):一个tabletable有多个列族。有多个列族。(4 4)列限定符:是)列限定符:是column familycolumn family的分类,每个的分类,每个column familycolumn family可以有可以有不同的分类。不同的分类。(5 5)时间戳()时间戳(timestamptimestamp):时间戳用来区分数据的不同版本。):时间戳用来区分数据的不同版本。(6 6)单元格()单元格(cellcell):在):在tabletable中,通过行、列族、子列、时间戳来确中,通过行、列族、子列、时
49、间戳来确定一个定一个cellcell,cellcell中存储的数据没有数据类型,是字节数组中存储的数据没有数据类型,是字节数组byte byte。HBase HBase的结构示例如图的结构示例如图4-174-17所示。所示。图4-17 HBase的结构示例 在在HBaseHBase数据库表中插入数据应使用数据库表中插入数据应使用putput操作。例如,使用如操作。例如,使用如下语句可向数据库表中插入下语句可向数据库表中插入3 3条数据。条数据。put t1,rowkey001,f1:col1,value01bput t1,rowkey001,f1:col2,value02put t1,rowk
50、ey001,f2:col1,valuef2col1 查看刚才插入的数据使用查看刚才插入的数据使用scanscan命令,结果如图命令,结果如图4-184-18所示。所示。图4-18 使用scan命令查看表的结果4.2.6 4.2.6 关系型数据库关系型数据库1 1关系型数据库的特点关系型数据库的特点(1 1)关系型数据库,是建立在关系模型基础上的数据库,现实世)关系型数据库,是建立在关系模型基础上的数据库,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。界中的各种实体以及实体之间的各种联系均用关系模型来表示。(2 2)所谓关系模型就是)所谓关系模型就是“一对一、一对多、多对多一对一