请解释 HDFS 在面对节点故障时的处理机制,特别是当一个 DataNode 发生失效时,系统会经历哪些步骤?
考察说明
考察对 HDFS 高可用和容错机制的理解,特别是 DataNode 故障检测和恢复流程。
回答思路
- 【回答框架 1】HDFS 的 DataNode 通过心跳机制向 NameNode 报告状态,默认每 3 秒发送一次心跳。如果 NameNode 连续 10 分钟没有收到某个 DataNode 的心跳,就会判定该节点失效。
- 【回答框架 2】DataNode 被判定失效后,NameNode 会将该节点上的所有块副本标记为不可用,并检查这些块的副本因子是否满足要求。若副本数不足,NameNode 会根据副本策略在其他节点上重新复制块,以保证数据冗余。
- 【回答框架 3】在重新复制过程中,NameNode 会优先选择负载较低、网络距离较近的节点,并考虑机架感知策略,避免副本集中在同一机架。复制操作由 NameNode 调度,DataNode 间直接传输数据,以减轻 NameNode 压力。
- 【回答框架 4】如果集群配置了 HA(高可用)模式,NameNode 的故障转移(Failover)也会用到类似的心跳和健康检查机制,但 DataNode 的失效处理本身不依赖 HA。
- 【关键点 1】DataNode 失效检测依赖心跳超时,默认超时时间为 10 分钟,可通过配置调整。
- 【关键点 2】NameNode 负责标记失效节点上的块副本,并调度复制,保证副本因子满足要求。
- 【关键点 3】重新复制时会考虑机架感知策略,确保数据可靠性和网络效率。
- 【易错点 1】误以为 DataNode 失效会立即触发复制,实际需要等待心跳超时,有一定延迟。
- 【易错点 2】忽略副本数不足时 NameNode 的复制调度,只提到心跳检测。
- 【易错点 3】将 DataNode 的失效处理与 NameNode 的 HA 故障转移混淆。