这是我参与「第四届青训营 」笔记创作活动的的第9天。
写在前面
即便有学习HBase理论的经验,真正掌握一个技术还是需要去进行实战,这次的笔记完成对原理的回顾和简单的实战使用,作为基于HDFS实现存储计算分离架构的分布式表格存储服务,值得学习和深入应用的探索。
笔记正文
1. 适用场景
什么是HBase
- 开源的NoSQL分布式数据库
- 参考Google BigTable
- 采用存储计算分离架构
- HDFS存储数据 提供容错机制和高可靠性
- 计算层提供灵活水平扩展、负载均衡、故障恢复
- CP系统 数据模型
- 列族(column family)为单位存储数据
- 行键(rowkey)索引数据
- 逻辑结构
- 适合稀疏数据,缺省列不占用存储空间
- 通过rowkey, column family, column qualifier, version唯一指定一个唯一值
- 允许批量读取多行部分列族/列数据
- 物理结构
- 物理数据结构最小单元是Key Value结构 使用场景
- 写密集、高吞吐应用、可接受一定程度的时延抖动
- 时序存储系统,典型场景如日志、监控数据存储如OpenTSDB
- KV/宽表存储,可PB级别以上
- 商家订单使用Hbase管理买家、买家的订单操作信息
- Facebook管理互动消息
- Hadoop大数据生态友好兼容
- 半结构化、行列洗数据分布、动态增减列名
- 基于HBase提供“近在线”读写的推荐候选数据集
- 字典序主键索引、批量顺序扫描多行数据的场景 优缺点
- 优点
- 稀疏表友好,不存储缺省列
- 保存多版本数据
- 只读取部分column family 数据
- 容易水平扩展
- 支持rowkey字典批量扫描数据
- 缺点
- 每个数据都存储冗余的行列信息
- 不支持二级索引,只能通过rowkey溯因,查询效率依赖rowkey的设计
- column family数量比较多的时候容易引发性能衰退
- 不支持数据类型,都是字节数组存储
- 仅支持但行内的原子性操作,没有跨行事务保障
2. 架构设计
HBase主要组件
- HMaster
- Region Server
- Trift Server HBase依赖组件
- ZooKeeper
- HDFS
3. 大数据支撑
To Be Continued...
4. 最佳实践
To Be Continued...