【博学谷学习记录】超强总结,用心分享|HBase介绍和HBase表模型

HBase是一个基于HDFS的NoSQL数据库,适用于大规模随机读写操作。它不支持SQL,但提供行键的排序查询和范围查询。HBase与RDBMS的主要区别在于不支持事务和表关系。与HDFS相比,HBase适合实时处理,而HDFS更适合批处理。此外,HBase不同于Hive,后者主要用于离线数据分析。文章还介绍了HBase的表模型,包括行键、列族、列限定符号、时间戳和版本号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【博学谷学习记录】超强总结,用心分享|HBase介绍和HBase表模型

一、HBase相关概念

1 HBase产生的背景

HDFS是分布式文件存储系统,其特点是吞吐量极高,适合于进行批量数据处理工作,随机的读写能力很差。然而,实际生产环境中,有时候数据量非常大,但是又希望能对数据进行随机的读写操作,并且速度不能太慢,这该如何解决?
HBase应运而生,HBase的诞生就刚好适用于解决这一难题。
在这里插入图片描述

2 HBase基本介绍

(1)HBase是一款NoSQL型数据库,不支持SQL,没有表关系,无法进行Join操作,不支持事务(仅仅支持行级事务)。
(2)HBase是基于google发布BigTable这篇论文而产生的,基于HDFS,也就说数据最终是存储到HDFS上,如果后续想要启动HBase,必须先启动HDFS。
(3)查询HBase的数据一般有以下几种方式:
第一种:通过主键来检索;
第二种:通过主键的范围检索;
第三种:查询全部数据。
(4)存储的以结构化数据和半结构化的数据为主。
(5)HBase的存储都是以字节类型存储的。
(6)HBase的表的特点:
大: 可以存储上十亿行的数据,也可以拥有上百万个列。
面向列的存储方式:列指的列族(列簇)。
稀疏性:对于Null值,在HBase中是不占用任何的存储空间的,所以表可以建的非常的稀疏。

3 HBase应用场景

(1)数据需要进行随机读写操作;
(2)数据体量大,达到TB级以上;
(3)数据结构比较稀疏。
在实际生产环境中,如果发现数据已经具备以上三点中的两点,就可以尝试使用HBase,如果三种都满足,一般就确定采用HBase。

4 HBase和其他技术的区别

4.1 HBase和RDBMS区别

HBase:以表的形式存储 ,存在行键(row key) ,不支持SQL ,不支持事务(仅行级事务) ,无表关系,不支持Join,采用分布式存储引擎,基于HDFS的文件存储系统,支持结构化和半结构化的数据。

RDBMS:以表的形式存储 ,存在主键(primary key),支持SQL,支持事务,存在表关系,支持Join,采用单机的存储引擎,基于本地文件系统,支持存储结构化数据。

4.2 HBase和HDFS的区别

HBase:基于HDFS,与HDFS是一种强依赖的关系,启动HBase必须先启动HDFS,数据最终落在HDFS上,支持高效的随机读写的特性,吞吐量相对于HDFS比较低,适合于实时处理。

HDFS:适合于批处理,吞吐量极高,不支持随机读写的能力,存储更多是一些过去已经发生过的数据。

4.3 HBase和Hive的区别

HIVE:数据仓库的工具,主要是用于离线数据分析处理,主要对接的离线的处理业务,基于hadoop,高延时。

HBASE:nosql型数据库,主要是用于数据的存储工作,主要对接实时业务,基于hadoop,低延迟。

二、HBase表模型

在这里插入图片描述

1- rowkey: 行键, 类似于MySQL中每个表都会有主键, 同样类似于 kv类型中key
	在hbase中, 数据会默认进行排序操作, 排序的规则为基于rowkey进行字典升序排序
	
	例如: 1 3 15 2 13 25 请问, 如果按照字典升序排序, 结果是什么呢? 
		结果为:
			1 13 15 2 25 3
		规则: 先比较第一位, 如果第一位相同, 比较第二位, 没有第二位比有第二位的小, 依次类推
		
	查询方式:  
		第一种: 根据rowkey查询
		第二种: 根据rowkey的范围查询
		第三组: 查询全表数据

2- column family: 列族(列簇)
	在创建表的时候, 需要指定列族信息的, 一个表 是可以有多个列族
	在hbase中是基于列族管理和管理的, 一个表中建议列族不要太多了, 能少则少, 能用一个解决的, 坚决不用多个
	在一个列族下可以有多个列(列限定符号), 最大支持上百万个列

3- 列限定符号(列名): 一个列族下可以有多个列名, 但是一个列名只能被一个列族所管理, 列的数量可以达到上百万, 在建表的时候, 不需要指定的, 在插入数据的时候, 动态执行即可

4- timestamp(时间戳):  在hbase的表中, 每一个单元格的数据都是有时间戳的概念的, 默认 为插入数据的时间, 当然也可以人为指定

5- version(版本号): 在hbase中每一个单元格都是有版本号的概念的, 可以基于版本管理, 存储每一个单元格的历史变化信息
	默认版本号为1, 表示只保留最新的版本数据

6- cell(单元格):  rowkey + 列族 + 列名 + 列值


注意: 在建表的时候, 必须指定两项内容:  表名  + 列族
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值