这是我参与「第四届青训营 」笔记创作活动的的第12天。本篇笔记对于8.2日王玮老师讲授的《深入浅出HBase实践》的内容做一个复习总结。
HBase适用场景
- 概念:开源的 NoSQL 分布式数据库,对稀疏表提供更高的存储空间使用率和读写效率。存算分离,基于 HDFS 存储数据。CAP 理论中的 CP 系统(一致性和分区容错性,牺牲可用性)
- HBase 和 关系型数据库的区别:HBase 无数据类型,半结构化,按列族稀疏存储,支持多版本数据,仅支持 rowkey主键索引
- HBase 数据模型:以列族组织数据,以行键( rowkey )索引数据
- 列族预先创建,列名可以不预先声明
- 行键+列族+列名+版本号 定位具体值
- 行键:唯一索引一行的主键,字典序组织,一行可以包含多个列族
- 列族:用于组织一系列列名,一个列族可以包含多个列名,每个列族的数据物理上相互独立存储,以支持按列读取
- 列名:对应一个具体的列,一个列名可以包含多个版本的数据,不需要预先定义列名(半结构化)
- 版本号:标识列内的不同版本数据
- 值
- 逻辑结构:有缺省,减少存储
- 物理结构:最小单元是 KeyValue 结构
- 每个版本数据携带全部行列信息
- 同一列族的数据物理连续存储,KeyValue 按 rowkey 字典升序排,column qualifier 升序,version 降序(最新版本)
- 列族间不一定有序,同列族仅单个物理文件有序
- 使用场景:
- “近在线”海量
- 写密集型、高吞吐
- 字典序主键索引、批量顺序扫描多行数据
- Hadoop 友好
- 半结构化,稀疏数据、动态增减列名
- 拓展性强,快速响应数据体量、容量
- 优缺点:(待补充)
HBase架构设计
- 主要组件:HMaster()、、
- 依赖组件:Zookeeper()、HDFS
大数据支持
- 水平扩展能力:
- 负载均衡策略:
- 故障恢复机制: