在HBase中,当RegionServer发生故障时,系统采用哪些机制来完成故障恢复?这些机制如何共同保证数据不丢失?请说明具体流程。
考察说明
考察对HBase高可用与数据可靠性保障机制的理解。
回答思路
- 【回答框架 1】HBase依赖HDFS提供底层数据冗余,RegionServer写入的数据首先写入HLog(Write-Ahead Log)与MemStore,MemStore flush成HFile后由HDFS多副本存储,从物理层面防止数据丢失。
- 【回答框架 2】当RegionServer故障时,Master通过ZooKeeper的会话超时感知其下线,将故障服务器上的Region重新分配到其他可用RegionServer,并依据HLog进行回放,恢复MemStore中的未持久化数据。
- 【回答框架 3】HLog本身也由HDFS多副本存储,回放过程从HDFS读取WAL,按Region切分后并行重放,确保已提交事务能够被恢复。
- 【回答框架 4】HBase还提供Region的持久化保证:写入成功需先追加HLog成功,再更新MemStore,从而在故障时能够从WAL恢复数据。
- 【回答框架 5】同时,HBase的Master自身有备机机制,通过ZooKeeper选举确保Master故障时也能快速切换,维持集群管理能力。
- 【关键点 1】HLog(WAL)与HDFS副本是HBase数据不丢失的核心保障
- 【关键点 2】RegionServer故障后由Master重新分配Region并回放HLog恢复数据
- 【关键点 3】ZooKeeper负责检测故障并辅助Master选举,确保故障恢复流程进行
- 【易错点 1】HLog回放不能保证跨Region的分布式事务一致性,HBase本身事务粒度有限
- 【易错点 2】故障恢复时间受WAL回放量影响,数据量大时恢复可能较慢