HBase的原理与实战——原理篇 | 青训营笔记

152 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第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...