在 Linux 环境下排查 HDFS(Hadoop Distributed File System)故障,通常可以遵循**“由面到点、由服务到数据”**的思路。下面是一套比较系统和实用的排查方法。
jps
重点关注:
NameNodeDataNodeSecondaryNameNode(或 JournalNode / ZKFC,取决于 HA)ResourceManager / NodeManager(YARN)如果某个进程不存在:
# 查看启动日志
tail -n 200 $HADOOP_HOME/logs/hadoop-*-namenode-*.log
hdfs dfsadmin -report
重点关注:
hdfs fsck / -files -blocks -locations
常见问题:
MISSING 块(数据丢失)CORRUPT 块(损坏)UNDER_REPLICATED简单检查:
hdfs fsck / -list-corruptfileblocks
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
$HADOOP_HOME/logs/hadoop-*-namenode-*.log
$HADOOP_HOME/logs/hadoop-*-datanode-*.log
常见错误:
Disk failedBlock token expiredCannot lock storageIOExceptionnetstat -tnlp | grep java
# 或
ss -tnlp | grep 9000
常见端口:
ping datanode-host
telnet datanode-host 9866
df -h
ls -ld /data/hdfs/dn
确保:
hdfs 或运行用户700dmesg | grep error
smartctl -a /dev/sdX
core-site.xmlhdfs-site.xmlworkers / slavesdate
建议:
ntpdate ntp.server.com
# 或
systemctl status chronyd
http://namenode:9870
http://datanode:9864| 现象 | 可能原因 | 排查点 |
|---|---|---|
| DataNode 不在线 | 网络/磁盘/权限 | 日志 + df |
| 块丢失 | 磁盘坏/误删 | fsck |
| NameNode 起不来 | 元数据损坏 | namenode log |
| 写入慢 | 磁盘/网络 | iostat, sar |
| HA 切换失败 | ZK / 时钟 | zkCli, date |
如果你有具体的报错信息或现象(比如某条日志、某个命令输出),可以直接发出来,我可以帮你更精准定位。