Hbase各个组件以及底层架构详细介绍-大萝卜博客网

简介

hbase是bigtable的开源java版本。是建立在hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写nosql的数据库系统。
它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。

对比传统数据表

  • 传统数据表:
Hbase各个组件以及底层架构详细介绍-大萝卜博客网 Hbase各个组件以及底层架构详细介绍-大萝卜博客网
Hbase各个组件以及底层架构详细介绍-大萝卜博客网
  • hbase表
    Hbase各个组件以及底层架构详细介绍-大萝卜博客网

HBASE底层原理

  • 系统架构
    Hbase各个组件以及底层架构详细介绍-大萝卜博客网
  • Client的作用
  • 包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如regione的位置信息。
  • Zookeeper的作用
  • 保证任何时候,集群中只有一个master
  • 存贮所有Region的寻址入口
  • 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
  • 存储Hbase的schema,包括有哪些table,每个table有哪些column family
  • Master的作用
  • 1 为Region server分配region
  • 2 负责region server的负载均衡
  • 3 发现失效的region server并重新分配其上的region
  • 4 HDFS上的垃圾文件回收
  • 5 处理schema更新请求
  • Region Server的作用
  • Region server维护Master分配给它的region,处理对这些region的IO请求
  • Region server负责切分在运行过程中变得过大的region
  • 可以看到,client访问hbase上数据的过程并不需要master参与(寻址访问zookeeper和region server,数据读写访问regione server),master仅仅维护者table和region的元数据信息,负载很低。

HBase特征简要

  • 海量存储

Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。

  • 列式存储

这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。

  • 极易扩展

Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。
通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。

备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。

  • 高并发

由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。

  • 稀疏

稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。