Hbase 是由 Client、Zookeeper、Master、HRegionServer、HDFS 等几个组建组成。

Hbase架构图

1. Client

Client 包含了访问 Hbase 的接口,另外 Client 还维护了对应的 cache 来加速 Hbase 的访问,比如 cache 的.META.元数据的信息

2. Zookeeper

Hbase 通过 Zookeeper 来做 master 的高可用、RegionServer 的监控、元数据的入口
以及集群配置的维护等工作。具体工作如下:

  • ① 通过 Zoopkeeper 来保证集群中只有 1 个 master 在运行,如果 master 异常,会通过竞争机制产生新的 master 提供服务
  • ② 通过 Zoopkeeper 来监控 RegionServer 的状态,当 RegionSevrer 有异常的时候,通过回调的形式通知 Master RegionServer 上下文的信息
  • ③ 通过 Zoopkeeper 存储元数据的统一入口地址。

3. Hmaster

master 节点的主要职责如下:

  • ① 为 RegionServer 分配 Region
  • ② 维护整个集群的负载均衡
  • ③ 维护集群的元数据信息发现失效的 Region,并将失效的 Region 分配到正常RegionServer 上当 RegionSever 失效的时候,协调对应 Hlog 的拆分

4. HRegionServer

HRegionServer 直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下:

  • ① 管理 master 为其分配的 Region
  • ② 处理来自客户端的读写请求
  • ③ 负责和底层 HDFS 的交互,存储数据到 HDFS
  • ④ 负责 Region 变大以后的拆分
  • ⑤ 负责 Storefile 的合并工作

5. Region的寻址方式

Region的寻址方式 是通过 zookeeper.MATA 文件来处理

  • ① 第一步:Client 请求 ZK 获取.META.所在的 RegionServer 的地址。
  • ② 第二步:Client 请求.META.所在的 RegionServer 获取访问数据所在的 RegionServer 地址,client 会将.META.的相关信息 cache 下来,以便下一次快速访问。
  • ③ 第三步:Client 请求数据所在的 RegionServer,获取所需要的数据。

6. HDFS

HDFS 为 Hbase 提供最终的底层数据存储服务,同时为 Hbase 提供高可用(Hlog 存储在HDFS)的支持。