请描述 HDFS 中保证数据一致性的核心机制,并阐述当出现故障(如节点宕机或网络分区)时,系统采取哪些步骤来恢复数据一致性?
考察说明
考查对 HDFS 一致性模型及故障恢复机制的理解。
回答思路
- 【回答框架 1】HDFS 采用写后读一致性模型,通过 NameNode 管理元数据,DataNode 存储数据块。写入时,客户端先写本地临时文件,完成后通过 RPC 通知 NameNode,NameNode 记录块信息,并等待所有副本写入完成才返回成功,确保写入后的数据对所有读者可见。
- 【回答框架 2】故障恢复依赖副本冗余和块报告机制。DataNode 周期性向 NameNode 发送块报告,NameNode 检测到副本数不足时,调度复制任务从健康副本复制数据,恢复副本因子。
- 【回答框架 3】网络分区或节点故障时,NameNode 通过租约机制管理写操作,防止多个客户端同时写同一文件。若租约过期,NameNode 强制回收租约,并触发块恢复流程,将最后一个块复制到新节点,保证数据一致性。
- 【回答框架 4】对于已提交但未完全复制的数据块,NameNode 在启动时进行安全模式检查,统计各块的副本数,若低于阈值,则自动恢复复制,直到满足最小副本要求。
- 【关键点 1】写后读一致性:所有副本写入成功后才返回。
- 【关键点 2】副本因子与块报告:保证副本数不低于设定值。
- 【关键点 3】租约机制:确保同一时刻只有一个写者。
- 【关键点 4】安全模式和块恢复:启动时检查并补充缺失副本。
- 【易错点 1】不能保证所有副本同时写入,但读操作只读已提交的数据。
- 【易错点 2】租约超时可能造成写冲突,需正确处理。
- 【易错点 3】故障恢复期间可能短暂不一致,但最终一致。