在 CentOS 上排查 HDFS(Hadoop 分布式文件系统)问题,一般可以从服务状态、日志、命令工具、系统资源、网络几个层面入手。下面给你一套比较系统的排查思路。
jps
正常情况下应看到:
如果某个进程不在:
# 启动 HDFS
start-dfs.sh
# 或单独启动
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hdfs dfsadmin -report
重点关注:
hdfs fsck / -files -blocks -locations
常见问题:
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
Hadoop 日志一般在:
$HADOOP_HOME/logs/
或
/var/log/hadoop/
hadoop-hdfs-namenode-*.log
hadoop-hdfs-datanode-*.log
hadoop-hdfs-namenode-*.out
tail -f $HADOOP_HOME/logs/hadoop-hdfs-datanode-*.log
常见错误关键词:
Connection refusedDisk failedBlock missingPermission deniedOutOfMemoryErrordf -h
HDFS 对磁盘满非常敏感。
dmesg | grep error
lsblk
free -h
top
systemctl status firewalld
getenforce
HDFS 端口(如 50070、8020、9000)需互通。
netstat -tunlp | grep java
或
ss -tunlp
telnet namenode-ip 8020
cat /etc/hosts
确保:
| 现象 | 可能原因 |
|---|---|
| DataNode 起不来 | clusterID 不一致 |
| 块丢失 | 磁盘坏 / 误删 block |
| 写不进数据 | 磁盘满 / 副本不足 |
| NameNode 卡死 | 内存不足 / fsimage 太大 |
| Web 页面打不开 | 防火墙 / 端口错 |
# 从 NameNode 拷贝 clusterID 到 DataNode
jps 看进程hdfs dfsadmin -reportdf -h 看磁盘fsck 检查块如果你愿意,可以告诉我:
我可以直接帮你定位到具体原因。