温馨提示×

linux hdfs如何排查故障

小樊
32
2026-10-04 13:58:50
栏目: 智能运维

在 Linux 环境下排查 HDFS(Hadoop Distributed File System)故障,通常可以遵循**“由面到点、由服务到数据”**的思路。下面是一套比较系统和实用的排查方法。


一、先确认 Hadoop 服务状态

1. 查看进程是否启动

jps

重点关注:

  • NameNode
  • DataNode
  • SecondaryNameNode(或 JournalNode / ZKFC,取决于 HA)
  • ResourceManager / NodeManager(YARN)

如果某个进程不存在:

# 查看启动日志
tail -n 200 $HADOOP_HOME/logs/hadoop-*-namenode-*.log

二、使用 HDFS 自带命令排查

1. 检查 HDFS 总体状态

hdfs dfsadmin -report

重点关注:

  • Live datanodes 数量
  • Dead datanodes
  • 各节点磁盘使用率
  • 是否有节点 Under Replication

2. 检查文件系统健康

hdfs fsck / -files -blocks -locations

常见问题:

  • MISSING 块(数据丢失)
  • CORRUPT 块(损坏)
  • UNDER_REPLICATED

简单检查:

hdfs fsck / -list-corruptfileblocks

3. 查看 NameNode 状态(HA 场景)

hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

三、查看日志(最重要)

1. NameNode 日志

$HADOOP_HOME/logs/hadoop-*-namenode-*.log

2. DataNode 日志

$HADOOP_HOME/logs/hadoop-*-datanode-*.log

常见错误:

  • Disk failed
  • Block token expired
  • Cannot lock storage
  • IOException

四、网络与端口排查

1. 检查端口监听

netstat -tnlp | grep java
# 或
ss -tnlp | grep 9000

常见端口:

  • NameNode:9000 / 8020
  • Web UI:9870(Hadoop 3)

2. 测试连通性

ping datanode-host
telnet datanode-host 9866

五、磁盘与权限问题

1. 磁盘空间

df -h

2. DataNode 目录权限

ls -ld /data/hdfs/dn

确保:

  • 属主是 hdfs 或运行用户
  • 权限通常是 700

3. 磁盘故障

dmesg | grep error
smartctl -a /dev/sdX

六、配置与时钟问题

1. 配置文件检查

  • core-site.xml
  • hdfs-site.xml
  • workers / slaves

2. 时间同步(非常常见)

date

建议:

ntpdate ntp.server.com
# 或
systemctl status chronyd

七、Web UI 辅助排查

  • NameNode UI:http://namenode:9870
    • 查看 Live Nodes
    • 查看 Missing Blocks
  • DataNode UI:http://datanode:9864

八、常见故障速查表

现象 可能原因 排查点
DataNode 不在线 网络/磁盘/权限 日志 + df
块丢失 磁盘坏/误删 fsck
NameNode 起不来 元数据损坏 namenode log
写入慢 磁盘/网络 iostat, sar
HA 切换失败 ZK / 时钟 zkCli, date

如果你有具体的报错信息或现象(比如某条日志、某个命令输出),可以直接发出来,我可以帮你更精准定位。

0 踩