版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大数据存储
在普通PC中,目前已经被广泛使用的存储管理系统有普通的文件系统、键-值数据库和关系型数据库。在大数据时代,普通PC的存储容量已经无法满足大数据需求,需要进行存储技术的变革,我们采用分布式平台来存储大数据。大数据时代的存储管理系统2.操作系统和文件系统的关系文件系统是操作系统用于存储设备(磁盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构被称为文件管理系统,简称文件系统。文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,允许用户进行存入、读出、修改等操作。2分布式文件系统1.分布式文件系统简介普通文件系统的存储容量有限,但是大数据一般都是海量数据,无法在以前的普通文件系统进行存储。分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。和以前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文件系统所采用的计算机集群,都是由普通硬件构成的,这就大大降低了硬件上的成本开销。计算机集群的基本架构如图所示。图计算机集群的基本架构2.分布式文件系统的整体结构如图
4-12
所示,分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。这些节点分为两类,一类叫“主节点(MasterNode)”或者也被称为“名称节点(NameNode)”,另一类叫“从节点(SlaveNode)”或者也被称为“数据节点(DataNode)”。图
分布式文件系统的整体结构3.Apache下的分布式文件系统Hadoop是Apache软件基金会旗下的一个分布式系统基础架构。Hadoop框架最核心的设计就是HDFS、MapReduce,为海量的数据提供存储和计算。MapReduce主要运用于分布式计算,HDFS主要是Hadoop的存储,用于海量数据的存储。HDFS
是一个分布式文件系统,具有高容错的特点。它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问,适合那些需要处理海量数据集的应用程序。HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件,重命名文件等。
在HDFS中,一个文件被分成多个块,以块作为存储单位,块的作用如下。(1)支持大规模文件存储(2)简化系统设计(3)适合数据备份
HDFS采用了主从(Master/Slave)结构模型,如图4-13所示。一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点负责处理客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地Linux文件系统中的。图HDFS的体系结构图
HDFS主要组件的功能
HDFS主要组件的功能(见图)。(1)NameNode名称节点(NameNode)存储元数据,元数据被保存在内存中(磁盘上也保存了一份),保存文件Block、DataNode之间的映射关系;NameNode记录了每个文件中各个块所在的DataNode的位置信息。元数据的内容包括文件的复制等级、修改和访问时间、访问权限、块大小及组成文件的块。对目录来说,NameNode存储修改时间、权限和配额元数据。(2)DataNode数据节点(DataNode)负责数据的存储和读取,数据被保存在磁盘中,维护BlockId到DataNode本地文件的映射关系。DataNode定期向NameNode发送Block信息以保持联系,如果NameNode在一定的时间内没有收到DataNode的Block信息,则认为DataNode已经失效了,NameNode会复制其上的Block到其他DataNode。3数据库数据库(DataBase)就是一个存放数据的仓库。这个仓库是按照一定的数据结构(数据结构是数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方式来管理数据库里的数据。数据库家族如图所示。图数据库家族1.关系型数据库关系型数据库把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,程序对数据的操作几乎全部建立在一个或多个关系表格上,即程序通过对这些关联表的表格分类、合并、连接或选取等运算来实现对数据的管理。2.非关系型数据库非关系型数据库也被称为NoSQL数据库,如图4-16所示。NoSQL的本意是“NotOnlySQL”,指的是非关系型数据库,而不是“NoSQL”的意思,因此,NoSQL的产生并不是要彻底否定关系型数据库,而是成为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。图非关系型数据库
NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论“大一统”的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(NoSQL)在2009年初得到了广泛认同。当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求,而NoSQL存储就是满足这个需求而诞生的。NoSQL典型产品包括Memcached、Redis、MongoDB、HBase等。4键-值数据库键-值(Key-Value)数据库是一种NoSQL数据库,用户可以通过Key来添加、查询或者删除数据。因为使用Key主键访问,所以会获得很高的性能及扩展性。键-值存储非常适合不涉及过多数据关系和业务关系的数据,同时能有效减少读/写磁盘的次数,比SQL数据库存储拥有更好的读/写性能。键-值数据库主要使用一个哈希表,这个表有一个特定的键和一个指针指向特定的数据。Key-Value模型对IT系统的优势在于简单、易部署、高并发。1.键-值对的存储键-值对存储是数据库最简单的组织形式。键-值对存储通常都有如下接口。(1)Get(Key):获取之前存储于某标示符“Key”之下的一些数据,如果“Key”下没有数据则报错。(2)Set(Key,Value):将“Value”存储到存储空间中某标示符“Key”下,使我们可以通过调用相同的“Key”来访问它。如果“Key”下已经有了一些数据,旧的数据将被替换。(3)Delete(key):删除存储在“Key”下的数据。2.键-值数据库的优缺点优点:在键已知的情况下查找内容,键-值数据库的访问速度比关系型数据库快好几个数量级。
缺点:在键未知的情况下查找内容,键-值数据库的访问速度是非常糟糕的。因为键-值数据库不知道存储的数据是结构的还是内容的,它没有关系型数据库中那样的数据结构,无法像SQL那样用WHERE语句或者通过任何形式的过滤来请求数据库中的一部分数据,它必须遍历所有的键,获取它们对应的值,进行某种用户所需要的过滤,然后保留用户想要的数据。市场上流行的键-值数据库有Memcached、Redis、MemcacheDB、BerkeleyDB。5分布式数据库HBase(分布式数据库)是一种NoSQL(非关系型数据库)模型,经常用于分布式环境里,是一个分布式的结构化数据存储系统,是Apache的一个开源项目,是Google公司的BigTable的开源实现。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群来处理超过
10
亿行数据和数百万列元素组成的数据表。
HBase是一个疏松的、分布式的、已排序的多维度持久化的列族数据库。列存储数据库将数据存在列族(columnfamily)中,一个列族存储经常被一起查询的相关数据。例如,如果我们有一个Person类,我们通常会一起查询其姓名和年龄,而不是薪资。在这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。
若要使用HBase,我们需要了解如下6个重要概念。(1)表(table):HBase采用表来组织数据。(2)行(row):每个表都由行组成,每个行由行键(rowkey)来标识。(3)列族(columnfamily):一个table有多个列族。(4)列限定符:是columnfamily的分类,每个columnfamily可以有不同的分类。(5)时间戳(timestamp):时间戳用来区分数据的不同版本。(6)单元格(cell):在table中,通过行、列族、子列、时间戳来确定一个cell,cell中存储的数据没有数据类型,是字节数组byte[]。HBase的结构示例如图所示。图HBase的结构示例put't1','rowkey001','f1:col1','value01b'put't1','rowkey001','f1:col2','value02'put't1','rowkey001','f2:col1','valuef2col1'
在HBase数据库表中插入数据应使用put操作。例如,使用如下语句可向数据库表中插入3条数据。图4-18使用scan命令查看表的结果
查看刚才插入的数据使用scan命令,结果如图4-18所示。6关系型数据库1.关系型数据库的特点(1)关系型数据库,是建立在关系模型基础上的数据库,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。(2)所谓关系模型就是“一对一、一对多、多对多”等二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。(3)关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了数据库。(4)关系型数据库里面的数据是按照“数据结构”来组织的,因为有了“数据结构”,所以关系型数据库里面的数据是“条理化”的。2.关系型数据库的基本概念(1)表:表是一系列二维数组的集合,用来代表和存储数据对象之间的关系。它由纵向的列和横向的行组成。(2)行:也称元组或记录,在表中是一条横向的数据集合。(3)列:也称字段,在表中是一条纵向的数据集合,列也定义了表中的数据结构。3.结构化查询语言结构化查询语言(StructuredQueryLanguage,SQL)用于对关系型数据库里的数据和表进行查询、更新和管理。常用操作如下。创建数据库表:CREATEDATABASE<数据库名>[其他参数]查询:SELECT*FROM表WHERE条件表达式。增加:INSERTINTO表名(列名1,列名2,…)VALUES(列值1,列值2,…)。删除:DELETEFROM表名[WHERE条件表达式]。修改:UPDATE表名SET列名=值[WHERE条件表达式]。4.事务的ACID特性事务的
ACID
特性包括:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。(1)原子性:整个事务中的所有操作,要么全部成功,要么全部失败,没有中间状态。(2)一致性:事务是按照预期生效的,一致性的核心一部分靠原子性实现,另一部分靠逻辑实现。(3)隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。事务的隔离级别一共有4种状态,可以在数据库中进行设置。(4)持久性:在事务完成以后,保证事务对数据库所做的更改被持久地保存在数据库之中。常见的关系型数据库有Oracle、SQLServer、MySQL、SQLite、PostgreSQL、Sqlite。7数据仓库数据仓库(DataWarehouse)是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合。Hive是一个构建于Hadoop上的数据仓库工具,支持大规模数据存储、分析,具有良好的可扩展性。它的底层依赖分布式文件系统HDFS存储数据,并使用分布式并行计算模型MapReduce处理数据。Hive定义了简单的类似于SQL的查询语言HiveQL,用户可以通过编写的HiveQL语句运行MapReduce任务。hive>usehive;hive>createtableifnotexistsusr(idbigint,namestring,ageint);
下面通过实例简单介绍Hive的常见操作。1.创建表以下语句在Hive数据库中创建表usr,含有3个属性,即id、name、age。hive>createtableifnotexistshive.usr(idbigint,namestring,ageint)>location'/usr/local/hive/warehouse/hive/usr';
以下语句在Hive数据库中,创建表usr,含有3个属性,即id、name、age,存储路径为“/usr/local/hive/warehouse/hive/usr”。hive>showdatabases;hive>showdatabaseslikeh.*;2.查看数据库以下语句查看Hive中包含的所有数据库。以下语句查看Hive中以h开头的所有数据库。hive>usehive;hive>showtables;hive>showtablesinhivelikeu.*;3.查看表和视图以下语句查看数据库Hive中所有的表和视图。以下语句查看数据库Hive中以u开头的所有表和视图。ive>loaddatalocalinpath/usr/local/dataoverwriteintotableusr;4.向表中加载数据以下语句把目录“/usr/local/data”下的数据文件中的数据加载进usr表并覆盖原有数据。hive>loaddatalocalinpath/usr/local/dataintotableusr;hive>loaddatainpathhdfs://master_server/usr/local/data>overwriteintotableusr;
以下语句把目录“/usr/local/data”下的数据文件中的数据加载到usr表,且不覆盖原有数据。以下语句把分布式文件系统目录“hdfs://master_server/usr/local/data”下的数据文件中的数据加载到usr表,并覆盖原有数据。
图4-19所示是Hive的应用流程。第一个阶段是从各种数据源获取数据,数据源可以是文档、关系型数据库等;第二个阶段是数据被抽取转换和加载存放到数据仓库中;第三个阶段是分析和挖掘数据仓库中存储的数据,然后应用到各种场景中,如数据挖掘系统、报表分析系统、查询应用等。
图4-19涉及一些相关定义:OLTP是传统的关系型数据库的主要应用,主要是基本的日常事务处理,如银行交易;OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。图4-19Hive的应用流程8文档数据库文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值。此值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。MongoDB
是一种用得比较多的文档数据库,是非关系型数据库中功能最丰富、最像关系型数据库的数据库。它支持的数据结构非常松散,类似JSON的BSON格式,因此可以存储比较复杂的数据类型。1.MongoDB的基本概念(1)文档简单地说,文档可以被理解为一个文本文件,不过这个文本文件有固定的格式,即使用BSON的有序键-值对;文档就相当于表中的一条记录;MongoDB的文档可以使用不同的字段,并且相同的字段可以使用不同的数据类型;文档中的值不仅可以是在双引号中的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档);MongoDB区分类型和大小写。(2)文档的键键是字符串类型,MongoDB的文档不能有重复的键。(3)集合多个文档组成一个集合(见图
4-20),相当于关系型数据库的表,通常包括常规集合及定长集合;集合存在于数据库中,无固定模式,即使用动态模式,也就是说,集合不要求每一个文档使用相同的数据类型及列。(4)数据库一个MongoDB实例可以包含多个数据库;一个数据库可以包含多个集合;一个集合可以包含多个文档。图4-20多个不同的文档组成了一个集合2.MongoDB的适用场景(1)更高的写入负载在默认情况下,MongoDB更侧重大数据和高频率的写入性能,而非事务安全,MongoDB很适合业务系统中有大量“低价值”数据的场景。但是应当避免在高事务安全性的系统中使用MongoDB,除非能从架构设计上保证事务安全。(2)高可用性MongoDB的主副集(Master-Slave)配置非常简洁、方便,此外,MongoDB可以快速地处理单节点故障,自动、安全地完成故障转移。这些特性使MongoDB能在一个相对不稳定的环境中保持高可用性。(3)表结构不明确数据在不断变大在一些传统RDBMS中,增加一个字段会锁住整个数据库/表,或者在执行一个重负载的请求时会明显造成其他请求的性能降级,这些情况通常发生在数据表大于1GB的时候(当大于1TB时更甚)。因为MongoDB是文档数据库,为非结构化的文档增加一个新字段是很快速的操作,并且不会影响到已有数据。另外,当业务数据发生变化时,不需要由DBA修改表结构。9图形数据库图形数据库是一种NoSQL数据库,它应用图形理论存储实体之间的关系信息。最常见例子就是社会网络中人与人之间的关系。一个图形数据库最主要的组成有两种,即节点集和连接节点的关系。节点集就是图
4-21
中一系列节点的集合,比较接近于关系型数据库中最常使用的表,而关系则是图形数据库所特有的。图4-21图形数据库
从图4-22可以看到,在关系型数据库中,在需要表示多对多关系时,我们常常需要创建一个关联表来记录不同实体的多对多关系,而且这些关联表常常不用来记录信息。如果两个实体之间有多种关系,我们就需要在它们之间创建多个关联表。而在一个图形数据库中,我们只需要标明两者之间存在着不同的关系。图形数据库典型的产品有Neo4J、InfoGrid。图4-22关系型数据库与图形数据库10云存储云存储是一个新的概念,是一种新兴的网络存储技术,指通过集群应用、网络技术或分布式文件系统等功能,借助应用软件将网络中大量各种不同类型的存储设备集合起来协同工作,共同对外提供数据存储和业务访问功能的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅游景区渣土清理合同
- 主题公园装修质保承诺函
- 儿童医院装修业务合同
- 仓储服务居间合同
- 乳制品厂半包装修合同模板
- 旅游公司水电改造合同样本
- 体育场馆土方清运协议
- 住宅小区装修设计合同范本
- 湘艺版四年级音乐上册第7课《(演唱)小小鼓号手》教学设计
- 北京市影剧院装修合同样本
- 小学三年级上册道德与法治课件-3.做学习的主人(我和时间做朋友)-部编版(14张)ppt课件
- 玉米育种基地建设项目可行性研究分析报告
- 变压器磁芯参数表汇总
- 威斯敏斯特小要理问答(修正版)
- 制动系统设计计算报告
- 逻辑在高考语文中的运用
- 电梯维护保养规则
- 初一基础100题合并同类项精选题
- 汽车车身车底抗石击涂料标准
- 环境保护监理目的和目标
- AbaqusUSDFLD使用教程
评论
0/150
提交评论