温馨提示×

Ubuntu Hadoop 故障如何排查

小樊
37
2025-12-12 21:11:28
栏目: 智能运维

Ubuntu 上 Hadoop 故障排查清单

一 快速定位流程

  • 核对基础环境:执行 java -version 确认已安装 JDK 8/11;检查环境变量 JAVA_HOME、HADOOP_HOME、PATH 是否生效(echo $JAVA_HOME; echo $HADOOP_HOME)。若命令报“未找到”,优先检查 PATH 与安装路径。
  • 查看进程存活:在各节点执行 jps,核对是否存在 NameNode、DataNode、ResourceManager、NodeManager 等关键进程。
  • 定位错误日志:进入 $HADOOP_HOME/logs,用 tail/grep 实时查看相关组件日志,例如:tail -f $HADOOP_HOME/logs/hadoop--namenode-.log。
  • 校验关键配置:核对 core-site.xml、hdfs-site.xml、yarn-site.xml 中如 fs.defaultFSdfs.replication、ResourceManager/NodeManager 地址端口等关键项。
  • 网络与防火墙:节点间使用 ping/ss/telnet 测试端口连通;Ubuntu 可用 ufw 放行端口或临时关闭防火墙验证。
  • 重启与验证:必要时先 stop-all.shstart-all.sh,随后通过 Web UI 与命令行双重验证。

二 常见症状与修复要点

  • “hadoop: 未找到命令”或 “Unable to find Hadoop directory”
    原因:未安装、安装路径错误、或 PATH/HADOOP_HOME 未设置。
    处理:确认安装目录存在(ls $HADOOP_HOME),在 ~/.bashrc/etc/profile 中正确设置 HADOOP_HOME、PATH,执行 source 使其生效;必要时修正目录权限(chown/chmod)。

  • “ERROR: JAVA_HOME is not set and could not be found”
    原因:Hadoop 启动脚本未获取到 JAVA_HOME
    处理:在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 显式设置 export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64(路径以本机为准)。

  • 启动后 jps 缺少组件或进程反复退出
    原因:配置错误、目录权限不足、或 tmp/数据目录 初始化异常。
    处理:核对 core-site.xml/hdfs-site.xml 配置;检查 HADOOP_HOME 与数据目录权限;伪分布式/集群切换导致不一致时,清理各节点的 tmp 目录后执行 hdfs namenode -format 再启动。

  • 主节点正常但从节点只有 jpsLive datanodes 为 0
    原因:从节点配置不一致、网络不通、防火墙拦截、或 DataNode 数据目录 异常。
    处理:对比主从 core-site.xml/hdfs-site.xmlworkers 配置;在从节点查看 DataNode 日志 定位报错;确保节点间端口与 ufw/iptables 策略放行;必要时清理从节点数据目录后重启。

  • 访问 50070/8088 等 Web UI 失败
    原因:端口变更、服务未启动、或防火墙阻断。
    处理:Hadoop 3.x 中 NameNode Web UI 默认端口为 9870(50070 为 2.x);确认 NameNode/ResourceManager 已启动并监听;Ubuntu 执行 ufw allow 9870,8088 放行端口后重试。

三 关键配置与端口速查

组件 关键配置项 默认端口 说明
HDFS NameNode core-site.xml: fs.defaultFS=hdfs://:9000 9870 3.x 的 NameNode Web UI 端口(2.x 为 50070)
HDFS DataNode hdfs-site.xml: dfs.datanode.data.dir 50010/50020/50075 数据传输与 HTTP 访问端口
YARN ResourceManager yarn-site.xml 8088 ResourceManager Web UI
YARN NodeManager yarn-site.xml 每个节点的计算资源管理
历史服务器 mapred-site.xml 19888 JobHistory Server Web UI
本地/伪分布式示例 core-site.xml 9000 fs.defaultFS 常用本地端口
防火墙示例 ufw 见右 ufw allow 9870,8088,19888,9000,50010,50020,50075
  • 配置与端口示例:
    • core-site.xml: fs.defaultFShdfs://localhost:9000
    • 伪分布式 Web 端口:Hadoop 3.x 使用 9870 访问 NameNode UI。

四 高频命令与一键检查脚本

  • 环境与进程
    • java -version && echo $JAVA_HOME $HADOOP_HOME $PATH
    • jps
    • tail -f $HADOOP_HOME/logs/hadoop--namenode-.log
    • grep -i “error|exception” $HADOOP_HOME/logs/*.log
  • 服务控制
    • stop-all.sh && start-all.sh
  • 网络连通
    • ping <目标IP>;ss -lntp | grep <端口>;telnet <端口>
    • sudo ufw status;sudo ufw allow 9870,8088,19888,9000,50010,50020,50075
  • 快速自检脚本(示例)
    • #!/usr/bin/env bash set -e echo “=== Java & Env ===”; java -version; echo “JAVA_HOME=$JAVA_HOME HADOOP_HOME=$HADOOP_HOME” echo “=== Processes ===”; jps echo “=== NameNode Log Tail ===”; tail -n50 $HADOOP_HOME/logs/hadoop--namenode-.log | grep -i -E “error|exception|failed” echo “=== Web Ports ===”; ss -lntp | egrep ‘:(9870|8088|19888|9000)’; echo “If needed: sudo ufw allow 9870,8088,19888,9000,50010,50020,50075”

0