初识Hbase

  • 什么是Hbase
  • Hbase原理
  • Hbase数据模型
  • Hbase逻辑结构
  • Hbase物理存储结构
  • Hbase数据模型
  • Hbase基本架构


什么是Hbase

HBase 是一个高可靠性、高性能、面向列、支持海量数据存储的 NoSQL 数据库。
Hbase官网: Hbase

Hbase原理

Hbase数据模型

HBase表 = multi-dimensional map (多维度的Map: kv键值对)。

Hbase逻辑结构

逻辑结构如下图所示:

hbase 列簇 表 hbase中列和列族的关系图_hbase 列簇 表

  • 列和列族:HBase中列分组形成列族。列族的所有列成员都具有相同的前缀。列族必须在模式定义时预先声明,而列不需要在模式定义时定义,但可以在表启动和运行时动态变化。
  • Row key:唯一,相当于主键ID。
  • Region和Store:每个列族对应一个Region中的Store,Store分为1个MemStore和多个SotreFile,那么一个表如果有多个列簇,那必然会有增加Region中的Store的数量。

Hbase物理存储结构

hbase 列簇 表 hbase中列和列族的关系图_命名空间_02

Hbase数据模型

  • 命名空间:Name Space。与关系数据库系统中的数据库类似的表的逻辑分组,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是HBase和default,HBase中存放的是HBase内置的表,default 表是用户默认使用的命名空间。
  • 行:Row。HBase表中的每行数据都由一个Row key和多个列组成,数据是按照 Row key的字典顺序存储的,并且查询数据时只能根据Row key进行检索,所以 Row key的设计十分重要。
  • 列:Column。HBase中的每个列都由Column Family(列族)和 Column Qualifier(列限定符)进行限定,只需指明列族,而列限定符无需预先定义。
  • 时间戳:Time Stamp。用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入HBase的时间。
  • Region :Region是HBase数据管理的基本单位,Region有一点像关系型数据的分区。Region中存储着用户的真实数据,而为了管理这些数据,HBase使用了Region Sever来管理Region。
  • 单元格:Cell。由{Row key, column Family:column Qualifier, time Stamp} 唯一确定的单元。Cell中的数据是没有类型的,全部是字节码形式存储。

Hbase基本架构

hbase 列簇 表 hbase中列和列族的关系图_数据_03

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