You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VirtualBox中Hadoop 3.2.0集群异常:仅NameNode运行

解决Hadoop 3.2.0集群DataNode无法启动并加入集群的问题

我来帮你分析下这个问题,从你的描述来看,核心配置(clusterID、hosts、XML配置文件)都没问题,但DataNode无法通过start-dfs.sh自动启动,单独启动也无法加入集群,大概率是一些容易忽略的细节导致的,试试下面的排查步骤:

1. 确认SSH免密登录是否完全生效

start-dfs.sh是通过SSH远程调用DataNode节点的启动命令,这一步最容易出问题:

  • 在NameNode节点的hadoop用户下,执行ssh datanode1.com和ssh datanode2.com,确保不需要输入密码就能直接登录到对应节点
  • 如果登录失败,检查是否正确生成了SSH密钥对,并且把公钥添加到了所有DataNode节点的~/.ssh/authorized_keys文件中
  • 注意:要确保是hadoop用户的免密登录,不是root用户的,Hadoop进程都是以hadoop用户运行的

2. 检查Hadoop 3.x的workers文件配置

Hadoop 3.x版本默认不再使用slaves文件,而是改用workers文件来管理DataNode节点:

  • 检查NameNode节点的hadoop/etc/hadoop/目录下是否有workers文件,如果没有,直接复制slaves文件的内容到新建的workers文件中
  • 或者在hdfs-site.xml中添加配置指定slaves文件路径:
<property>
<name>dfs.datanode.workers</name>
<value>/home/hadoop/hadoop/etc/hadoop/slaves</value>
</property>
  • 修改后记得同步所有节点的配置文件

3. 查看DataNode节点的本地日志

你只查看了NameNode的日志,但DataNode无法加入集群的关键错误信息通常在DataNode自己的日志里:

  • 登录到每个DataNode节点,查看hadoop/logs/目录下的hadoop-hadoop-datanode-*.log文件
  • 重点找包含Connection refused、Permission denied、Invalid cluster ID这类关键词的日志,这些会直接告诉你连接失败的原因

4. 检查防火墙和端口连通性

Debian 9默认启用ufw防火墙,可能会阻止Hadoop节点间的通信:

  • 临时关闭所有节点的防火墙测试:sudo ufw disable
  • 然后重新执行start-dfs.sh,看DataNode是否能启动并加入集群
  • 如果生效,再按需开放Hadoop需要的端口(比如NameNode的9000、50070,DataNode的50010、50020等)

5. 确认所有节点的hosts文件完全一致

你只贴了NameNode的hosts配置,要确保所有DataNode节点的/etc/hosts和NameNode完全相同:

  • 在每个DataNode节点执行cat /etc/hosts,确认包含以下内容:
127.0.0.1 localhost
192.168.10.100 namenode.com namenode
192.168.10.161 datanode1.com datanode1
192.168.10.162 datanode2.com datanode2
  • 建议把节点主机名的映射从localhost行中移除,避免Hadoop进程绑定到本地回环地址导致无法被其他节点访问

6. 检查数据目录权限和环境变量

  • 确认所有节点的/home/hadoop/data/nameNode和/home/hadoop/data/dataNode目录都是hadoop用户拥有:
ls -ld /home/hadoop/data/nameNode
ls -ld /home/hadoop/data/dataNode
  • 确保所有节点的hadoop-env.sh中正确配置了JAVA_HOME,且路径一致(Hadoop 3.2.0需要Java 8,不要用更高版本):
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

7. 重新执行清理和格式化操作

如果上面的步骤都没问题,再彻底清理一遍重新来:

  1. 在所有节点停止Hadoop进程:stop-all.sh(或者手动kill所有hadoop相关进程)
  2. 删除所有节点的/home/hadoop/data目录:rm -rf /home/hadoop/data
  3. 在NameNode节点重新格式化:hdfs namenode -format
  4. 同步所有节点的配置文件(确保workers/slaves、XML配置完全一致)
  5. 重新启动集群:start-dfs.sh

内容的提问来源于stack exchange,提问作者Math

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:37:15