Ubuntu Hadoop 故障排查实战手册
一 快速定位流程
二 高频故障与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| 启动脚本报 “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),或临时关闭防火墙验证 |
三 配置与端口要点
fs.defaultFS=hdfs://<namenode-host>:9000dfs.replication=1(伪分布式),dfs.namenode.name.dir 与 dfs.datanode.data.dir 指向持久目录yarn.nodemanager.aux-services=mapreduce_shuffleJAVA_HOME、HADOOP_HOME、PATH 并执行 source 生效四 日志与 Web UI 验证
tail -f 实时跟踪。yarn logs -applicationId <app_id> 拉取完整日志用于问题定位。五 环境与资源层面的检查
java -version 确认版本;Hadoop 3.x 常用 Java 8 或 11ssh-keygen 生成密钥,ssh-copy-id 分发公钥,验证 ssh localhost 与节点间互信sudo sysctl vm.swappiness=10 并写入 /etc/sysctl.conffs.file-max、net.core.somaxconn)以承载大量连接chown -R <user>:<group> <dir>、chmod -R 755 <dir>