在 CentOS 上排查 HDFS(Hadoop Distributed File System)错误,一般可以从日志、进程状态、配置、命令工具、系统资源几个层面入手。下面给你一套比较系统的排查思路。
jps
正常应看到(根据角色不同):
如果缺失:
systemctl status hadoop-namenode
systemctl status hadoop-datanode
或(取决于安装方式):
hadoop-daemon.sh status namenode
hadoop-daemon.sh status datanode
HDFS 错误90% 都在日志里。
$HADOOP_HOME/logs/
或
/var/log/hadoop/
hadoop-hdfs-namenode-*.log
hadoop-hdfs-datanode-*.log
hadoop-hdfs-namenode-*.log | grep -i "safe mode"
tail -f $HADOOP_HOME/logs/hadoop-hdfs-datanode-*.log
hdfs dfsadmin -report
重点看:
hdfs dfsadmin -safemode get
如果是 ON:
hdfs dfsadmin -safemode leave
hdfs fsck / -files -blocks -locations
常见问题:
hdfs fsck / -delete
hostname
cat /etc/hosts
确保:
127.0.0.1 作为集群地址systemctl stop firewalld
systemctl disable firewalld
或开放端口:
firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --reload
getenforce
建议测试时:
setenforce 0
常见原因:
dfs.datanode.data.dir 权限不对检查:
df -h
ls -ld /data/hadoop/hdfs/datanode
修复权限:
chown -R hdfs:hadoop /data/hadoop
chmod 700 /data/hadoop/hdfs/datanode
| 错误现象 | 可能原因 |
|---|---|
| NameNode 起不来 | edits/logs 损坏 |
| DataNode 不注册 | clusterID 不一致 |
| 一直安全模式 | 块缺失过多 |
| 写文件失败 | 磁盘满 / 权限问题 |
| 网络超时 | 防火墙 / hosts 错误 |
cat /data/hadoop/hdfs/namenode/current/VERSION
cat /data/hadoop/hdfs/datanode/current/VERSION
不一致时,删除 DataNode 的 current 目录并重启(会重新注册)。
jps 看进程tail -f 看日志hdfs dfsadmin -reporthdfs fsck /如果你愿意,可以把具体报错日志或现象(比如 NameNode 起不来、DataNode 掉线、某个命令报错)贴出来,我可以帮你精准定位。