第三章大数据存储与管理
分布式文件系统 NoSQL数据库 分布式数据库 云数据
3.2 分布式文件系统 3.2.1分布式文件系统
概念:文件系统管理的无物理存储资源不仅在本地节点上,还
数据特征:巨大、非结构化、并行处理 分布式文件系统 NoSQL数据库 分布式数据库 云数据 3.2 分布式文件系统 3.2.1分布式文件系统 概念:文件系统管理的无物理存储资源不仅在本地节点上,还可以通过网络连接存储在非本地节点上,可解决备份、安全、可拓展等难题 评价一个分布式文件系统因素: (1)数据的存储方式,即文件数据在各节点之间的分布策略 (2)数据的读取速率 (3)安全机制 3.2.1.1 常见的分布式文件系统 GFS、HDFS、lustre、ceph hdfs:转为存储和管理超大数据文件分布式文件系统,运行在商品化的集群硬件上。 3.2.1.2 分布式关键技术 (1)统一名词空间:通常会在名字空间服务器的本地文件来进行存储 (2)锁机管理机制:分布式并行文件系统用户与多进程并行访问提供高速I/O (3)副本管理机制 副本是分布式文件系统的核心技术 (4)数据存取技术 一是分块、二是放置 (5)安全机制 (6)课扩展性 3.2.2HDFS简介 Hadoop非常适合于存储海量数据,使用HDFS作为存储系统,可以连接多个节点 HDFS是容错的,对大数据集的高吞吐量访问有以下特性: (1)一次写入,多次读取 模型。降低了并发性控制要求,简化了数据聚合性 (2)将处理逻辑放置到数据附近,通常将数据移向应用程序空间更好 HDFS的主要设计目标是: (1)通过维护多副本和在故障发生时自动重新部署处理逻辑,来实现可靠性。 (2)采用简单可靠的聚合模型 (3)处理逻辑接近数据,而不是数据接近处理逻辑 (4)跨异构普通硬件和操作系统的可移植性 (5)通过跨多个普通个人计算机集群分布数据和处理以节约成本 (6)通过分布数据和逻辑到数据所在多个节点上进行并行处理,来提高效率 HDFS提供了一个原生Java应用程序编程接口(api)和一个针对这个Java API 的原生C语言封装器 3.2.3 HDFS 体系结构 3.2.3.1 HDFS体系结构 设计目标:提供一个高容错、能部署在廉价硬件上的分布式系统,支持高吞吐量适合大规模数据集应用。 高层设计(名节点、主节点,数据节点) 它们之间的通信,包括客户端与HDFS名节点服务器的通信,则基于TCP/IP.通过可配置的TCP端口连接到名节点,通过客户端协议与名节点交互。数据节点使用数据节点协议与名节点交互。 名节点可看作是数据节点的管理者,执行与文件系统命名空间相关操作 3.2.3.2 HDFS体系结构的设计原则 (1)元数据与数据分离 (2)主从结构 一个HDFS集群是由一个名节点和一定数目的数据节点组成 名节点:管理文件系统的名字空间以及客户端对文件的访问 数据节点:一个节点一个,负责管理它所在节点上的存储 (3)一次写入多次读取 HDFS中的文件只能写一次,且在任何时候只能有一个写入程序,一旦关闭则不可以修改。可以有效的保证数据的一致性 (4)移动算比移动数据更划算 HDFS在改善吞吐量与数据访问性能上的设计决策》。。。。P81 3.2.4 HDFS存储原理 1.名节点和数据节点 名节点:执行文件系统的操作(文件打开/关闭/重命名等) 数据节点:负责来自客户端的文件读写 2.文件系统命名空间 可以创建、删除、移动和重命名文件和目录 3.数据复制 维护数据以便让用户随时随地可以获取的方法是存储文件副本 HDFS将文件分成大小完全相同的若干份存储与各个数据节点之上,同时在其他的若干个数据节点上保存有各个文件块的副本 副本放置策略 安全模式:在安全模式下,数据块的赋值不会发生 4.文件系统元数据的持久存储 HDFS文件系统的元数据被存储在名节点上。整个HDFS文件系统的命名空间、数据块与文件映射关系,文件系统的各个属性都被存放在一个叫做元数据镜像的文件中 5.多副本的流式复制 6.心跳检测和重新复制 数据节点周期性向名节点报告自己节点的状态 出错的三种情况:名节点出错、数据节点出错、网络中断。 3.2.5 HDFS数据读写 HDFS 集群=文件系统元数据名节点+存储实际数据的数据节点 1.读操作 2.写操作 看书 85页 3.3分布式数据库 数据库的核心是实现数据的高效管理 关系数据库包括的功能:面向磁盘的存储和索引、多线程访问、基于锁的同步控制机制、基于日志的回恢复机制、事务机制等。 HBASE为典型代表的非关系型数据库 3.3.1概述 HBase的原型是谷歌的分布式存储系统big table 。具有广泛性、可拓展性、高性能和高可用行等特点,主要用来存储非结构化和半结构化的数据 3.3.2HBase 数据模型 本质上是一个稀疏、多维度、排序的数据映射表,这张表的索引是行键、列族、列限定符和时间戳,表中的每个值都是一个没有数据类型的字符串 HBase中执行更新操作时,并不删除数据的旧版本,而是新生成一个新的版本,旧版本仍然保留 两种数据清理方式:保存数据最近k个版本 最近一段时间内的版本 (1)行:每个行由行键来表示 。访问表中的行有三种方式:(1)通过单个行键访问 (2)通过一个行键的区间访问和全表扫描 (2)列族(多个列的组合) 创建表时就定义好,数量不能太多,不应频繁修改。列名都以列族作为前缀,HBase中,访问控制、磁盘和内存的使用统计都是在列族层面上进行的。列族中的数据经过限定符(或)列来定位 (3)时间戳 每个单元格中数据的不同版本利用时间戳进行索引,单元格(通过列、列族和列限定符即可定位一个单元格) HBASE通过【行键、列族、列限定符、时间戳】确定一个数值 3.3.3HBASE实现模块 (1)链接到每个客户端的库函数 (2)一个主(master)服务器:负责管理和维护HBASE表的分区信息,处理表和列族的创建之类的模式变化 (3)多分分区服务器 客户端实在获得分区的存储位置之后,直接从分区服务器上读取数据,借助zookeeper获得分区的位置信息,减小了服务器的负载 .MEAT表:一张包含分区标识符和分区服务器表示的元数据表 .ROOT表:一张. MEAT表被分裂成多个分区时,重新定义的关于.MEAT表的分区映射表,记录所有元数据的具体操作,称为根数据表 3.3.4 HBASE工作原理 (1)客户端:包含访问HBASE的接口,使用HBASE的RPC机制与主服务器和分区服务器进行通信。 (2)zookeeper:可能是由多台机器构成的集群来提供可靠稳定的协同服务 主服务器通过zookeeper随时感知到各个分区服务器的状态,棵树段可通过zookeeper访问 -ROOT-并最终通过三级地址找到想要的数据 (3)主服务器:主要负责管理用户对表的增、删、改及查询等操作,可以安排分区服务器! (4)分区服务器:是HBASE最核心的模块,负责维护位于本机的所有分区,并相应用户的读写请求。HBASE本身不具有读写功能,HDFS可以提供 3.4非关系型数据库 3.4.1概述 由于对数据库存储的容量要求越来越高,单机无法满足, 关系型和非关系型数据库都有各自的优缺点应该应用于不同的场景。 所采取的的数据模型并非传统关系数据库的模型而是类似键/值、列族、文档等非关系模型。
有几个特点: (1)灵活的可扩展性:横向扩展 (2)灵活的数据模型:拜托关系数据库的各种束缚条件,采用键/值、列族等非关系模型、允许在一个数据元素里存储不同类型的数据 (3)与云计算紧密融合 3.4.2非关系型数据库相关理论 (1)CPA consistenc(一致性) availability(可用性) tolerance of network partition()分区可容忍性 有以下几个方案可取:CA CP AP (2)BASE:基本含义是可用、软状态和最终一致性 基本可用:一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用 软状态:可以有一段时间数据不同步,可以有一定的滞后性。 最终一致性:允许后续的访问操作可以暂时读不到更新后的数据,但是一段时间后,必须最终读到更新的数据。 最终一致性根据更新数据后各进程访问到数据的时间方式不同,可分区为: 因果一致性 写一致性:当A进程自己执行一个更新操作后,他自己总是可以访问到更新过的值 会话一致性 单调读一致性:如果进程已经看到过数据对象的某个值,那么任何后续访问都不会返回在那个值之前的值。 单调写一致性:系统保证来自同一个进程的写操作顺序执行。 为实现最终一致性,常用做法:单数据库事务、基于两阶段协议的多数据库事务,基于消息队列… 3.4.3 典型NOSQL数据库 (1)键值数据库:键值数据库会使用一个哈希表,表中有一个特定的键和一个指针指向特定的值,不可对值进行索引和查询,只能通过键进行查询 ·键可以存储任意类型的数据 可以分为内存键值数据库:把数据保存在 内存中,例如Redis 持久化键值数据库:把数据保存在磁盘中,例如:riak 条件查询是键值数据库的弱点,不回滚,无法支持事物,应该避免多表关联查询,可以采用双向冗余存储关系。 (2)列数据库 一般采用列族数据模型,由多行组成,每行有多个列族,不同可以具有不同数量的列族,每行数据通过行键进行定位,也可以视为键值数据库 (3)文档数据库 文档时数据库的最小单位,文档数据库通过键来定位一个文档,对于可以把输入数据表示成文档的应用而言,文档数据库非常适合,既可以根据键来构建索引和查询这种能力,主要用于存储并索引文档数据 (4)图数据库 以图论为基础,专门用于管理高度相关联关系的数据,高效地处理实体之间的关系,适合于社交网络,模式识别… 3.4.4与关系型数据库的对比 关系数据库优势:以完善的关系代数理论作为基础,技术成熟,有专业公司技术支持 劣势:可扩展性差,无法较好支持海量数据存储,模型过于四班 NoSql数据库优势:支持超大数据库存储规模。数据规模灵活,强大横向扩展能力 劣势:缺乏数学理论基础,复杂查询性能不高,不能实现事务强一致性。 3.4.5从非关系型数据库到NewSql NewSql是对各种新的可扩展、高性能数据库的简称,有存储海量数据+ACID和SQL等特性。 都支持关系数据模型和都是用sql作其主要的接口 3.5云数据库 3.5.1概述 是被优化或部署到一个虚拟计算环境中的数据库,相比传统数据库,云数据库易于部署、管理和扩展。 云数据库是把传统的数据库本身以云计算服务的方式对外提供服务,不在乎选择的是那种传统数据库。 1.云计算的优势(以RDS为例) (1)部署快捷 (2)可靠性高 (3)成本低 2.云数据库与云存储的区别 (1)对应的层面 云存储==>资源层 云数据库= =>平台层 (2)提供的服务 云存储= =>存储能力,更多面向非结构化数据 云数据库= =>提供基础的数据库和数据对象管理能力 (3)两者关系 云存储= =>HDFS分布式文件系统进行封装,提供存储服务能力接口。 3.5.3云数据库产品 常见的云数据库产品总结: (1)亚马逊web服务(AWS) (2)微软AZURE (3)Google云平台… 3.6大数据的SQL查询引擎 3.6.1概述 对sql语言的具体作用进行剖析,可以解读为建立各种不同数据库之间的具体联系。 大数据sql访问层和查询引擎就是实现sql查询与非关系型数据库关联的一种重要手段 以下是几种主流的大数据sql查询工具 3.6.2 Phoenix 最早是saleforce的一个开源项目,构建在Hbase上的一个sql层,完全使用java编写,有以下一些特性: (1)嵌入式的jdbc驱动,实现了大部分的java.sql接口,包括元数据API (2)可以通过多部行键或是键/值单元对列进行建模 (3)完善的查询支持,可以使用多个谓词以及优化的扫描键 (4)DDL支持:通过create table 、drop 及alter来添加或者删除 (5)版本化的模式仓库:当写入数据时,快照查询会使用恰当的模式 (6)DML支持:upset、delete用于相同或不同表之间大量数据传输的upsert select (7)通过客户端的批处理实现的有限事务支持 (8)符合ANSI SQL标准 3.6.2.1创建关联视图 创建的视图是只读的 3.6.2.2创建关联表 3.6.3Hive 3.6.3.1概述 hive是一个数据仓库基础工具,在Hadoop中用来处理结构化数据,可将sql语句转换为MapReduce任务进行运行 特点:(1)它存储架构在一个数据库中并处理数据到HDFS (2)它专为OLAP设计的 (3)它提供SQL类型查询HIVEQL或HQL 3.6.4 Apache drill和presto 3.6.5cloudera impala 这后面的内容我是跳过了的,因为好像天书大数据存储架构,我一点也看不懂!哈哈哈哈哈 3.7小结 主要介绍大数据存储与管理涉及的分布式文件系统及助理技术HDFS,分布式数据库中的典型技术HBASE,非关系型数据库、云数据库等技术。 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |