HDFS容错机制通过数据冗余、故障检测与恢复、元数据管理等多方面设计实现,具体如下:
- 数据冗余:将文件切分为固定大小的数据块(默认128MB),每个块默认复制3份并存储在不同节点,副本分布遵循机架感知策略(跨机架存储,避免单点故障)。
- 心跳与故障检测:DataNode定期向NameNode发送心跳信号和块报告,NameNode通过心跳超时判断节点故障,并标记失效节点的副本为丢失。
- 自动恢复:NameNode触发副本重建,从健康节点复制丢失副本到其他节点,恢复默认副本数(3份),过程对用户透明。
- 元数据管理:
- 高可用性:采用主备NameNode(Active/Standby)架构,通过共享存储(如JournalNode)同步元数据,故障时快速切换。
- 快照与日志:通过FsImage和EditLog记录元数据状态,支持故障回滚和一致性恢复。
- 数据一致性:采用“一次写入、多次读取”模型,写入时校验数据块完整性,读取时通过校验和检测损坏块并自动从副本恢复。
- 客户端容错:写入时支持重试机制,读取时自动切换副本,确保数据可靠访问。