Ubuntu Hadoop 怎样进行故障排查
导读:Ubuntu Hadoop 故障排查实战手册 一 快速定位流程 先看启动输出是否直接报错,再深入 $HADOOP_HOME/logs 目录查看对应组件的 .log 文件(如 namenode.log、datanode.log、resour...
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.xml 的 fs.defaultFS、hdfs-site.xml 的 dfs.namenode.name.dir/dfs.datanode.data.dir、yarn-site.xml 的 yarn.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_HOME 与 PATH,或修正安装路径 |
| 主机名含非法字符导致启动异常 | 查看 /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.dir与dfs.datanode.data.dir指向持久目录 - yarn-site.xml:
yarn.nodemanager.aux-services=mapreduce_shuffle - 进程清单:workers 列出所有 DataNode 主机(伪分布式可写 localhost)
- core-site.xml:
- 访问端口
- 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.sh 与 start-yarn.sh 分别启动
- 推荐在 ~/.bashrc 或 /etc/profile 设置
四 日志与 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-max、net.core.somaxconn)以承载大量连接
- 适度降低 vm.swappiness(如 10),提升稳定性:
- 权限与目录:
- 确保 Hadoop 安装目录与数据目录 属运行用户,必要时
chown -R < user> :< group> < dir>、chmod -R 755 < dir>
- 确保 Hadoop 安装目录与数据目录 属运行用户,必要时
- 内存与 GC:
- 结合节点内存为 NameNode/ResourceManager/NodeManager 配置合理堆大小与 YARN 资源边界,必要时启用 G1GC 降低 Full GC 影响
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Hadoop 怎样进行故障排查
本文地址: https://pptw.com/jishu/784764.html
