一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

CentOS Hadoop运行报错怎么办

时间:2026-06-05 09:58:47 编辑:袖梨 来源:一聚教程网

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

CentOS Hadoop 运行出错怎么办

一、先定位错误来源

  • 查看进程:执行 jps,确认 NameNode、DataNode、ResourceManager、NodeManager 是否在预期节点出现。
  • 查看日志:到 $HADOOP_HOME/logs/ 目录,优先看对应进程的 .log 与 .out 文件末尾的错误堆栈。
  • 查看 Web UI:
    • HDFS NameNode:Hadoop 3.x 为 9870,Hadoop 2.x 为 50070(如 http://:9870)。
    • YARN ResourceManager:8088。
  • 检查端口与连通:确认 fs.defaultFS= hdfs://:9000 中的主机名可解析,且 9000/9870/8088 等端口未被占用、可互通。
  • 检查系统环境:确认 JAVA_HOME 已设置、SSH 免密正常、配置文件语法正确(XML 无多余空行/缩进错误)。

二、高频错误与对应修复

  • 以 root 启动报错 “but there is no HDFS_DATANODE_USER defined”在 sbin/start-dfs.sh / sbin/stop-dfs.sh 顶部添加(Hadoop 3.x 示例):HDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root在 sbin/start-yarn.sh / sbin/stop-yarn.sh 顶部添加:YARN_RESOURCEMANAGER_USER=rootHADOOP_SECURE_DN_USER=yarnYARN_NODEMANAGER_USER=root说明:生产环境建议使用 非 root 用户并通过系统服务管理。
  • “hadoop: 未找到命令”配置环境变量(/etc/profile 或 ~/.bashrc):export HADOOP_HOME=/opt/hadoopexport PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH执行 source /etc/profile 生效。
  • DataNode 启动后很快消失或反复重启常见为多次格式化导致 clusterID 不一致:1)对比 dfs/name/current/VERSION 与 dfs/data/current/VERSION 的 clusterID;2)将 DataNode 的 clusterID 修改为与 NameNode 一致;3)清理 $HADOOP_HOME/data、logs 后重新 hdfs namenode -format 并启动。
  • 启动告警 “WARN util.NativeCodeLoader: Unable to load native-hadoop library …”多为 OS/JDK/Hadoop 位数不匹配 或本地库路径未设置。处理:统一 64 位 环境;在 hadoop-env.sh 中设置:export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport HADOOP_OPTS=“-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR”必要时重新编译 native 库或升级/降级匹配版本。
  • 权限被拒绝(Permission denied)将 Hadoop 安装与数据目录授权给运行用户(如 hadoop):chown -R hadoop:hadoop /opt/hadoopchmod -R 755 /opt/hadoop注意 /tmp、logs 等目录也需可写。
  • 无法无密 SSH 登录或 “ssh localhost” 仍需密码生成密钥并分发:ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keyschmod 644 ~/.ssh/authorized_keys确认以 同一用户 启动 Hadoop 与配置 SSH。
  • Live Nodes 为 0 或节点数为 0可能原因:1)各节点 dfs.datanode.data.dir 配置成相同路径,导致识别为同一 DataNode;2)克隆虚拟机后 core-site.xml 仍为 fs.defaultFS=hdfs://localhost:9000,应改为 hdfs://:9000;3)/etc/hosts 将主机名解析到 127.0.0.1,需改为 真实 IP;修正后清理数据目录并重新格式化、重启。
  • 配置文件错误(如 “Incorrect configuration: namenode address … not configured” 或 XML 解析错误)核对 core-site.xml、hdfs-site.xml 关键参数:
    • fs.defaultFS(如 hdfs://namenode:9000)
    • dfs.namenode.name.dir / dfs.datanode.data.dir
    • dfs.replication(单机可设为 1)同时检查 XML 语法(避免多余空行/标签未闭合),并同步到所有节点。

三、一键自检与修复清单

  • 环境就绪:
    • java -version 正常;echo $JAVA_HOME 与 $HADOOP_HOME 正确;
    • ssh namenode 与 datanode 各节点免密互通;
    • /etc/hosts 正确映射主机名与 IP;
    • 关闭或放行 firewalld/iptables,确保 9000/9870/8088 端口可用。
  • 配置与目录:
    • core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 语法与参数正确;
    • 各节点 dfs.name.dir / dfs.data.dir 目录存在且权限正确;
    • workers(Hadoop 3.x)或 slaves(2.x)列出所有 DataNode 主机名。
  • 清理与格式化:
    • 备份后清理 $HADOOP_HOME/data、logs;
    • 仅格式化一次:hdfs namenode -format;
    • 启动:start-dfs.sh && start-yarn.sh;
    • 用 jps 与 9870/8088 验证进程与节点状态。

四、仍未解决时请准备的信息

  • Hadoop 版本与发行版(如 3.3.x/2.10.x/CDH)、操作系统版本(CentOS 7/8/Stream)、JDK 版本与位数;
  • 报错原文(来自 .log/.out 与控制台)、相关配置片段(core-site.xml/hdfs-site.xml 等,注意脱敏)、jps 输出、以及 /etc/hosts 与网络连通性测试结果。

热门栏目