Hadoop部署踩过的坑
前期准备
拥有了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 | 127.0.0.1 localhost |
将其改成
1 | 127.0.0.1 localhost |
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 | stop-dfs.sh |
再启动集群
1 | start-dfs.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 | <property> |
fs.defaultFS 指向 NameNode 的 IP:端口,所以所有节点都要写成 主节点的 IP,不能写 localhost
hdfs-site.xml
1 | <property> |
然后创建个目录 确保目录存在并且 Hadoop 用户有权限读写
1 | mkdir -p /home/zhihaojiang/hadoop/dfs/datanode |
yarn-site.xml
1 | <property> |
mapred-site.xml
1 | <property> |
所有节点都需要配置一致,表示 MapReduce 使用 YARN 作为资源管理
虚拟机克隆和静态 IP
- 克隆虚拟机如果直接启动,IP 会冲突,导致 DataNode 无法注册
- /etc/hosts 中重复或错误映射旧节点
解决
- 克隆虚拟机后修改静态 IP
- 更新 NameNode 上的 workers 文件
- 更新所有节点 /etc/hosts
在Hadoop文件夹中ls找到workers
1 | sudo nano workers |
里面的文件改成
1 | IP 节点1主机名称 |
- 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.