CentOS 上 HDFS 故障排查与解决方案
一 快速定位流程
二 常见故障与修复对照表
| 症状 | 快速检查 | 解决方案 |
|---|---|---|
| Permission denied | 本地/远端目录权限、HDFS 路径权限 | 本地用 chown/chmod 修正;HDFS 用 hdfs dfs -chmod/-chown 授权目标路径 |
| Name node is in safe mode | hdfs dfsadmin -safemode get | 数据充足后自动退出;紧急可 hdfs dfsadmin -safemode leave |
| DataNode 无法注册 / 连接被拒绝 | /etc/hosts、防火墙、NameNode 地址与端口 | 修正 /etc/hosts;开放端口或临时停 firewalld;核对 dfs.namenode.rpc-address 与 fs.defaultFS |
| 多次格式化后 DataNode 不启动 / namespaceID 不一致 | DataNode 数据目录 VERSION 与 NameNode 不一致 | 清理 dfs.datanode.data.dir 下数据后重启;必要时重新 hdfs namenode -format(会清空数据) |
| 配置文件错误 / 未同步 | core-site.xml/hdfs-site.xml 语法与路径 | 修正配置并分发到所有节点,执行 source 使环境变量生效 |
| 磁盘空间不足 / 配额超限 | df -h、HDFS 配额 | 清理不必要文件或扩容;按需调整配额 hdfs dfsadmin -setquota |
| 坏块 / 数据块校验失败 | hdfs fsck / 报告 corrupt/missing | 依据报告清理或恢复;必要时从备份恢复,再执行修复检查 |
| Java 版本不兼容 | java -version 与 Hadoop 要求 | 使用与 Hadoop 版本匹配的 JDK(常见为 JDK 8) 并修正 JAVA_HOME |
| 端口被占用 | 启动失败提示 Address already in use | 查找占用进程并释放端口,或调整 dfs.namenode.http-address 等端口配置 |
| Web UI 无法访问 | 访问 50070 等失败 | 检查防火墙、监听地址与端口、服务是否绑定到 0.0.0.0 而非 127.0.0.1 |
三 关键配置与端口核对
四 数据一致性与恢复建议
五 维护与预防建议