温馨提示×

Ubuntu Hadoop 怎样进行故障排查

小樊
40
2025-12-30 12:47:14
栏目: 智能运维

Ubuntu Hadoop 故障排查实战手册

一 快速定位流程

  • 先看启动输出是否直接报错,再深入 $HADOOP_HOME/logs 目录查看对应组件的 .log 文件(如 namenode.log、datanode.log、resourcemanager.log、nodemanager.log),将异常堆栈整段复制用于检索。
  • jps 核对进程是否齐全:NameNode、DataNode、ResourceManager、NodeManager(伪分布式至少应有前两者)。
  • 校验基础环境:
    • 执行 java -version 确认 Java 可用;
    • 执行 echo $JAVA_HOME $HADOOP_HOME 确认环境变量生效;
    • 如提示 “JAVA_HOME is not set”,在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中显式设置 JAVA_HOME
  • 首次部署或元数据异常时,可执行一次 hdfs namenode -format(注意:会清空现有 HDFS 元数据)。
  • 核对关键配置:core-site.xmlfs.defaultFShdfs-site.xmldfs.namenode.name.dir/dfs.datanode.data.diryarn-site.xmlyarn.nodemanager.aux-services=mapreduce_shuffle,以及 workers(或旧版 slaves)里的主机列表。
  • 排查网络与防火墙:确保节点间 SSH 免密可达,必要时放行端口(如 9000、9870、8088 等)。

二 高频故障与修复对照表

症状 快速检查 修复建议
启动脚本报 “JAVA_HOME is not set” hadoop-env.sh 是否设置 JAVA_HOME hadoop-env.sh 加入 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64(路径按实际)
jps 看不到 DataNode 查看 logs/hadoop--datanode-.log 清理 dfs.datanode.data.dir 并重新 hdfs namenode -format;确认 workers 配置正确
NameNode 启动失败,日志提示目录不一致 检查 dfs.namenode.name.dir 权限/路径 确保目录存在且属运行用户;必要时备份后清理再格式化
50070 无法访问(Hadoop 3.x) 浏览器访问 :50070 Hadoop 3.x 使用 :9870(NameNode Web UI)
主机能起从机只有 jps 对比主从 core-site.xml/hdfs-site.xml、网络连通 修正从机配置、SSH 免密与防火墙;查看从机 datanode.log
执行 hadoop 命令报 “Unable to find Hadoop directory” echo $HADOOP_HOME;ls $HADOOP_HOME 正确设置 HADOOP_HOMEPATH,或修正安装路径
主机名含非法字符导致启动异常 查看 /etc/hosts 与主机名 主机名避免 下划线“_”点号“.”,修改后同步 /etc/hosts 与 SSH 配置
端口不通或访问被拒 ufw/iptables 状态;ss -lntp 放行必要端口(如 9000、9870、8088),或临时关闭防火墙验证

三 配置与端口要点

  • 核心配置示例
    • core-site.xml:fs.defaultFS=hdfs://<namenode-host>:9000
    • hdfs-site.xml:dfs.replication=1(伪分布式),dfs.namenode.name.dirdfs.datanode.data.dir 指向持久目录
    • yarn-site.xml:yarn.nodemanager.aux-services=mapreduce_shuffle
    • 进程清单:workers 列出所有 DataNode 主机(伪分布式可写 localhost
  • 访问端口
    • HDFS NameNode Web UI:9870(Hadoop 3.x;2.x 为 50070
    • YARN ResourceManager:8088
    • HDFS RPC:9000
  • 环境变量与脚本
    • 推荐在 ~/.bashrc/etc/profile 设置 JAVA_HOME、HADOOP_HOME、PATH 并执行 source 生效
    • Hadoop 3.x 建议使用 start-dfs.shstart-yarn.sh 分别启动

四 日志与 Web UI 验证

  • 日志定位:到 $HADOOP_HOME/logs 查看对应进程的 .log(如 namenode.log、datanode.log、resourcemanager.log、nodemanager.log),优先看 ERROR 行及堆栈首帧,必要时 tail -f 实时跟踪。
  • Web 验证:
    • http://:9870 检查 HDFS 状态、DataNode 存活、块报告
    • http://:8088 查看 YARN 应用队列、容器分配与失败作业日志入口
  • 作业日志:在 YARN UI 点击应用详情,或用命令 yarn logs -applicationId <app_id> 拉取完整日志用于问题定位。

五 环境与资源层面的检查

  • Java 与 SSH:
    • java -version 确认版本;Hadoop 3.x 常用 Java 8 或 11
    • 配置 SSH 免密ssh-keygen 生成密钥,ssh-copy-id 分发公钥,验证 ssh localhost 与节点间互信
  • 系统资源与内核:
    • 适度降低 vm.swappiness(如 10),提升稳定性:sudo sysctl vm.swappiness=10 并写入 /etc/sysctl.conf
    • 适度提升文件句柄与网络参数(如 fs.file-maxnet.core.somaxconn)以承载大量连接
  • 权限与目录:
    • 确保 Hadoop 安装目录与数据目录 属运行用户,必要时 chown -R <user>:<group> <dir>chmod -R 755 <dir>
  • 内存与 GC:
    • 结合节点内存为 NameNode/ResourceManager/NodeManager 配置合理堆大小与 YARN 资源边界,必要时启用 G1GC 降低 Full GC 影响

0