【赵渝强老师】HBase的表结构

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本文介绍了Google的BigTable思想及其对HBase的影响。BigTable将所有数据存入一张表中以提高查询性能,而HBase作为其具体实现,采用列式存储,适合数据分析和处理。文章通过示例说明了HBase的表结构和数据插入方法,并提供了相关代码和图示。

b033.png

在学习HBase的表结构之前,首先需要了解一下什么是Google的BigTable思想。视频讲解如下:


BigTable大表的思想是Google的“第三驾马车”。正因为有了这样的思想就有了Hadoop生态圈体系中的NoSQL数据库HBase。


提示:NoSQL数据库泛指所有的非关系型数据库。NoSQL数据库有很多种,比如:Hadoop体系中的HBase;基于内存的Redis和基于文档的MongoDB。而NoSQL数据库从某种程度上说也是属于大数据体系中的组成部分。


那么什么是BigTable大表呢?简单来说就是把所有的数据存入一张表中,这样做的目的就是为了提高查询的性能。但是这也将违背关系型数据库范式的要求。在关系型数据库中需要遵循范式的要求来减少数据的冗余。减少数据冗余的好处是节约了存储的空间,但是会影响性能。例如:在关系型数据库中执行多表查询会产生笛卡尔积。因此,关系型数据库的出发点是通过牺牲性能,达到节约存储空间的目的。这样设计是有实际意义的,因为在早些年的时候,存储的介质是比较昂贵的,需要考虑成本的问题。而大表的思想正好与其相反,它是把所有的数据存入一张表中。大表的思想是通过牺牲存储空间来达到提高查询性能的目的。


下图展示了在关系型数据库中的表结构。这里的关系型数据库可以是Oracle、MySQL等等。下图的数据模型是部门-员工,即:一个部门可能包含多个员工,一个员工只属于一个部门。



HBase就是BigTable大表思想的一个具体实现,并且它是一个列式存储的NoSQL数据库适合执行数据的分析和处理。简单来说就是适合执行查询操作。如果把上图中的部门-员工数据存入HBase的表中,那将会是什么样的呢?下图展示了HBase的表结构。



HBase的表由列族组成,上图的“emp”和“dept”都是列族,列族中包含列。创建表的时候必须创建列族,不需要创建列。当执行插入语句插入数据到列族中的时候,需要指定rowkey和具体的列。如果列不存在,HBase会自动创建相应的列,再把数据插入到对应的单元格上。


提示:rowkey相当于关系型数据库的主键。但是与主键不同的是,rowkey与关系型数据库类似不允许为空,但是可以重复的。如果rowkey重复了,表示相同的rowkey是同一条记录。


例如,如果要得到上图所示的表结构和数据,可以在HBase中执行下面的语句。

# 创建employee表,包含两个列族:emp和dept
create 'employee','emp','dept'
# 插入数据
put 'employee','7839','emp:ename','KING'
put 'employee','7839','emp:job','PRESIDENT'
put 'employee','7839','emp:hiredate','17-11月-81'
put 'employee','7839','emp:sal','5000'
put 'employee','7839','dept:deptno','10'
put 'employee','7839','dept:dname','ACCOUNTING'
put 'employee','7839','dept:loc','NEW YORK'


下图展示了在HBase Shell的命令中执行的效果。




相关文章
|
5月前
|
存储 缓存 分布式数据库
【赵渝强老师】HBase的体系架构
HBase是一种基于BigTable思想的列式存储NoSQL数据库,适合数据分析与处理。其主从架构包含HBase HMaster、Region Server和ZooKeeper。HMaster负责Region分配及表管理;Region Server执行数据读写操作,并包含WAL预写日志、Block Cache读缓存和MemStore写缓存;ZooKeeper维护集群状态并协调分布式系统工作。通过视频讲解与架构图示,详细解析各组件功能与协作机制。
209 11
|
5月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的物理存储结构
本文介绍了HBase的存储结构,包括逻辑与物理存储结构。物理存储主要涉及StoreFile、HFile和HLog日志。HFile是HBase数据存储的核心格式,包含Data块、Meta块、File Info块等六部分,支持压缩以优化存储。HLog(预写日志)记录数据变更,确保数据可靠性,并在Region Server故障时用于恢复。最后,文章详细描述了HBase的写数据流程:先写入WAL日志,再写入MemStore,最终通过Flush操作将数据持久化到HFile中。
313 2
|
5月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的逻辑存储结构
HBase的逻辑存储结构包括命名空间、表和列族。命名空间类似关系型数据库中的数据库,用于逻辑划分和隔离数据;表以RowKey组织数据并按字典序排列,分为多个Region实现分布式存储;列族包含列且无需预先定义,由MemStore缓存写入数据,定期刷新生成Store File。文章通过视频和代码示例详细讲解了各部分的操作与功能。
178 2
|
11月前
|
存储 缓存 监控
【赵渝强老师】HBase的体系架构
本文介绍了HBase的体系架构,包括HMaster、RegionServer和ZooKeeper的主要功能。HMaster负责Region的分配和管理,RegionServer处理数据的读写操作,ZooKeeper维护集群状态并协调分布式系统的运行。文章还详细解释了Region、WAL预写日志、Block Cache读缓存和MemStore写缓存的作用。
451 0
|
存储 关系型数据库 Java
Hbase入门(四)——表结构设计-RowKey
Hbase的表结构设计与关系型数据库有很多不同,主要是Hbase有Rowkey和列族、timestamp这几个全新的概念,如何设计表结构就非常的重要。
877 0
Hbase入门(四)——表结构设计-RowKey
|
6天前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
48 6
|
5月前
|
分布式计算 Ubuntu Hadoop
Ubuntu22.04下搭建Hadoop3.3.6+Hbase2.5.6+Phoenix5.1.3开发环境的指南
呈上,这些步骤如诗如画,但有效且动人。仿佛一个画家在画布上描绘出一幅完美的画面,这就是你的开发环境。接下来,尽情去创造吧,祝编程愉快!
249 19
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
259 4
|
12月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
249 4
|
12月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
117 3