HBASE介绍 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第12天
上两节课我们学习了HDFS,HDFS是一种开源的分布式文件系统,基于常见商用硬件构建海量大规模存储集群,提供极低的存储成本,极大的存储容量支持。 HDFS提供高可靠性的数据保障,通常采用三副本冗余存储数据到不同的机器来实现容灾备份能力。 HBase基于HDFS实现存储计算分离架构的分布式表格存储服务
适用场景
什么是HBase?
HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一,参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写效率。采用存储计算分离架构,存储层基于HDFS存储数据,提供容错机制和高可靠性,计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力,提供强一致语义,在CAP理论中属于CP系统
HBase和关系型数据库的区别
两者的关系可以用以下这张图说明
HBase数据模型
HBase以列族(column family)为单位存储数据,以行键(rowkey)索引数据,一些概念名称可以用下表来解释
HBase数据模型-逻辑结构
HBase是半结构化数据模型。以列族(column family) 为单位存储数据,以行键(rowkey) 索引数据, 列族需要在使用前预先创建,列名(column qualifier) 不需要预先声明,因此支持半结构化数据模型 支持保留多个版本的数据,(行键+列族+列名+版本号) 定位一个具体值
HBase数据模型-物理结构
HBase的物理数据结构最小单元式KeyValue结构,每个版本的数据都携带全部行列信息,同一行,同一列族的数据物理上连续有序存储。同列族内的KeyValue按rowkey字典序升序,column qualifier升序,version降序排列,不同列族的数据存储在相互独立的物理文件,列族间不保证数据全局有序。同列族下不同物理文件间不保证数据全局有序,仅单个物理文件内有序
HBase的优缺点
架构设计
HBase的主要组件包括HMaster、RegionServer、ThriftServer,依赖组件包括Zookeeper、HDFS
Hmaster主要职责
Hmaster主要有以下职责:
-
管理RegionServer实例生命周期,保证服务可用性
-
协调RegionServer数据故障恢复,保证数据正确性
-
集中管理集群元数据,执行负载均衡等维护集群稳定性
-
定期巡检元数据,调整数据分布,清理废弃数据等
-
处理用户主动发起的元数据操作如建表、删表等
Hmaster主要组件
Hmaseter主要组件如下
RegionServer主要职责
RegionServer的主要职责基本上式提供部分rowkey区间数据的读写服务,如果负责meta表,向客户端SDK提供rowkey位置信息,认领HMaster发布的故障恢复任务,帮助加速数据恢复过程,处理HMaster下达的元数据操作,如region打开/关闭/分离/合并操作
ZooKeeper主要职责
ZooKeeper的主要职责主要包括HMaster登记信息,对activer/backup分工达成工事,RegionServer登记信息,失联时HMaster保活处理,登记meta表位置信息,供SDK查询读写位置信息,供HMaster和RegionServer协作处理分布式任务
大数据支撑
HBase在大数据生态的定位主要如下
可以预见HBase的定位还是很重要的
水平扩展能力
增加RegionServer实例,分配部分region到新实例,扩展过程平滑,无需搬迁实际数据,可用性影响时间很短,用户基本无感知
Region热点切分
当某个region数据量过多,切分成两个独立的子region分摊负载,RegionServer在特定时机检查region是否应该切分,计算切分点并RPC上报HMaster,由AssignmentManager负责执行RegionStateTansition,不搬迁实际数据,切分产生的新region数据目录下生成一个以原region文件信息命名的文件,内容是切分点对应的rowkey,以及标识新region是上/下半部分的数据