大数据的存储和管理(二)|学习笔记

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 快速学习大数据的存储和管理(二)

开发者学堂课程【高校精品课-北京理工大学-大数据技术导论:大数据的存储和管理(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/857/detail/15614


大数据的存储和管理(二)

 

内容介绍:

一、分布式数据库

二、h base 简介

三、h base 的数据模型

四、h base 的实现原理

五、h base 操作常用命令

六、小结

 

一、分布式数据库

数据库的核心目的是实现数据的一个高效的存储和管理。而传统的关系型数据库技术非常成熟,有着很多优势,例如完备的关系理论作为基础,强大的事物管理机制的支持,同时有着非常高效的查询优化的机制

图片162.png

这使得传统的关系型数据库曾经一度在市场上占据着主流的位置,随着大数据时代的到来,以及 WEB2.0应用的发展,传统的关系型数据库在并发性、可扩展性以及可用性方面都呈现了一些不足。

在 WEB2.0的很多应用中,需要处理大量的非结构化以及半结构化的数据。而传统的关系型数据库需要对数据的模式,做一个严格的定义,在很多应用中是不可实现的。

图片161.png

H base 作为非关系型数据库的一个典型代表,也是 hadoop 生态组件中重要的组成部分之一,在很多方面上都弥补了关系型数据库的不足。

 

二、h base 简介

h base 的原型是 Google 的分布式存储系统.H base 作为非关系型数据库的一个典型代表,也是 hadoop生态组件中重要的组成部分之一,在很多方面上都弥补了关系型数据库的不足。

Big table 是使用 Google 的分布式文件系统。GFS 作为底层的数据存储,同时,配合 mapreduce 分布式的计算模型来处理海量的数据,同时采用 chubby 来提供协同的服务管理。

big table 在性能上可以扩展到 PB 级别的数据和上千台的机器,具备广泛的使用性、可扩展性、高性能以及高可用性这些特点

 图片160.png

H base 作为 big table 的一个开源实现,是一个高可靠、高性能、面向列、可伸缩的一个分布式的数据库,主要用来存储非结构化和半结构化的数据。h base 的设计目标是处理非常庞大的表,通过水平可扩展的方式,廉价的计算机集群处理超过11行数据和数百万列属性组成的数据表。

 图片159.png

h base。是 hadoop 生态系统里面非常重要的组件之一,与其他的组件的对应关系看一下这张图。

图片158.png

h base 是以 HDNS 作为高可靠的底层存储,利用廉价的集群提供海量的数据存储能力,同时,利用 mapreduce来处理 h base,中海量的数据来实现高性能的运算,利用 zookeeper。算利用做 keeper 来提供协同服务,来实现稳定的服务和数据恢复,在 hadoop 生态系统中还有一些其他的组件来提供相应的支持。例如 qoop 为 h base 提供了高效便捷的关系数据导入的功能,上层的 have 和 pig 提供了高层语言的支持。

 

三、h base 的数据模型

1. 数据模型的相关概念。在 h base 中,采用表的形式来组织数据,跟传统的关系型数据库是一样。表是由行和列组成,不同的是列被分成了若干个列组。看这个示意图

图片157.png

在这个简单的例子中,在表中存储学生的数据,每一行代表一个学生。每一个行由行间来标识,行间是学生的ID。

在 h base 中有列的概念,Common family,一个 h base 的表被分成很多个列。在这个事例中,只列了一个列,也就是 info 列。它是一个基本的访问控制单元,也是进行存储的基本单元

列限定符。在每个列组里面,通常会有多个列限定符或者简称为列。在这个事例中,在 info 列组里面有name major和EMAIL3个列单元格。在 h base 的表中,通过行列组和列限定符可以唯一确定一个单元格,也就是 cell。在这个cell里面,存储的数据是没有数据类型的,这跟传统的关系型数据库是不一样的。传统关系型数据库需要对每个列做数据类型的限定,而在 h base 中,每一个数据都被视为 byte 数组时间戳。

在 h base 中每一个单元格可以存储多个版本的数据,通过时间戳进行索引。所以说 H base 本质上是一个稀疏的、多维度的排序的映射表。

图片156.png

这张表的索引是行线列足列限定符以及时间戳。通过这个四维的行键列组列限定符和时间戳,可以唯一确定一个数据,用户在表中存储数据。每一行都有一个可排序的行键和任意多个列。

表中的值是未经解释的字符串,是没有数据类型的,表在水平方向由一个或多个列组组成,一个列组可以包含任意多个列,同一个列组里面的数据。会被存储在一起,由于同一张表里面,每一行数据都可以有不同的列,所以里面有很多的单元格是空的,这也就是为什么称 h base 是稀疏的。

在 h base 中,列足支持动态的扩展,可以在任意的时间向 h base 中轻松的添加一个列或列无需预先定义列的数量以及类型,使得 h base 数据模型非常的灵活。在 h base 中,需要进行更新操作的时候,不会把原始数据删除,而是去生成一个新的版本,用时间戳来作为索引。数据是按照时间戳顺序存储的,客户端可以选择获取离某个时间最近的数据版本,或者获取所有的数据版本。如果用户没有提供时间戳,系统默认返回最新的数据版本

图片155.png

h base 的数据坐标概念。在关系型数据库里,根据行和列可以唯一确定一个数据,在 h base 中有一个四维坐标,也就是由行键列组列限定符。和时间戳组成。通过这四维坐标我们可以唯一确定一个值,如果把四维坐标行间列足列限定符和时间戳视为一个键的话,单元格视为值的话,那可以把 h base 看做一个键值数据库。

图片154.png

逻辑视图和物理视图的概念。逻辑上 h base 里面的表是一个稀疏的多维度的数据表,在物理上存储的时候,以列组为单位进行存储,在这个事例中,CF1,这个列组里面的数据被存储到了一起,CF2的数据被存储到了一起。在存储的时候会对数据进行排序,排序的顺序是行键列足列限定符以及时间戳。表中的空值是没有被存储的。

图片153.png

 

四、h base 的实现原理

1.h base 的实现原理。在 h base 中的表是根据 rocky 也就是行键来被水平划分成多个分区的,叫它 r egion分区会被分发到不同的region server,也就是分区服务器上来存储。每个分区服务器可以存储多个 region,但是同一个 region 只能被分发到一个 region 服务器上。

 图片152.png

2. h base 的实现包括三个主要的功能组件,包括连接到客户端的库函数。客户端可以通过访问库函数实现跟 h base的交互,master 主服务器。以及许多个 region 服务器,region 服务器是主要用来存储每个分区的,master是主要负责管理和维护h base 表的分区信息,来维护 region 服务器的列表分配。region 同时负责负载均衡以及处理email的变化,比如要创建新的表,要添加新的列足 region 服务器是负责存储和维护 master 分配给自己的 region,同时处理来自客户端的读写请求。

3. 分区定位

在 h base 中,不同的分区被分布式的存储到了多个分区服务器上,要读数据的时候如何做分区的定位在h base中有这样原数据表,又叫做 matter 表,它是用来存储 region 和 region server 的映射关系的。在客户端需要访问数据的时候,首先需要去访问matter表。matter 表的信息是存储在 zoo keeper 的。

图片151.png

通过访问z oo keeper 来获取 matter 表的信息,接着去访问 matter 表,从 matter 表中取出所需要分区的具体位置。接着去访问对应的分区来获得用户端,想要读取的数据,同时为了加速选址,客户端会把访问过的位置信息,做一个本地的缓存,以便之后做快速的选址。 

 

五、h base 操作常用命令

h base 操作的常用命令,可以去访问 h base 的官方网站详细的命令说明,如何在 h base 中创建表,如何去启用和禁用表,什么时候需要去启用和禁用表,以及怎样修改表的 skima,如何删除表等等。也可以学习到关于记录的操作,如何在 h base 的一个表中添加记录,怎么去查询,如何删除记录如何做 count同时也可以学习到如何在Java的程序里面调用 Java API 与 h base 进行交互。

图片150.png

 

六、小结

分布式数据库 h base 的有关知识,h base 的由来、数据模型、实现原理以及常用命令等内容。

HBase 数据库是 BiqTable 的开源实现,支持大规模海量数据的存储与管理

HBase 是一个稀疏、多维、持久化存储的映射表,它采用行键、列族、列限定符和时间戳进行索引

HBase 用分区存储,一个大的表会被分拆许多个 Region,这些 Region 会被分发到不同的服务器上实现分布式存储

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
32 4
|
1月前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
48 3
|
1月前
|
存储 消息中间件 大数据
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
38 1
|
1月前
|
存储 消息中间件 大数据
大数据-68 Kafka 高级特性 物理存储 日志存储概述
大数据-68 Kafka 高级特性 物理存储 日志存储概述
26 1
|
1月前
|
存储 算法 NoSQL
大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同
大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同
33 0
|
1月前
|
存储 消息中间件 分布式计算
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
30 0
|
1月前
|
存储 SQL 分布式计算
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
20 0
|
1月前
|
存储 消息中间件 大数据
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
56 0
|
3月前
|
存储 缓存 NoSQL
深入解析Memcached:内部机制、存储结构及在大数据中的应用
深入解析Memcached:内部机制、存储结构及在大数据中的应用
|
3月前
|
存储 分布式计算 算法
"揭秘!MapReduce如何玩转压缩文件,让大数据处理秒变‘瘦身达人’,效率飙升,存储不再是烦恼!"
【8月更文挑战第17天】MapReduce作为Hadoop的核心组件,在处理大规模数据集时展现出卓越效能。通过压缩技术减少I/O操作和网络传输的数据量,不仅提升数据处理速度,还节省存储空间。支持Gzip等多种压缩算法,可根据需求选择。示例代码展示了如何配置Map输出压缩,并使用GzipCodec进行压缩。尽管压缩带来CPU负担,但在多数情况下收益大于成本,特别是Hadoop能够自动处理压缩文件,简化开发流程。
58 0