在HDFS中,数据块(Block)损坏是非常常见的硬件故障(如磁盘坏道、静默数据损坏/Bit Rot等)。HDFS 的设计初衷就是“默认硬件会出错”,因此它拥有一套非常完善的自动化机制来发现和修复损坏的数据块。 整个过程可以分为三个主要阶段:发现(Detection)、汇报(Reporting) 和 修复(Recovery/Repair)。 --- 第一阶段:如何“发现”数据块损坏? HDFS 发现数据损坏的核心技术是 校验和(Checksum)。 当客户端向 HDFS 写入数据时,HDFS 会为每 512 字节的数据计算一个校验和(通常是 CRC32),并将这些校验和单独保存在 DataNode 的 文件中,与真实的数据块文件放在一起。 发现损坏通常有两种途径: 1. 客户端读取时触发发现(被动发现) 过程:当客户端(Client)从 DataNode 读取数据块时,DataNode 会同时把数据和对应的校验和发送给客户端。客户端在接收数据时会重新计算校验和,并与 DataNode 发来的校验和进行对比。 发现异常:如果两者不一致,客户端就会知道这个数据块已经损坏。 处理:客户...