一、什么是HBase?

HBase是一个基于HDFS之上的分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable大表”,即:把所有的数据存入一张表中。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了相似于Bigtable的能力。HBase是Apache的Hadoop我的项目的子项目。HBase不同于个别的关系数据库,它是一个适宜于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

二、HBase的体系架构

HBase是由三种类型的服务器以主从模式形成的。这三种服务器别离是:HBase HMaster,Region server,ZooKeeper。

  • HBase HMaster负责Region的调配及数据库的创立和删除等操作。具体来说,HMaster的职责包含:
  1. HMaster负责region的调配。
  2. 调控Region server的工作
  3. 在集群启动的时候调配region,依据复原服务或者负载平衡的须要重新分配region。
  4. 监控集群中的Region server的工作状态。
  5. 治理数据库。提供创立,删除或者更新表格的接口。
  • Region server负责数据的读写服务。用户通过沟通Region server来实现对数据的拜访。

具体来说,RegionServer上存在若干个Region。HBase中的表是依据row key的值程度宰割成所谓的region的。一个region蕴含表中所有row key位于region的起始键值和完结键值之间的行。每一个region的默认大小为1GB。集群中负责管理Region的结点叫做Region server。Region server负责数据的读写。每一个Region server大概能够治理1000个region。

  • ZooKeeper负责保护集群的状态(某台服务器是否在线,服务器之间数据的同步操作及master的选举等)。HBase中ZooKeeper的职责蕴含:
  1. 保护HBase服务器是否存活
  2. 监控HBase服务器是否可拜访的状态
  3. 提供服务器故障/宕机的告诉
  4. 同时还应用一致性算法来保障服务器之间的同步。
  5. 同时也负责Master选举的工作。
  6. 须要留神的是要保障良好的一致性及顺利的Master选举,集群中的服务器数目必须是奇数,例如三台或五台。

三、HBase的表构造

每一行有一个RowKey用于惟一地标识和定位行,各行数据按RowKey的字典序排列。其中ImployeeBasicInfoCLF和DetailInfoCLF是两个列族,列族下又有多个具体列。(员工根本信息列族:姓名、年龄。详细信息列族:薪水、角色)。

HBase数据模型

  • 命名空间:命名空间是对表的逻辑分组,不同的命名空间相似于关系型数据库中的不同的Database数据库。利用命名空间,在多租户场景下可做到更好的资源和数据隔离。
  • 表:对应于关系型数据库中的一张张表,HBase以“表”为单位组织数据,表由多行组成。
  • 行:由一个RowKey和多个列族组成,一个行有一个RowKey,用来惟一标示。
  • 列族:每一行由若干列族组成,每个列族下可蕴含多个列,如上ImployeeBasicInfoCLF和DetailInfoCLF即是两个列族。列族是列共性的一些体现。留神:物理上,同一列族的数据存储在一起的。
  • 列限定符:列由列族和列限定符惟一指定,像如上的name、age即是ImployeeBasicInfoCLF列族的列限定符。
  • 单元格:单元格由RowKey、列族、列限定符惟一定位,单元格之中寄存一个值(Value)和一个版本号。
  • 工夫戳:单元格内不同版本的值按工夫倒序排列,最新的数据排在最后面