深入浅出 HBase 实战|青训营笔记

86 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第10天 image.png

1.1 什么是HBase ?

HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一。

参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写效率。

采用存储计算分离架构

  • 存储层基于HDFS存储数据,提供容错机制和高可靠性;
  • 计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力;

提供强一致语义,在CAP理论中属于CP系统。

▪️ Consistency, Availability, Partion Tolerance

1.2 HBase和关系型数据库的区别

截屏2022-08-06 15.50.55.png

1.3 HBase数据模型

HBase以列族(column family)为单位存储数据,以行键(rowkey) 索引数据。

1)列族需要在使用前预先创建,列名(column qualifier) 不需要预先声明,因此支持半结构化数据模型。

2)支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体的值。

截屏2022-08-06 15.52.31.png

1.3 HBase 数据模型-逻辑结构

➢HBase是半结构化数据模型。以列族(column family)为单位存储数据,以行键(rowkey) 索引数据。

1)列族需要在使用前预先创建,列名(column qualifier)不需要预先声明,因此支持半结构化数据模型。

2)支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体值。

截屏2022-08-06 15.54.02.png

➢通过非关系型视图理解HBase数据模型:

1)适合稀疏数据,缺省列不占用存储空间。

2)通过(rowkey, column family, column qualifier, version)

3)唯一指定一个具体的值。

4)允许批量读取多行的部分列族/列数据。

1.3 HBase数据模型 - 物理结构

➢物理数据结构最小单元是KeyValue结构:

1)每个版本的数据都携带全部行列信息。

2)同一行,同一列族的数据物理.上连续有序存储。

3)同列族内的KeyValue按rowkey字典序升序,column qualifier升序,version 降序排列。

4)不同列族的数据存储在相互独立的物理文件,列族间不保证数据全局有序。

5)同列族下不同物理文件间不保证数据全局有序。

6)仅单个物理文件内有序。

截屏2022-08-06 15.57.23.png

截屏2022-08-06 15.57.45.png