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

Hadoop虚拟机环境下使用IP访问NameNode端口9000无法Telnet连接

Hadoop NameNode 外部IP无法访问问题解决方案

1. 先确认端口绑定状态

在虚拟机终端执行命令,查看9000端口的实际监听地址:

ss -tulpn | grep 9000

如果输出显示绑定的是127.0.0.1:9000,说明NameNode只监听本地回环地址,外部自然无法连接。

2. 修正核心配置文件

修改core-site.xml

确保fs.defaultFS配置为允许所有网卡访问的地址,同时检查无其他冲突配置:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://0.0.0.0:9000</value>
    </property>
    <!-- 保留原有其他配置 -->
</configuration>

修改hdfs-site.xml

添加或修改RPC绑定地址配置,强制NameNode监听所有网卡:

<configuration>
    <property>
        <name>dfs.namenode.rpc-bind-host</name>
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>dfs.namenode.servicerpc-bind-host</name>
        <value>0.0.0.0</value>
    </property>
    <!-- 保留原有其他配置 -->
</configuration>

3. 修正启动时的主机指向

启动时显示Starting namenodes on [localhost],说明Hadoop默认使用localhost作为NameNode主机。在hadoop-env.sh中添加以下配置,强制指定绑定地址:

export HADOOP_NAMENODE_OPTS="-Djava.net.preferIPv4Stack=true -Ddfs.namenode.rpc-bind-host=0.0.0.0"

4. 重启服务并验证

  1. 停止所有Hadoop服务:
stop-all.sh
  1. 清理旧元数据(注意:如果有重要数据请先备份):
hdfs namenode -format
  1. 重启HDFS服务:
start-dfs.sh
  1. 再次检查端口绑定:
ss -tulpn | grep 9000

如果输出显示0.0.0.0:9000,说明配置生效。此时在本机执行:

telnet 172.23.173.238 9000

应该能正常连接。

额外排查点

  • 虚拟机防火墙:临时关闭防火墙或开放9000端口,比如执行ufw allow 9000(适用于Ubuntu/Debian)。
  • 网络连通性:确保本机能ping通虚拟机IP172.23.173.238,虚拟机网络模式建议用桥接模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:28:31