看图理解HBase-1.HBase组件角色和交互

一.Client

1.角色

  • 普通API(get、put、delete等)
  • Admin API(create、alter、compact等)

2.交互

  • 与Zookeeper
    • 第一次读写数据,需要从Zookeeper获取Meta表所在的RegionServer。
    • Zookeeper会将(RegionServer、Master)的状态变化通知给客户端(HBase client is smart client)
  • 与Master:这里没有画,但在使用Admin API(例如建表)时,实际上是对Master进行操作。
  • 与RegionServer:读写数据。

二.Zookeeper

1.角色

  • 分布式配置中心:记录Meta表、Region Server列表(死活)、Region迁移状态等等

例如,下面是Zookeeper中记录的backup Master。

例如,下面是Zookeeper中记录的Region Server列表配置。

  • 心跳检测:心跳检测Region Server和Master的状态

  • 领导者选举:active master和backup master的选举。

2.交互

  • 与Master:

    • active master和backup master会通过zookeeper完成选举,从而保证master的高可用性。
    • master会从zookeeper中获取Region Server的上下线等信息(zookeeper Listener),之后Master完成如Region Server故障恢复、Region分配,负载均衡等工作。
    • Zookeeper会对master做心跳检测。
  • 与Region Server:

    • 上下线的感应:对Region Server进行心跳检测。
  • 与client:上面已经提到。

  • 与HDFS:尚不清楚如何进行交互。

三.Region Server

1.职责

  • 存放数据:所有的读写都在这里完成,对机器性能有一定的要求。
  • 管理数据:flush、compact、split等

2.交互

  • Master: 上报一些统计信息(例如请求量等等,通过master可以查到整个集群的汇总信息)和管理操作(例如compact split等等)
  • 客户端: 上面已经提过
  • zoookeeper: 上面已经提过

四.Master

1.职责

大脑,但是不承担读写,对机器要求一般,但要求高可用性。

  • 负载均衡
  • Region Server故障恢复
  • Table管理(create、alter)、Region管理(split、assign等)

2.交互

  • 与HDFS:

    • 存储数据:Region Server除了Memstore和blockcache对外提供读写外,实际上底层数据存储在HDFS上,包含Hfile和Hlog等。(通过flush、WAL)
  • 与Zookeeper:上面已经提过

  • 与RegionServer:管理Region Server
  • 与client:上面已经提过