温馨提示×

ubuntu下hdfs故障排查指南

小樊
33
2025-12-30 13:40:17
栏目: 智能运维

Ubuntu下HDFS故障排查指南

一 快速定位流程

  • 检查进程是否齐全:执行jps,应看到NameNode、DataNode、SecondaryNameNode(或 JournalNode 等)。缺进程优先看日志与端口占用。
  • 核对服务状态与端口:
    • NameNode Web UI:Hadoop 3.x 为 9870,Hadoop 2.x 为 50070
    • 常用端口:50010/50020/50075(DataNode)50090(SecondaryNameNode)
  • 查看关键日志:$HADOOP_HOME/logs/ 下的 hadoop--namenode-.log 等,优先从最新的 ERROR/WARN 入手。
  • 基础连通与权限:
    • 本机/跨机连通性:如 ssh localhost 免密是否可用。
    • 防火墙/安全组:确认 9870/50070 及数据端口未被阻断。
  • 资源与空间:执行 hdfs dfsadmin -reportdf -h,关注 DFS Used%、Remaining、Live Nodes 与系统磁盘余量。
  • 客户端命令有效性:Hadoop 3.x 推荐使用 hdfs dfs … 系列命令(如 hdfs dfs -ls /)。

二 高频故障与修复

  • NameNode 未启动或启动即退出
    • 核对 hadoop-env.shJAVA_HOME 是否正确;首次部署需执行一次且仅一次 hdfs namenode -format(注意:每次格式化会清空元数据)。
    • 使用 start-dfs.sh 启动后,用 jps 确认进程;若仍异常,查看 $HADOOP_HOME/logs/ 报错。
    • root 操作时,需在 sbin/start-dfs.sh / stop-dfs.sh 中设置用户变量(Hadoop 3.x 建议用 HDFS_DATANODE_SECURE_USER 替代已废弃的 HADOOP_SECURE_DN_USER)。
  • 安全模式无法退出
    • 现象:写入报错 “NameNode is in safe mode”;执行 hdfs dfsadmin -safemode get 仍为 ON。
    • 处理:先查 hdfs dfsadmin -reportdf -h,若 Remaining 极小或 DFS Used%≈100%,需扩容磁盘/清理数据后再退出安全模式(必要时临时 hdfs dfsadmin -safemode leave)。
  • 权限被拒绝
    • 现象:Permission denied
    • 处理:在 HDFS 上调整权限/属主,如 hdfs dfs -chmod 755 /user/hadoophdfs dfs -chown : ;必要时以具备权限的用户执行。
  • 客户端命令不可用或版本不兼容
    • 现象:命令不存在或报参数错误。
    • 处理:Hadoop 3.x 使用 hdfs dfs … 替代老版 hadoop dfs …;确认 $HADOOP_HOME/binPATH
  • 端口访问异常
    • 现象:浏览器打不开 9870/50070 或远程访问失败。
    • 处理:核对 core-site.xml / hdfs-site.xmlfs.defaultFS 与主机名绑定;关闭或放行防火墙/安全组对应端口;必要时改用主机 IP 访问。
  • 集群外访问失败
    • 现象:跨节点/公网访问异常。
    • 处理:确认网络路由、端口可达、客户端配置与集群一致(如 core-site.xmlfs.defaultFS、认证方式等)。

三 配置与运维要点

  • 首次部署与升级
    • 首次启动前执行一次 hdfs namenode -format;升级或迁移前务必备份 dfs.namenode.name.dirdfs.datanode.data.dir 下的元数据与数据。
  • 以 root 启停的安全做法
    • sbin/start-dfs.sh / stop-dfs.sh 顶部显式设置:
      • HDFS_NAMENODE_USER=root
      • HDFS_DATANODE_USER=root
      • HDFS_SECONDARYNAMENODE_USER=root
      • HDFS_DATANODE_SECURE_USER=hdfs(Hadoop 3.x 使用此变量)
  • 主机名与 SSH
    • 确保 /etc/hosts 或 DNS 正确解析各节点主机名;ssh localhost 免密可用。
    • 若使用 pdsh 启动报错(如 “Connection refused”),设置 export PDSH_RCMD_TYPE=ssh
  • 版本差异注意
    • Hadoop 3.xNameNode Web UI 端口为 9870(非 50070);Hadoop 2.x50070
  • 客户端命令规范
    • Hadoop 3.x 推荐使用 hdfs dfs … 系列命令(如 hdfs dfs -mkdir -p /data/input)。

四 常用命令清单

  • 进程与服务
    • 启动/停止:start-dfs.sh / stop-dfs.sh
    • 进程检查:jps
  • 空间与节点
    • 集群报告:hdfs dfsadmin -report
    • 安全模式:hdfs dfsadmin -safemode get|leave
  • 文件与目录
    • 列目录:hdfs dfs -ls /
    • 创建目录:hdfs dfs -mkdir -p /path
    • 上传/下载:hdfs dfs -put local /hdfshdfs dfs -get /hdfs local
    • 权限/属主:hdfs dfs -chmod 755 /pathhdfs dfs -chown user:group /path
  • 日志与端口
    • 日志路径:$HADOOP_HOME/logs/
    • Web UI:Hadoop 3.x 访问 9870,Hadoop 2.x 访问 50070

五 进阶排障与预防

  • 时间与一致性
    • 集群节点时间漂移会引发 块丢失/异常,建议使用 NTP 统一校时。
  • 磁盘与均衡
    • 节点内多磁盘使用率不均衡或数据分布异常,执行 HDFS Balancer;注意 dfs.datanode.failed.volumes.tolerateddfs.datanode.data.dir 配置,避免因磁盘故障导致 DataNode 无法启动。
  • 客户端与网络
    • 调整 HDFS Shell 日志级别以定位问题;公网/跨域访问需确保端口与策略正确;避免使用已废弃的传输/套接字选项。
  • 容量与配额
    • DFS Used% 接近 100% 时,集群可能进入安全模式或写入失败,需扩容或清理;目录/用户配额不足也会导致写入异常。

0