HBASE介绍 | 青训营笔记

127 阅读4分钟

HBASE介绍 | 青训营笔记

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

上两节课我们学习了HDFS,HDFS是一种开源的分布式文件系统,基于常见商用硬件构建海量大规模存储集群,提供极低的存储成本,极大的存储容量支持。 HDFS提供高可靠性的数据保障,通常采用三副本冗余存储数据到不同的机器来实现容灾备份能力。 HBase基于HDFS实现存储计算分离架构的分布式表格存储服务

适用场景

什么是HBase?

HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一,参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写效率。采用存储计算分离架构,存储层基于HDFS存储数据,提供容错机制和高可靠性,计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力,提供强一致语义,在CAP理论中属于CP系统

HBase和关系型数据库的区别

两者的关系可以用以下这张图说明

image.png

HBase数据模型

HBase以列族(column family)为单位存储数据,以行键(rowkey)索引数据,一些概念名称可以用下表来解释

image.png

HBase数据模型-逻辑结构

HBase是半结构化数据模型。以列族(column family) 为单位存储数据,以行键(rowkey) 索引数据, 列族需要在使用前预先创建,列名(column qualifier) 不需要预先声明,因此支持半结构化数据模型 支持保留多个版本的数据,(行键+列族+列名+版本号) 定位一个具体值

HBase数据模型-物理结构

HBase的物理数据结构最小单元式KeyValue结构,每个版本的数据都携带全部行列信息,同一行,同一列族的数据物理上连续有序存储。同列族内的KeyValuerowkey字典序升序,column qualifier升序,version降序排列,不同列族的数据存储在相互独立的物理文件,列族间不保证数据全局有序。同列族下不同物理文件间不保证数据全局有序,仅单个物理文件内有序

HBase的优缺点

image.png

架构设计

HBase的主要组件包括HMaster、RegionServer、ThriftServer,依赖组件包括Zookeeper、HDFS

Hmaster主要职责

Hmaster主要有以下职责:

  • 管理RegionServer实例生命周期,保证服务可用性

  • 协调RegionServer数据故障恢复,保证数据正确性

  • 集中管理集群元数据,执行负载均衡等维护集群稳定性

  • 定期巡检元数据,调整数据分布,清理废弃数据等

  • 处理用户主动发起的元数据操作如建表、删表等

Hmaster主要组件

Hmaseter主要组件如下

image.png

RegionServer主要职责

RegionServer的主要职责基本上式提供部分rowkey区间数据的读写服务,如果负责meta表,向客户端SDK提供rowkey位置信息,认领HMaster发布的故障恢复任务,帮助加速数据恢复过程,处理HMaster下达的元数据操作,如region打开/关闭/分离/合并操作

ZooKeeper主要职责

ZooKeeper的主要职责主要包括HMaster登记信息,对activer/backup分工达成工事,RegionServer登记信息,失联时HMaster保活处理,登记meta表位置信息,供SDK查询读写位置信息,供HMaster和RegionServer协作处理分布式任务

大数据支撑

HBase在大数据生态的定位主要如下

image.png

可以预见HBase的定位还是很重要的

水平扩展能力

增加RegionServer实例,分配部分region到新实例,扩展过程平滑,无需搬迁实际数据,可用性影响时间很短,用户基本无感知

Region热点切分

当某个region数据量过多,切分成两个独立的子region分摊负载,RegionServer在特定时机检查region是否应该切分,计算切分点并RPC上报HMaster,由AssignmentManager负责执行RegionStateTansition,不搬迁实际数据,切分产生的新region数据目录下生成一个以原region文件信息命名的文件,内容是切分点对应的rowkey,以及标识新region是上/下半部分的数据