Hadoop集群故障节点隔离操作指南
一、确认故障节点状态
-
查看集群节点状态
hdfs dfsadmin -report # 显示所有DataNode状态(存活/宕机/存储利用率)
输出中标记为 Dead
或 Decommissioning
的节点为异常节点。
2.分析监控指标
通过Prometheus/Grafana监控平台检查节点资源(CPU、内存、磁盘IO)及网络延迟,锁定异常指标突增的节点。
二、下线故障节点
-
编辑排除列表文件
在NameNode的 hdfs-site.xml
配置文件中指定 dfs.hosts.exclude
路径:
<property> <name>dfs.hosts.exclude</name> <value>/etc/hadoop/conf/excludes</value>
</property>
将故障节点主机名添加到 excludes
文件中:
echo "failed-datanode-hostname" >> /etc/hadoop/conf/excludes
2.触发节点下线
hdfs dfsadmin -refreshNodes # 强制NameNode重新加载排除列表,触发节点下线:
执行后,故障节点进入 Decommissioning
状态,停止接收新数据写入。
三、终止故障节点服务
-
停止DataNode服务
hadoop-daemon.sh stop datanode # 终止故障节点的DataNode进程
2.停止NodeManager服务(如适用)
yarn-daemon.sh stop nodemanager # 停止YARN计算服务,避免任务调度至该节点
四、数据恢复与负载均衡
-
检查数据块完整性
hdfs fsck / -list-corruptfileblocks # 列出受损数据块,触发自动副本修复
2.手动触发数据均衡(可选)
hdfs balancer -threshold 10 # 启动Balancer,将故障节点数据迁移至健康节点(阈值默认10%)
五、验证与后续处理
-
确认下线进度
hdfs dfsadmin -report | grep -A 3 "Decommission Status" # 查看数据迁移进度:
- 当迁移完成时,节点状态变为
Decommissioned
。
2.硬件修复后重新上线
- 从
excludes
文件中移除节点主机名,再次执行hdfs dfsadmin -refreshNodes
6。 - 启动服务:
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
六、高可用场景补充操作
- 切换备用NameNode(HA架构)
hdfs haadmin -failover active-namenode standby-namenode # 主NameNode故障时手动触发切换
关键配置优化建议
- 调整心跳检测参数:缩短检测间隔以快速发现故障(示例配置):
<!-- hdfs-site.xml -->
<property> <name>dfs.namenode.heartbeat.recheck-interval</name> <value>300000</value> <!-- 5分钟检测间隔 -->
</property>
<property> <name>dfs.heartbeat.interval</name> <value>3</value> <!-- 3秒心跳频率 -->
</property>
```:ml-citation{ref="6" data="citationList"}
启用磁盘级Balancer:针对多磁盘节点优化存储分布,避免单盘故障引发写入阻塞。