温馨提示×

Ubuntu Hadoop 运行出错怎么办

小樊
33
2025-12-12 21:07:17
栏目: 智能运维

Ubuntu 上 Hadoop 运行出错的快速排查与修复

一 快速自检清单

  • 检查 Java 与环境变量:执行 java -version;确保 JAVA_HOME 正确(如 /usr/lib/jvm/java-8-openjdk-amd64),并在 ~/.bashrc/etc/profile 中导出 JAVA_HOME、HADOOP_HOME、PATH。修改后执行 source ~/.bashrc
  • 校验 Hadoop 可执行文件:执行 hadoop version;若提示 command not found,将 $HADOOP_HOME/bin:$HADOOP_HOME/sbin 加入 PATH 并重新加载。
  • 核对关键配置:core-site.xmlfs.defaultFShdfs-site.xml 的副本数与目录、yarn-site.xml 的资源管理配置是否正确。
  • 首次或状态异常时格式化 HDFS:执行 hdfs namenode -format(仅在确认无重要数据时执行)。
  • 统一主机名与 /etc/hosts:主机名避免包含 下划线“_”点号“.”,并确保 localhost 与主机名映射正确。
  • 查看日志定位问题:到 $HADOOP_HOME/logs 目录查看对应进程的 .log.out
  • 进程与服务可达性:用 jps 检查 NameNode、DataNode、ResourceManager、NodeManager 是否存活;浏览器访问 NameNode9870 端口(Hadoop 3.x)。

二 常见错误与对应修复

  • 报错:Error: JAVA_HOME is not set and could not be found
    修复:在 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中显式设置 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64,保存后重启服务。

  • 报错:command not found: hadoop / yarn
    修复:确认 HADOOP_HOMEPATH 已导出(含 $HADOOP_HOME/bin:$HADOOP_HOME/sbin),执行 source ~/.bashrc 后重试。

  • 报错:pdsh@xxx: localhost: Connection refused(启动 DFS 时)
    修复:在 /etc/profile 加入 export PDSH_RCMD_TYPE=sshsource /etc/profile,使用 SSH 方式分发命令。

  • 报错:Attempting to operate on hdfs namenode as root … but there is no HDFS_NAMENODE_USER defined
    修复:在 sbin/start-dfs.shsbin/stop-dfs.sh 顶部加入(按实际用户调整):
    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    注意不同版本键名差异(旧版可能使用 HADOOP_SECURE_DN_USER)。

  • 报错:Does not contain a valid host:port authority: hdfs://…
    修复:检查 /etc/hosts 与主机名,主机名中不要包含 “_”“.”,必要时改为中划线风格并重新配置 SSH 免密。

  • 页面打不开或端口不对:访问 http://localhost:50070 失败
    修复:Hadoop 3.xNameNode Web UI 默认端口为 9870,请访问 http://localhost:9870

  • 命令不存在或已变更:如 hadoop dfs -mkdir input 失败
    修复:Hadoop 3.x 推荐使用 hdfs dfs 系列命令,例如:hdfs dfs -mkdir -p /user/<你的用户名>

  • 权限或目录不存在:如 Permission denied / No such file or directory
    修复:确保 Hadoop 目录与数据目录 归属正确(如 sudo chown -R : /opt/hadoop),并在 HDFS 上先创建用户目录:hdfs dfs -mkdir -p /user/<你的用户名>

三 分布式与权限场景的要点

  • 多机部署时,保证所有节点的 /etc/hostsSSH 免密JAVA_HOMEHadoop 配置一致;用 jps 逐一核对进程是否齐全。
  • 若以 root 运行脚本,需在 start-dfs.sh/stop-dfs.sh 中正确设置 HDFS_*_USER 与(版本对应的)HDFS_*_SECURE_USER,否则会因权限校验失败而中止。
  • 浏览器访问 ResourceManager8088 端口以查看 YARN 状态;如启用了 UFW,放行必要端口(示例:8088、9870、9000 等)。

四 高效定位与求助信息准备

  • 优先查看 $HADOOP_HOME/logs 下对应进程的日志(如 namenode.log、datanode.log、resourcemanager.log),从 ERROR/Exception 行向上追溯首次异常点。
  • 复现命令与精简配置:保留最小可复现步骤与相关 XML 片段(如 core-site.xml、hdfs-site.xml 的关键项)。
  • 提供环境要点:Hadoop 版本Ubuntu 版本Java 版本、是否为 伪分布式/完全分布式、错误日志关键行与截图。

0