HBase的容错机制

一、HBase系统架构图

HBase的容错机制

        先来认识以下HBase是如何操作数据的。

        读数据:Client首先向ZK发送读取数据的请求,ZK返回HRegion的元数据信息给Client,元数据信息包括数据HRgion所在的HRegionServer位置信息,数据的rowkey信息等;Client带着元数据信息请求对应的HRegionServer,HRegionServer返回相应的数据给Client;

        写操作:Client首先向ZK发送写数据的请求,ZK返回HRegion的元数据信息给Client,Client根据元数据信息请求对应的HRegionServe(因为HRegion根据RowKey排序);开始写操作,先将写操作的记录写到HLog上(WAL),HLog写成功了,开始向MemStore上写数据,当MemStore写成功,就返回成功信息给Client。写入数据给MemStore过程中,当达到阈值时,会分割成一个个StoreFile,当StoreFile需要写到HDFS进行高可用时,会以HFile的形式传过去。

二、HBase容错

ZK作用

        ZK协调集群所有节点的共享信息,再HMaster和HRegionServer连接到ZK后,创建Ephemeral节点(属于临时节点),并使用HeartBeat机制维持这个节点的存活状态,如果某个HRegionServer失效,则HMaster就会收到通知,并做相应的处理,包括将失效的HRegionServer上的HLog,以及所有HRegion数据平衡分配到还存活的HRegionServer上。

HMaster容错

        ZK负责从新选择一个新的HMaster。注意一点:HMaster失效的时候,数据读取和写入仍然可以进行,但是HRegion的切分,负载均衡等无法进行

HRegionServer容错

        定时向ZK汇报心跳,一旦设定时间内没有出现心跳,HMaster就会将失效的HRegionServer上的所有HRegion数据重新分配到其他存活的HRegionServer上,失效HRegionServer上的HLog由HMaster进行分割,并派发给新的HRegionServer。