温馨提示×

Ubuntu HDFS如何故障排查

小樊
41
2025-12-20 19:36:38
栏目: 智能运维

Ubuntu 上 HDFS 故障排查清单

一 快速定位流程

  • 检查进程是否齐全:运行 jps,应至少看到 NameNode、DataNode、SecondaryNameNode(若启用 YARN,还会有 ResourceManager、NodeManager)。缺进程优先看日志与端口。
  • 查看 NameNode Web UI:Hadoop 3.x 默认 9870 端口(Hadoop 2.x 常见 50070),浏览器访问 http://:9870 检查集群概况、Live Nodes、安全模式状态。
  • 查看服务健康与空间:执行 hdfs dfsadmin -report 获取 DataNode 数量、容量、可用空间、副本情况;若处于安全模式,先 hdfs dfsadmin -safemode leave
  • 校验客户端连通与解析:用 telnet 9000nc -zv 9000 测试 fs.defaultFS 端口;若本机访问虚拟机,确保本机 hosts 正确映射 <虚拟机IP> <主机名>

二 常见故障与修复

  • 启动后没有 NameNode

    1. 核对 hadoop-env.sh、core-site.xml、hdfs-site.xml 关键参数与路径;2) 确认 JAVA_HOME 已设置(如 /usr/lib/jvm/java-8-openjdk-amd64);3) 首次部署需执行 hdfs namenode -format(仅在首次!会清空元数据);4) 启动 sbin/start-dfs.sh;5) 用 jps$HADOOP_HOME/logs/ 日志定位细节。
  • 格式化失败或报 “Cannot remove current directory”
    典型原因是 dfs.name.dir/dfs.data.dir 目录被占用或权限不足。处理:1) 停止集群 stop-dfs.sh;2) 清理目录(如 /usr/data/hadoop/tmp/dfs/name/current$HADOOP_HOME/tmp);3) 确认非只读文件系统;4) 重新 hdfs namenode -format 再启动。

  • DataNode 未启动或反复掉线

    1. 核对 workers(或 slaves)文件与 SSH 免密到各 DataNode;2) 检查 DataNode 存储目录权限与磁盘空间;3) 查看 DataNode 日志是否因 clusterID/namespaceID 不一致导致拒绝注册(若曾格式化过 NameNode 而未清理 DataNode 目录,会出现不匹配);4) 用 hdfs dfsadmin -report 确认 Live Nodes 数量。
  • 本机或 IDE 访问虚拟机 HDFS 报 Connection refused / Permission denied

    1. 虚拟机内确认 fs.defaultFS=hdfs://<主机名>:9000,并在 /etc/hosts 正确映射 <主机名>(避免 127.0.0.1 <主机名> 导致外部无法访问);2) 本机 hosts 也需同样映射;3) 用 telnet/nc 测试 9000 端口连通;4) 权限问题可在测试环境临时设 dfs.permissions=false 或在提交任务时设置 HADOOP_USER_NAME
  • 以 root 启动报错 “Attempting to operate on hdfs namenode as root”
    Hadoop 3.x 需显式指定运行用户(不建议生产以 root 运行):在 sbin/start-dfs.sh / stop-dfs.sh 顶部加入(或写入 /etc/profile.d/hadoop-env.sh 导出环境变量):
    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root

三 配置与网络检查要点

  • 配置文件语法与路径:核对 core-site.xml、hdfs-site.xmlfs.defaultFS、dfs.replication、dfs.namenode.name.dir、dfs.datanode.data.dir 等;XML 需闭合、缩进与头文件正确,避免因格式错误导致启动失败。
  • SSH 与 pdsh:启动脚本依赖 SSH 免密登录本机/各节点;若见 pdsh@xxx: localhost: Connection refused,可设置 export PDSH_RCMD_TYPE=ssh
  • 防火墙与端口:在 UFW 放行必要端口(示例)
    sudo ufw allow 9870,9000,50010,50020,50075,50090
    同时确认 netstat -tulpen | grep -E ‘9870|9000’ 监听在 0.0.0.0 而非仅 127.0.0.1

四 日志与数据一致性检查

  • 日志优先:查看 $HADOOP_HOME/logs/hadoop--namenode-.log 等,关注 ERROR/Exception、BindException、AccessControlException、DiskError 等关键字。
  • 健康与块检查:
    • 集群报告:hdfs dfsadmin -report(节点数、容量、可用、副本缺失)
    • 安全模式:hdfs dfsadmin -safemode get/leave
    • 一致性校验:hdfs fsck / -files -blocks -locations(定位缺失/损坏块与副本分布)
  • 版本/集群 ID 不一致:若 NameNode 格式化后 DataNode 仍无法注册,常见为 clusterID 不一致。处理思路:统一 dfs.name.dir/current/VERSIONdfs.datanode.data.dir/current/VERSIONclusterID,或清理 DataNode 数据目录后重启。

0