HDFS在Ubuntu上的故障排查方法
导读:HDFS在Ubuntu上的故障排查方法 一 快速定位流程 检查进程是否齐全:运行jps,正常应看到NameNode、DataNode、SecondaryNameNode(如启用YARN,还会有ResourceManager、NodeMan...
HDFS在Ubuntu上的故障排查方法
一 快速定位流程
- 检查进程是否齐全:运行jps,正常应看到NameNode、DataNode、SecondaryNameNode(如启用YARN,还会有ResourceManager、NodeManager)。缺进程优先看日志定位根因。
- 查看服务状态与健康状况:
- 集群报告:hdfs dfsadmin -report(关注Live datanodes、Blocks、Configured Capacity)。
- 安全模式:hdfs dfsadmin -safemode get/leave(处于安全模式会导致写入失败)。
- 校验文件系统完整性:hdfs fsck /(必要时加**-files -blocks -locations**查看块分布与副本)。
- 访问Web UI:Hadoop 3.x 默认 9870 端口,Hadoop 2.x 默认 50070 端口;无法访问时先核对版本与端口。
- 查看关键日志:优先检查 $HADOOP_HOME/logs/ 下的 namenode-.log、datanode-.log、secondarynamenode-*.log,常见错误包括权限、磁盘、网络、配置不当等。
二 常见故障与修复
- NameNode未启动或启动后立即退出
- 核对 hadoop-env.sh 中的 JAVA_HOME 是否指向有效的 JDK。
- 首次部署需执行一次且仅一次:hdfs namenode -format(多次格式化会导致后续DataNode无法注册)。
- 正确启动:sbin/start-dfs.sh;启动后用 jps 确认进程。
- 仍失败时,查看 namenode 日志,并确认系统资源(内存、磁盘)充足。
- DataNode未出现或反复掉线
- 最常见为多次格式化导致 NameNode 与 DataNode 的 clusterID 不一致:进入 dfs/name/current/VERSION 与 dfs/data/current/VERSION 比对并统一 clusterID,然后重启;若数据不重要,可清理 dfs/name 与 dfs/data 后重新格式化。
- 核对 workers(或 slaves)文件与 /etc/hosts 的主机名/IP映射在所有节点一致,避免因解析错误导致节点无法注册。
- 确认 SSH 免密已正确配置(master 能无密登录各 slave,且各节点之间可互信)。
- 无法访问Web UI
- Hadoop 3.x 使用 9870,Hadoop 2.x 使用 50070;若端口不通,检查防火墙/安全组策略是否放行对应端口。
- 权限或路径错误
- 使用 hdfs dfs -ls /、hdfs dfs -mkdir -p /path 校验访问与目录创建;必要时调整目录权限或以具备权限的用户执行。
- 以 root 启动报错
- Hadoop 3.x 要求显式指定运行用户,在 sbin/start-dfs.sh / stop-dfs.sh 顶部加入(示例以 root 运行):
- HDFS_DATANODE_USER=root
- HDFS_DATANODE_SECURE_USER=hdfs
- HDFS_NAMENODE_USER=root
- HDFS_SECONDARYNAMENODE_USER=root
- Hadoop 3.x 要求显式指定运行用户,在 sbin/start-dfs.sh / stop-dfs.sh 顶部加入(示例以 root 运行):
- 启动脚本 pdsh 报错
- 设置 export PDSH_RCMD_TYPE=ssh,确保使用 SSH 而非 rsh 进行远程执行。
三 配置与网络检查要点
- 配置文件语法与路径:核对 core-site.xml、hdfs-site.xml、hadoop-env.sh 等文件格式与路径(如 fs.defaultFS、dfs.replication、dfs.namenode.name.dir、dfs.datanode.data.dir),避免多余空格或错误的 JAVA_HOME。
- 主机名与IP绑定:所有节点的 /etc/hosts 对 master/slave 的解析需一致,避免主机名错配。
- SSH免密登录:确保 master→slave 与 slave→master 的 id_rsa.pub 均写入对方 authorized_keys,以便脚本顺利分发与启停。
- 端口与连通性:确认客户端/浏览器能连通 NameNode IPC 8020 与 Web 9870/50070;云环境需放行安全组与防火墙。
- 资源与目录权限:检查 磁盘空间、inode、目录属主/权限,避免因磁盘满或权限不足导致进程异常。
四 常用命令清单
- 进程检查:jps
- 集群与块健康:hdfs dfsadmin -report、hdfs dfsadmin -safemode leave、hdfs fsck /(加 -files -blocks -locations 细化)
- 文件与目录操作:hdfs dfs -ls /、hdfs dfs -mkdir -p /path、hdfs dfs -rm -r /path
- 版本与兼容性:Hadoop 3.x Web 端口 9870;Hadoop 2.x Web 端口 50070;命令前缀 hdfs dfs(而非已废弃的 hadoop dfs)
五 最小化验证步骤
- 准备:确认 JAVA_HOME 正确、SSH 免密可用、配置文件无误。
- 首次初始化:仅一次执行 hdfs namenode -format。
- 启动服务:sbin/start-dfs.sh;用 jps 确认 NameNode/DataNode/SecondaryNameNode 均在。
- 基础校验:
- hdfs dfsadmin -report(应见 Live datanodes > 0)
- hdfs dfs -mkdir -p /test & & hdfs dfs -ls /
- 访问 http://:9870(或 :50070)查看 NameNode 页面与 Live Nodes。
- 故障复现:若仍异常,优先查看 $HADOOP_HOME/logs/ 中对应进程的 .log 文件,按日志提示修复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HDFS在Ubuntu上的故障排查方法
本文地址: https://pptw.com/jishu/755424.html
