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

Ubuntu多节点Hadoop集群HDFS连接拒绝异常解决方案求助

解决HDFS连接chinni:9000被拒绝的问题

我来帮你一步步排查这个连接拒绝的问题,这种情况通常是NameNode未正常启动、网络配置有误或者Hadoop参数配置出了问题,咱们从几个关键方向入手:

1. 确认NameNode进程是否正常运行

首先在主节点执行以下命令,查看Hadoop守护进程状态:

jps

你需要在输出中看到NameNode进程。如果没有,说明start-dfs.sh并未成功启动NameNode,这时得去查看NameNode的日志找具体原因:

# 日志路径示例,根据你的Hadoop安装路径调整
cat $HADOOP_HOME/logs/hadoop-*-namenode-chinni.log

日志里通常会明确说明启动失败的原因,比如配置文件语法错误、存储目录权限不足等。

2. 检查HDFS核心配置文件

重点核对core-site.xml和hdfs-site.xml的关键配置:

  • 打开$HADOOP_HOME/etc/hadoop/core-site.xml,确认fs.defaultFS的配置是否为:
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://chinni:9000</value>
    </property>
    
  • 打开hdfs-site.xml,确认dfs.namenode.rpc-address是否和上面的配置一致:
    <property>
        <name>dfs.namenode.rpc-address</name>
        <value>chinni:9000</value>
    </property>
    

同时要注意:主机名chinni对应的IP不能是172.17.0.1,这个IP是Docker默认网桥的地址,大概率是你的主机上运行了Docker,导致主机名解析到了错误的IP。你需要修改/etc/hosts,把chinni指向主节点和虚拟机在同一网段的真实IP(比如VirtualBox Host-Only网络的IP,通常是192.168.56.x这类)。

3. 验证端口9000是否被监听

在主节点执行以下命令,检查9000端口是否被NameNode进程占用:

netstat -tulpn | grep 9000
# 或者用ss命令(更现代)
ss -tulpn | grep 9000

如果输出为空,说明端口没有被监听,回到第一步查看NameNode日志定位启动失败原因。

4. 检查网络连通性与防火墙

  • 先在主节点本地ping自己的主机名:
    ping chinni
    
    确保返回的IP是你预期的主节点IP,而不是172.17.0.1。
  • 从任意一台虚拟机(从节点)测试连通性:
    # 先ping主节点
    ping chinni
    # 再测试9000端口是否能访问
    telnet chinni 9000
    

如果ping不通或者telnet失败,检查:

  • VirtualBox的网络设置:确保三台机器使用同一类型的网络(比如Host-Only或桥接网络),且IP在同一网段。
  • 主节点的防火墙:Ubuntu默认的ufw如果开启了,需要放行9000端口:
    sudo ufw allow 9000/tcp
    

5. 重新格式化NameNode(谨慎操作!会清空HDFS数据)

如果以上步骤都没问题,但NameNode还是无法启动,可能是之前格式化后的元数据和当前配置不匹配。先停止所有Hadoop进程:

stop-dfs.sh
stop-yarn.sh

然后执行格式化命令:

hdfs namenode -format

格式化完成后,重新启动Hadoop集群:

start-dfs.sh
start-yarn.sh

之后再尝试执行hdfs dfs -ls /测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:58:16