面试题答案
一键面试- 故障检测:
- HMaster会定期通过心跳机制与各个RegionServer进行通信。当RegionServer发生故障时,它无法再向HMaster发送心跳,HMaster在超过一定时间(通常是默认的心跳超时时间)未收到心跳后,就会检测到该RegionServer故障。
- Region转移:
- HMaster负责重新分配发生故障的RegionServer上承载的Region。
- HMaster首先从Zookeeper中获取该故障RegionServer上所有Region的元数据信息,这些元数据记录了Region的位置、状态等关键信息。
- 然后,HMaster根据集群中其他RegionServer的负载情况,选择合适的RegionServer来接管这些Region。负载情况通常通过CPU使用率、内存使用情况、已承载Region数量等指标衡量。
- 数据恢复:
- 新接管Region的RegionServer从HDFS中读取该Region的相关数据文件(HFile等)。HDFS具有高可靠性和数据冗余机制,即使RegionServer故障,数据也不会丢失。
- RegionServer会根据预写日志(WAL,Write - Ahead Log)来恢复在故障发生时可能未完全持久化到HFile中的数据变更。RegionServer会重放WAL日志,将其中记录的操作应用到从HDFS读取的数据上,从而恢复到故障前尽可能近的状态。
- 集群状态更新:
- HMaster更新集群的元数据信息,将故障RegionServer上Region的新分配信息记录到HBase的元数据表(.META.表)中。
- 同时,通知客户端关于Region位置的变化,客户端后续请求就会被路由到新的RegionServer上,集群恢复正常服务。