一.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:上面已经提过