加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

第三章大数据存储与管理

发布时间:2022-12-19 15:31:38 所属栏目:大数据 来源:网络
导读: 数据特征:巨大、非结构化、并行处理
分布式文件系统 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概述

由于对数据库存储的容量要求越来越高,单机无法满足,

关系型和非关系型数据库都有各自的优缺点应该应用于不同的场景。

所采取的的数据模型并非传统关系数据库的模型而是类似键/值、列族、文档等非关系模型。

	非关系型数据库没有固定的表结构,通常也不存在连接操作,也没有严格遵守ACID约束。有较好的可扩展性、无共享架构、支持海量数据的存储

有几个特点:

(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,非关系型数据库、云数据库等技术。

(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!