Hadoop部署踩过的坑

姜智浩 Lv5

前期准备

拥有了3台虚拟机 每台虚拟机都安装好了jdk和Hadoop

Hadoop 集群搭建踩坑总结

网络与 IP 配置问题

  • 在运行start-dfs.sh后 通过jps验证时发现节点不存在DataNode
  • hdfs dfsadmin -report 报错 Connection refused
  • 日志显示:
1
Address change detected. Old: 172.16.79.129 New: 127.0.1.1

原因

  • /etc/hosts 文件配置不当,主机名解析到 127.0.1.1 或 localhost
  • 虚拟机使用 NAT 或错误的网络模式

解决

进入/etc/hosts文件

1
sudo nano /etc/hosts

打开应该是显示为

1
2
127.0.0.1 localhost
127.0.0.1 <你设置的主机名>

将其改成

1
2
127.0.0.1 localhost
XXX.XXX.XXX.XXX <你设置的主机名>

XXX.XXX.XXX.XXXz这个是你主机的IP

虚拟机推荐使用桥接模式 NAT也不是不可以 不过要进行端口转发

DataNode 启动失败

  • DataNode 启动后很快退出,jps 不显示 DataNode
    • 日志显示:
1
Address change detected. Old: 172.16.79.129 New: 127.0.1.1

原因

  • DataNode 尝试连接 NameNode,但 NameNode 地址解析错误
  • 遗留的 PID 文件阻止进程正常启动

解决

1
sudo rm -f /tmp/hadoop-用户名-*.pid
  • 确保 hdfs-site.xml 中 dfs.datanode.data.dir 指向存在且可写的目录
  • NameNode 运行正常后再启动 DataNode

重复启动 / PID 文件残留

1
namenode is running as process XXX. Stop it first...

原因

  • 上次进程没有完全停止,PID 文件残留

解决

1
2
3
stop-dfs.sh
stop-yarn.sh
sudo rm -f /tmp/hadoop-用户名-*.pid

再启动集群

1
2
start-dfs.sh
start-yarn.sh

配置文件错误或不统一

  • DataNode 与 NameNode 地址不匹配
  • YARN NodeManager 启动后没有正常注册

原因

  • core-site.xml 或 yarn-site.xml 中使用了 localhost 或旧 IP
  • 各节点 Hadoop 配置文件不一致

解决

cd到你的Hadoop文件夹中

1
cd ~/hadoop
1
ls

会存在下列4个文件

core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml

core-site.xml

1
2
3
4
<property>
<name>fs.defaultFS</name>
<value>hdfs://主节点IP:9000</value> <!-- NameNode IP -->
</property>

fs.defaultFS 指向 NameNode 的 IP:端口,所以所有节点都要写成 主节点的 IP,不能写 localhost

hdfs-site.xml

1
2
3
4
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/用户名/hadoop/dfs/datanode</value>
</property>

然后创建个目录 确保目录存在并且 Hadoop 用户有权限读写

1
2
3
mkdir -p /home/zhihaojiang/hadoop/dfs/datanode
chown -R zhihaojiang: /home/zhihaojiang/hadoop/dfs
chmod -R 755 /home/zhihaojiang/hadoop/dfs

yarn-site.xml

1
2
3
4
<property>
<name>yarn.resourcemanager.hostname</name>
<value>主节点IP</value>
</property>

mapred-site.xml

1
2
3
4
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

所有节点都需要配置一致,表示 MapReduce 使用 YARN 作为资源管理

虚拟机克隆和静态 IP

  • 克隆虚拟机如果直接启动,IP 会冲突,导致 DataNode 无法注册
  • /etc/hosts 中重复或错误映射旧节点

解决

  • 克隆虚拟机后修改静态 IP
  • 更新 NameNode 上的 workers 文件
  • 更新所有节点 /etc/hosts

在Hadoop文件夹中ls找到workers

1
sudo nano workers

里面的文件改成

1
2
3
IP 节点1主机名称
IP 节点2主机名称
IP 节点3主机名称
  • Title: Hadoop部署踩过的坑
  • Author: 姜智浩
  • Created at : 2025-09-21 11:45:14
  • Updated at : 2025-09-21 18:37:38
  • Link: https://super-213.github.io/zhihaojiang.github.io/2025/09/21/20250921Hadoop部署踩过的坑/
  • License: This work is licensed under CC BY-NC-SA 4.0.