安装hadoop集群问题注意

1 阅读3分钟
title: 安装Hadoop集群问题注意
date: 2026-03-16
description: 记录安装Hadoop集群过程中遇到的各种问题和解决方案,包括网络配置、环境设置、集群搭建等注意事项

环境准备

  • VMware虚拟机17.5
  • jdk-8u271-linux-x64.tar.gz
  • hadoop-2.7.7.tar.gz
  • CentOS-7-x86_64-DVD-1810 (用清华源,下载快一点)

安装虚拟机遇到的问题

  • 设置静态ip的时候,先执行 su root 转化为更高的权限,否则可能设置不成功(编辑文件的时候基本都要root)
  • 在设置静态ip地址的时候,选择NAT模式连接网络,之前我用的是桥接模式,网络问题一直无法ping通,换成NAT之后,一下子就ping通了

注意:用桥接的时候,ip地址的网段要和宿主机一样,子网掩码和网关要和宿主机一致

用NAT连接的时候,设置的静态ip可以查,如图:

屏幕截图 2026-03-26 233901.png

屏幕截图 2026-03-26 234024.png

ip地址的设置必须要在这个网段,网关设置为192.168.31.2

  • 在配置hadoop环境文件的时候,其中在配置yarn-site.sh这个文件的时候,注意要把中文注释去掉,否则后面格式化的时候会出问题,然后导致hadoop也启动不成功
  • 将第一个配好的虚拟机克隆,得到一个hadoop集群,再分别为其他虚拟机设置主机名,ip地址以及主机名与ip地址映射的时候,不要忘记了修改MAC地址,一旦MAC地址没有改,是无法ping通的

屏幕截图 2026-03-27 130146.png

屏幕截图 2026-03-27 130216.png

  • 搭建集群的时候,除了要打通网络以及ssh登录之外,还要注意时间同步
# 国家授时中心
ntpdate -u ntp.ntsc.ac.cn
  • 在安装时间同步的时候,遇到了CentOS7 源不可用,换为阿里源

  • 注意要修改slaves和hdfs-site.xml这个两个文件,不能和伪分布的时候一样(要配置副节点)

  • 然后还要注意格式化不要重复进行,不然会导致集群ID不匹配,解决方法如下(或者不用这一步,直接将ID换为一样的就好了)

屏幕截图 2026-03-27 155510.png

  • 主节点 DataNode 缺失

    • 大概率是之前多次格式化导致 clusterID 不匹配,或 DataNode 数据目录权限问题
    • 也可能是主节点 slaves/workers 文件未正确配置,导致本节点未被识别为 DataNode

clusterID 不匹配

  • NameNode 的 clusterID:CID-532fb890-393e-40bb-8977-eb055fe07980
  • DataNode 的 clusterID:CID-3f7476ad-ddf6-4e16-9389-948ad26b145d

两者不一致,导致 DataNode 初始化失败并直接退出,这就是 jps 看不到 DataNode 进程的原因。

日志查看:

屏幕截图 2026-03-27 194553.png

从日志可以看到具体的clusterID不匹配错误信息。

  • 注意将slaves文件里面的localhost去掉,不然会和hadoop1冲突
  • 注意修改hdfs-site.sh,配置SecondaryNamenode,让其固定在 hadoop1 这台机器,50090 端口工作,不配置的话,集群找不到小助理在哪,只能瞎标一个0.0.0.0(代表所有地址)。

长期不配置的危害:

  1. 总管(NameNode)的台账永远没人整理,越来越大、越来越乱
  2. 集群启动变慢、运行卡顿
  3. 极端情况台账损坏,整个 HDFS 集群直接报废

hadoop2(192.168.31.101) 的 DataNode 尝试注册时,NameNode 发现它的 storage ID 已经被 hadoop3(192.168.31.102) 使用了。

这说明两个 DataNode 节点共享了同一个存储目录或块池 ID,导致 NameNode 认为它们是同一个存储位置,拒绝新节点注册。这是因为克隆虚拟机时拷贝 DataNode 数据目录,导致 ID 重复

# 在 hadoop2 节点执行
rm -rf /home/hadoop1/hadoop/tmp/dfs/data/*

重新启动时,hadoop2 的 DataNode 会自动格式化数据目录,并生成新的、唯一的 storage ID 和 block pool ID,与 hadoop3 不冲突。

  • 运行hadoop集群之后,输入jps之后的最终运行状态应该包含:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager等进程。

屏幕截图 2026-03-27 151314.png