深入浅出HBase | 青训营笔记

80 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

  1. HBase介绍 1.1 HBase定义 HBase是一个开源的NoSQL分布式数据库,参考Google BigTable的设计,对稀疏表提供更高的存储空间使用率和读写率。采用存储计算分离架构:
  • 存储层基于HDFS存储数据,提供容错机制和高可靠性。
  • 计算层提供灵活快速的水平扩展、负载均衡和故障恢复能力。

1.2 HBase 数据模型 逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。 HBase以列族(column family)为单位,以行键(rowkey)索引数据。

  • 列族需要在使用前预先创建,列名(column qualifier)不需要预先声明,因此支持半结构化数据模型。
  • 支持保留多个版本的数据,(行键+列族+列名+版本号)定位一个具体的值。 1.3 HBase数据模型的优缺点 优点:
  • 稀疏表友好,不存储缺省列,支持动态新增列类型
  • 支持保存多版本数据
  • 支持只读取部分column family的数据,避免读取不必要的数据
  • 支持的数据规模相比传统关系型数据库更高,更容易水平扩展
  • 支持rowkey字典序批量扫描数据 缺点:
  • 每条数据都要冗余存储行列信息
  • 不支持二级索引,只能通过rowkey索引,查询效率依赖rowkey设计
  • column family数量较多时可能引发性能衰退
  • 不支持数据类型,一律按字节数组存储
  • 仅支持单行内的原子性操作,无跨行事务保障
  1. HBase架构 2.1 HBase组件 2.1.1 Region Server
  • Region Server 为 Region 的管理者,其实现类为 HRegionServer,主要作用如下:
  • 对于数据的操作:get, put, delete;
  • 对于 Region 的操作:splitRegion、compactRegion。 2.1.2 Master Master 是所有 Region Server 的管理者,其实现类为 HMaster,主要作用如下:
  • 对于表的操作:create, delete, alter
  • 对于 RegionServer的操作:分配 regions到每个RegionServer,监控每个 RegionServer的状态,负载均衡和故障转移。