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可以查,如图:
ip地址的设置必须要在这个网段,网关设置为192.168.31.2
- 在配置hadoop环境文件的时候,其中在配置yarn-site.sh这个文件的时候,注意要把中文注释去掉,否则后面格式化的时候会出问题,然后导致hadoop也启动不成功
- 将第一个配好的虚拟机克隆,得到一个hadoop集群,再分别为其他虚拟机设置主机名,ip地址以及主机名与ip地址映射的时候,不要忘记了修改MAC地址,一旦MAC地址没有改,是无法ping通的
- 搭建集群的时候,除了要打通网络以及ssh登录之外,还要注意时间同步
# 国家授时中心
ntpdate -u ntp.ntsc.ac.cn
-
在安装时间同步的时候,遇到了CentOS7 源不可用,换为阿里源
-
注意要修改slaves和hdfs-site.xml这个两个文件,不能和伪分布的时候一样(要配置副节点)
-
然后还要注意格式化不要重复进行,不然会导致集群ID不匹配,解决方法如下(或者不用这一步,直接将ID换为一样的就好了)
-
主节点 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 进程的原因。
日志查看:
从日志可以看到具体的clusterID不匹配错误信息。
- 注意将slaves文件里面的localhost去掉,不然会和hadoop1冲突
- 注意修改hdfs-site.sh,配置SecondaryNamenode,让其固定在 hadoop1 这台机器,50090 端口工作,不配置的话,集群找不到小助理在哪,只能瞎标一个0.0.0.0(代表所有地址)。
长期不配置的危害:
- 总管(NameNode)的台账永远没人整理,越来越大、越来越乱
- 集群启动变慢、运行卡顿
- 极端情况台账损坏,整个 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等进程。