1.查看集群节点状态
hdfs dfsadmin -report # 显示所有DataNode状态(存活/宕机/存储利用率) 输出中标记为 Dead 或 Decommissioning 的节点为异常节点。
2.分析监控指标
通过Prometheus/Grafana监控平台检查节点资源(CPU、内存、磁盘IO)及网络延迟,锁定异常指标突增的节点。
1.编辑排除列表文件
在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 状态,停止接收新数据写入。
1.停止DataNode服务
hadoop-daemon.sh stop datanode # 终止故障节点的DataNode进程 2.停止NodeManager服务
yarn-daemon.sh stop nodemanager # 停止YARN计算服务,避免任务调度至该节点1.检查数据块完整性
hdfs fsck / -list-corruptfileblocks # 列出受损数据块,触发自动副本修复2.手动触发数据均衡(可选)
hdfs balancer -threshold 10 # 启动Balancer,将故障节点数据迁移至健康节点(阈值默认10%)1.确认下线进度
hdfs dfsadmin -report | grep -A 3 "Decommission Status" # 查看数据迁移进度:Decommissioned。2.硬件修复后重新上线
excludes 文件中移除节点主机名,再次执行 hdfs dfsadmin -refreshNodes。hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager 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:针对多磁盘节点优化存储分布,避免单盘故障引发写入阻塞。