Kaiyun(中国)官方网站-体育专属平台

Kaiyun体育网站:大数据第4章大数据存储与管理-Kaiyun体育|官方入口
新闻中心 分类
Kaiyun体育网站:大数据第4章大数据存储与管理

  存储介质是数据存储的载体,是数据存储的基础。存储介质并不是越贵越好、越先进越好,我们要根据不同的应用环境,合理选择存储介质。早期的存储介质有纸带、卡片、磁带等,目前常见的数据存储介质有机械硬盘、固态硬盘、可记录光盘、U盘、闪存卡等。

  组成:机械硬盘即传统普通硬盘,主要由盘片、磁头、磁头停泊区、磁头臂等组成,如图4-1所示。

  读/写原理:机械硬盘的磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置进行数据的读/写操作。机械硬盘中所有的盘片都装在一个旋转轴上。每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头连在一个磁头控制器上,磁头控制器负责各个磁头的运动。另外,机械硬盘在读取的时候,各个部件在做机械运动,所以会产生一定的热量和噪声。

  稳定性:机械硬盘都是磁碟型的,数据存储在磁碟扇区里,所以机械硬盘不能摔,通电不能移动,否则易损坏。

  优缺点:优点在于便宜,性价比高,可以用较少的花费获得较大容量,使用寿命长;缺点是相对固态硬盘来说,读/写速度较慢;防震性也没有固态硬盘好。

  组成:固态硬盘(SolidStateDrive,SSD)是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(Flash芯片、DRAM芯片)组成,如图4-2所示。

  读/写原理:与普通磁盘的数据读/写原理不同,固态硬盘的读取直接由控制单元读取存储单元,不存在机械运动,因此读取速度非常快。相对机械硬盘,固态硬盘的读取速度提高了两倍多。由于固态硬盘属于无机械部件及闪存芯片,所以具有发热量小、散热快等特点,而且没有机械马达和风扇,工作噪声值为0分贝。

  稳定性:固态硬盘使用闪存颗粒(即内存、MP3、U盘等存储介质)制作而成,所以内部不存在任何机械部件,这样即使在高速移动甚至伴随翻转倾斜的情况下,也不会影响正常使用。而且在发生碰撞和震荡时,能够将数据丢失的可能性降到最小。相较机械硬盘,固态硬盘更可靠。

  优缺点:固态硬盘的优点是读取和写入速度快,缺点是价格较高,有写入次数的限制,读/写有一定的寿命限制。

  常使用的可记录光盘分为CD-R、CD-RW、DVD±R/RW多种格式,如图4-3所示。

  (1)CD-R是一次刻录、可多次读取的光盘,标准容量为650MB,现在常用的刻录容量为720MB。

  U盘是一种Flash存储设备,是用Flash芯片(FlashRAM,电可擦写存储器)作为存储介质制作的移动存储器,如图4-4所示。U盘采用通用串行总线(UniversalSerialBus,USB)接口,可反复擦写的性能大大加强了数据的安全性。U盘使用极为方便,无须外接电源,支持即插即用和热插拔,只要用户计算机的主板上有USB接口,就可以使用。由U盘发展起来的MP3、MP4播放机也可当数据存储设备使用。

  闪存卡一般用于数码类的产品中,如用于手机、数码照相机、数码摄像机、数码录音笔等。常用类型有SD卡、MiniSD卡、MicroSD(TF)卡、CF卡、记忆棒等,如图4-5所示。

  耐久性能高的存储介质不容易损坏,降低了数据损失的风险。因而存储数据应选用对环境要求低、不容易损伤、耐久性能高的介质。

  介质的高容量不仅有利于存储空间的减少,还便于管理,但会使存储的成本增加。对大容量数据,如果存储介质容量低,将不利于存储数据的完整。介质的存储容量最好与所管理的数据量大小相匹配。

  为减少IT业界对存储介质不支持的风险,我们应当选用具有广泛可使用性的存储介质,特别应注意选用能满足工业标准的存储介质。

  DAS 将存储设备通过 SCSI 接口直接连接到一台服务器上使用,如图 4-7所示。

  DAS依赖主机的操作系统来实现数据的读/写、管理、备份等工作,如图4-8所示。

  扩展性差:在新的应用需求出现时,需要为新增的服务器单独配置新的存储设备。

  资源利用率低:不同的应用服务器存储的数据量随着业务发展出现不同,有部分应用存储空间不够,而另一些却有大量的存储空间。

  可管理性差:数据分散在应用服务器各自的存储设备上,不便于集中管理、分析和使用。

  Kaiyun(中国体育) 开云全站网页

  异构化严重:企业在发展过程中采购不同厂商、不同型号的存储设备,设备之间的异构化严重,使维护成本很高。

  NAS存储设备是一种带有操作系统的存储设备,也叫作网络文件服务器。NAS设备直接连接到TCP/IP网络上,网络服务器通过TCP/IP网络存取与管理数据。

  NAS设备与客户机通过以太网连接,NAS使用网络进行数据的备份和恢复,因此数据存储或备份时都会占用网络带宽。

  SAN是一个采用网状通道(Fibre Channel,FC)技术,通过FC交换机连接存储阵列和应用服务器,建立专用于数据存储的区域网络,如图4-10所示。

  SAN支持数以百计的磁盘,提供了海量的存储空间,解决了大容量存储问题;这个海量空间可以从逻辑层面上按需要分成不同大小的逻辑单元,再分配给应用服务器。SAN允许企业独立地增加它们的存储容量。SAN的结构允许任何服务器连接到任何存储阵列,这样不管数据放在哪里,服务器都可以直接存取所需的数据。

  传输速度快:SAN采用高速的传输媒介,并且SAN网络独立于应用服务器系统之外,因此存取速度很快。

  扩展性强:SAN的基础是一个专用网络,增加一定的存储空间或增加几台应用服务器,都非常方便。

  磁盘使用率高:整合了存储设备和采用了虚拟化技术,因而整体空间的使用率大幅提升。

  价格贵:不论是SAN阵列柜还是SAN必需的光纤通道交换机,其价格都是十分昂贵的,就连服务器上使用的光通道卡的价格也是不易被小型企业所接受的。

  CPU 密集的应用环境:某种应用极其消耗CPU资源,其程序内部逻辑复杂而且对磁盘访问量不高。这种程序在运行时根本不用或只需少量读取磁盘上的数据,只是在程序载入的时候读入一点点程序数据而已。进程运行后便会使CPU的核心处于全速状态,这会造成其他进程在同一时间只能获得少量的执行时间,进而严重影响性能。

  I/O密集的应用环境:某种程序的内部逻辑并不复杂、耗费的CPU资源不多,但要随时读取磁盘上的数据,如FTP服务器。

  对高并发随机小块I/O或共享访问文件的应用环境:我们往往会采用NAS。因为对小块的I/O读/写并不会对网络造成大的影响,并且NAS提供了网络文件共享协议。

  在普通PC中,目前已经被广泛使用的存储管理系统有普通的文件系统、键-值数据库和关系型数据库。

  在大数据时代,普通PC的存储容量已经无法满足大数据需求,需要进行存储技术的变革,我们采用分布式平台来存储大数据。

  在计算机中,文件系统(File System)是提供了命名文件及放置文件的逻辑存储和恢复等功能的系统。DOS、Windows、OS/2、Macintosh和UNIX-based操作系统都有文件系统。在此系统中,文件被放置在分等级的(树状)结构中的某一处。文件被放进目录(Windows中的文件夹)或子目录。

  文件系统是软件系统的一部分,它的存在使应用可以方便地使用抽象命名的数据对象和大小可变的空间。

  文件系统是操作系统用于存储设备(磁盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。

  操作系统中负责管理和存储文件信息的软件机构被称为文件管理系统,简称文件系统。文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,允许用户进行存入、读出、修改等操作。

  普通文件系统的存储容量有限,但是大数据一般都是海量数据,无法在以前的普通文件系统进行存储。

  分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。和以前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的,这就大大降低了硬件上的成本开销。

  如图 4-12 所示,分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。这些节点分为两类,一类叫“主节点(Master Node)”或者也被称为“名称节点(NameNode)”,另一类叫“从节点(Slave Node)”或者也被称为“数据节点(DataNode)”。

  Hadoop是Apache软件基金会旗下的一个分布式系统基础架构。Hadoop框架最核心的设计就是HDFS、MapReduce,为海量的数据提供存储和计算。

  MapReduce主要运用于分布式计算,HDFS主要是Hadoop的存储,用于海量数据的存储。HDFS 是一个分布式文件系统,具有高容错的特点。它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问,适合那些需要处理海量数据集的应用程序。

  HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命名文件等。

  HDFS采用了主从(Master/Slave)结构模型,如图4-13所示。一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。

  名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。

  集群中的数据节点负责处理客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。

  名称节点(NameNode)存储元数据,元数据被保存在内存中(磁盘上也保存了一份),保存文件Block、DataNode之间的映射关系;NameNode记录了每个文件中各个块所在的DataNode的位置信息。

  元数据的内容包括文件的复制等级、修改和访问时间、访问权限、块大小及组成文件的块。对目录来说,NameNode存储修改时间、权限和配额元数据。

  数据库(DataBase)就是一个存放数据的仓库。这个仓库是按照一定的数据结构(数据结构是数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方式来管理数据库里的数据。

  在关系型数据库中,程序对数据的操作几乎全部建立在一个或多个关系表格上,即程序通过对这些关联表的表格分类、合并、连接或选取等运算来实现对数据的管理。

  NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底否定关系型数据库,而是成为传统关系型数据库的一个有效补充。

  NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论“大一统”的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(NoSQL)在2009年初得到了广泛认同。

  当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求,而NoSQL存储就是满足这个需求而诞生的。

  键-值(Key-Value)数据库是一种NoSQL数据库,用户可以通过Key来添加、查询或者删除数据。因为使用Key主键访问,所以会获得很高的性能及扩展性。键-值存储非常适合不涉及过多数据关系和业务关系的数据,同时能有效减少读/写磁盘的次数,比SQL数据库存储拥有更好的读/写性能。

  键-值数据库主要使用一个哈希表,这个表有一个特定的键和一个指针指向特定的数据。Key-Value模型对IT系统的优势在于简单、易部署、高并发。

  (1)Get(Key):获取之前存储于某标示符“Key”之下的一些数据,如果“Key”下没有数据则报错。

  (2)Set(Key, Value):将“Value”存储到存储空间中某标示符“Key”下,使我们可以通过调用相同的“Key”来访问它。如果“Key”下已经有了一些数据,旧的数据将被替换。

  优点:在键已知的情况下查找内容,键-值数据库的访问速度比关系型数据库快好几个数量级。

  缺点:在键未知的情况下查找内容,键-值数据库的访问速度是非常糟糕的。因为键-值数据库不知道存储的数据是结构的还是内容的,它没有关系型数据库中那样的数据结构,无法像SQL那样用WHERE语句或者通过任何形式的过滤来请求数据库中的一部分数据,它必须遍历所有的键,获取它们对应的值,进行某种用户所需要的过滤,然后保留用户想要的数据。

  HBase(分布式数据库)是一种NoSQL(非关系型数据库)模型,经常用于分布式环境里,是一个分布式的结构化数据存储系统,是Apache的一个开源项目,是Google公司的BigTable的开源实现。

  HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群来处理超过 10 亿行数据和数百万列元素组成的数据表。

  列存储数据库将数据存在列族(column family)中,一个列族存储经常被一起查询的相关数据。例如,如果我们有一个Person类,我们通常会一起查询其姓名和年龄,而不是薪资。在这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。

  (2)行(row):每个表都由行组成,每个行由行键(rowkey)来标识。

  (6)单元格(cell):在table中,通过行、列族、子列、时间戳来确定一个cell,cell中存储的数据没有数据类型,是字节数组byte[] 。

  在HBase数据库表中插入数据应使用put操作。例如,使用如下语句可向数据库表中插入3条数据。

  (1)关系型数据库,是建立在关系模型基础上的数据库,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

  (2)所谓关系模型就是“一对一、一对多、多对多”等二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

  (3)关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了数据库。

  (4)关系型数据库里面的数据是按照“数据结构”来组织的,因为有了“数据结构”,所以关系型数据库里面的数据是“条理化”的。

  (1)表:表是一系列二维数组的集合,用来代表和存储数据对象之间的关系。它由纵向的列和横向的行组成。

  (3)列:也称字段,在表中是一条纵向的数据集合,列也定义了表中的数据结构。

  结构化查询语言(Structured Query Language,SQL)用于对关系型数据库里的数据和表进行查询、更新和管理。

  (1)原子性:整个事务中的所有操作,要么全部成功,要么全部失败,没有中间状态。

  (2)一致性:事务是按照预期生效的,一致性的核心一部分靠原子性实现,另一部分靠逻辑实现。

  (3)隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。事务的隔离级别一共有4种状态,可以在数据库中进行设置。

  (4)持久性:在事务完成以后,保证事务对数据库所做的更改被持久地保存在数据库之中。

  Hive是一个构建于Hadoop上的数据仓库工具,支持大规模数据存储、分析,具有良好的可扩展性。它的底层依赖分布式文件系统HDFS存储数据,并使用分布式并行计算模型MapReduce处理数据。Hive定义了简单的类似于SQL的查询语言HiveQL,用户可以通过编写的HiveQL语句运行MapReduce任务。

  以下语句在Hive数据库中创建表usr,含有3个属性,即id、name、age。

  以下语句把目录“/usr/local/data”下的数据文件中的数据加载进usr表并覆盖原有数据。