1. Hbase数据模型

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

2. 逻辑结构

02. Hbase数据模型 - 图1

3. 物理结构

一个store存储模型

02. Hbase数据模型 - 图2

它是一个多维度的映射模型,一个rowkey对应着多个列名 映射到一个value上 如有多相同rowkey和列映射多值 则以timestamp最新的为准

4. 数据模型

  1. Name Space
    命名空间,类似于关系型数据库的DatabBase概念

  2. Region
    类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,不需要声明具体的列。往HBase写入数据时,字段可以动态、按需指定

  3. Row
    HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。

  4. Column
    HBase中的每个列都由Column Family(列族)和Column Qualifier(列限定符)进行限定

  5. Time Stamp
    用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入HBase的时间。

  6. Cell
    {rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell中的数据是没有类型的,全部是字节数组形式存贮。

5. 基本架构

02. Hbase数据模型 - 图3

架构角色

  1. Region Server
    Region Server为 Region的管理者,其实现类为HRegionServer,主要作用如下:
    对于数据的操作:get, put, delete;
    对于Region的操作:splitRegion、compactRegion。
  2. Master
    Master是所有Region Server的管理者,其实现类为HMaster,主要作用如下:
    对于表的操作:create, delete, alter
    对于RegionServer的操作:分配regions到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。
  3. Zookeeper
    HBase通过Zookeeper来做Master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。
  4. HDFS
    HDFS为HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持。