这是我参与「第四届青训营 」笔记创作活动的第10天,在第十节课中主要了解到了HBase有关的内容。
01 适用场景
什么是HBase
- 是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目之一
- 采用存储计算分离架构
- 存储层基于HDFS存储数据,提供容错机制和高可靠性
- 计算层提供灵活快速的水平拓展、负载均衡和故障恢复能力
- 提供强一致语义
HBase和关系型数据库的区别
HBase数据模型-逻辑结构
- HBase以列族为单位存储数据,以行键索引数据
- 列族需要在使用前预先创建,列名不需要预先声明,因此支持半结构化数据模型
- 支持保留多个版本的数据
HBase数据模型-物理结构
- 物理数据结构最小单元是KeyVakue结构
- 每个版本的数据都携带全部行列信息
- 同一行,同一列族的数据物理上连续有序存储
- 同列族内的KeyValue按rowkey字典序升序
- 不同列族的数据存储在相互独立的物理文件,列族间不保证数据全局有序
- 同列族下不同物理文件间不保证数据全局有序
- 仅单个物理文件内有序
使用场景
- 半结构化/字典序有序索引的数据
- “近在线”海量分布式KV/宽表存储
- 写密集型的高吞吐场景
HBase数据模型的优缺点
02 架构设计
HBase架构设计
主要组件:
- HMaster,RegionServer,ThriftServer 依赖组件:
- Zookeeper:分布式一致性共识协作管理
- HDFS:分布式文件系统,HBase数据存储底座
HMaster-主要组件
ZooKeeper主要职责
- HMaster登记信息
- RegionServer登记信息
- 登记meta表位置信息
- 共HMaster和RegionServer协作处理分布式任务
03 大数据支撑
- 热点切分避免数据分布倾斜带来的性能瓶颈
- 碎片整合清理过小的数据分片来维持元数据在合理的形态
- 负载均衡通过巡检调度各实例负载来避免性能瓶颈及优化集群资源利用率
04 最佳实践
- 根据查询模式选择合适的rowkey设计