面试题答案
一键面试主要步骤
- Master感知故障:RegionServer会定期向Master发送心跳消息。当RegionServer出现故障时,Master在一段时间内收不到心跳,就会感知到该RegionServer发生故障。
- 停止相关操作:Master会立即停止向故障的RegionServer分配新的任务,并标记该RegionServer为不可用。
- Region重新分配:Master负责将故障RegionServer上承载的Region重新分配到其他可用的RegionServer上。Master从ZooKeeper中获取可用RegionServer的列表,并根据负载均衡算法选择合适的RegionServer来承载这些Region。
- Region恢复:新接手的RegionServer从HDFS中读取该Region的WAL(Write - Ahead Log)文件,按照日志记录的操作顺序重新应用到MemStore中,然后将MemStore中的数据Flush到HFile中,完成Region数据的恢复,使其恢复到故障前的状态。
关键组件
- Master:作为HBase的主服务器,负责监控RegionServer的状态,在RegionServer故障时,承担着Region重新分配的关键职责。它管理着集群的元数据,包括Region的分配信息等,确保系统在故障后能重新达到均衡和可用状态。
- RegionServer:故障发生时,其上的Region服务停止。而其他正常的RegionServer则负责接收并恢复从故障RegionServer转移过来的Region,通过重放WAL日志来恢复Region的状态。
- ZooKeeper:保存了HBase集群的元数据和RegionServer的状态信息。Master通过ZooKeeper来获取可用RegionServer列表,为故障Region的重新分配提供依据。同时,ZooKeeper也保证了Master的高可用性,在Master故障时协助选举出新的Master。
- HDFS:用于持久化存储Region数据以及WAL日志。在RegionServer故障恢复过程中,新的RegionServer从HDFS读取WAL日志,用于恢复Region到故障前的状态。HDFS的可靠性和数据持久性确保了即使RegionServer发生故障,数据也不会丢失。