面试题答案
一键面试1. 故障检测
- 关键组件:Master。Master通过心跳机制与RegionServer保持联系,若在一定时间内未收到RegionServer的心跳,Master判定该RegionServer发生故障。
2. 资源释放与状态标记
- 关键组件:ZooKeeper、Master。RegionServer故障后,ZooKeeper中该RegionServer对应的znode节点消失,Master检测到节点消失,标记该RegionServer为宕机状态,并释放相关资源,如RegionServer占用的端口等。
3. Region重新分配
- 关键组件:Master。Master会将故障RegionServer上承载的Regions重新分配到其他正常的RegionServer上。Master根据集群负载均衡算法,综合考虑各RegionServer的负载情况(如内存使用、磁盘I/O等),确定每个Region的新归属。
4. WAL(Write-Ahead Log)恢复
- 关键组件:HLog(WAL日志)、RegionServer。
- 操作步骤:
- 每个RegionServer都有一个HLog,记录了所有对该RegionServer上Regions的写操作。故障RegionServer上的HLog会被拆分,每个Region对应一部分日志。
- 新接手故障RegionServer上Regions的RegionServer会从HDFS上读取对应的HLog片段。
- 按照HLog记录的操作顺序,对每个Region进行重放操作,将未持久化到StoreFile中的数据恢复,确保数据一致性。
5. 数据同步与一致性修复
- 关键组件:RegionServer。新接手Region的RegionServer可能会与其他RegionServer进行数据同步操作,以修复可能存在的一致性问题。例如,在故障发生前,部分数据可能已经写入到MemStore但还未flush到磁盘,新RegionServer需要确保这些数据与其他副本保持一致。这可能涉及到与其他RegionServer进行数据版本比对、合并等操作,最终保证整个集群数据的一致性和完整性。