HDFS双节点集群连接异常求助:NameNode端口连接被拒绝
解决双节点HDFS集群的连接拒绝问题
从你的描述和netstat输出来看,核心问题是NameNode只绑定了本地回环地址127.0.0.1:54310——这就导致只有本机用localhost访问能通,用master主机名(对应192.168.X.X)或者从Slave节点访问都会被拒绝。下面是具体的解决步骤:
1. 修改HDFS配置,让NameNode监听全局可访问地址
编辑hdfs-site.xml,添加以下配置项,强制NameNode绑定到master主机对应的外网IP(或者0.0.0.0,允许所有网卡访问):
<property> <name>dfs.namenode.rpc-address</name> <value>master:54310</value> <description>The address where the NameNode IPC server listens on.</description> </property>
这个配置会覆盖默认的绑定行为,让NameNode监听master主机名对应的IP地址,而不是仅局限于本地回环。
2. 确保所有节点的hosts配置完全一致
检查Master和Slave节点的/etc/hosts文件,确保都有正确的IP-主机名映射,比如:
192.168.X.X master 192.168.Y.Y slave
注意:两个节点的hosts内容必须完全相同,避免出现主机名解析不一致的问题。
3. 清理临时文件并重启HDFS集群
- 先停止所有HDFS服务:
stop-dfs.sh - 删除Master节点的Hadoop临时目录(即你
core-site.xml里配置的/app/hadoop/tmp):rm -rf /app/hadoop/tmp/* - 重新格式化NameNode(注意:仅配置变更或首次启动时执行,不要频繁操作):
hdfs namenode -format - 启动HDFS集群:
start-dfs.sh
4. 验证配置生效
- 在Master节点执行
netstat -an | grep 54310,确认输出类似这样(监听的是你的192.168.X.X或者0.0.0.0,而非127.0.0.1):tcp 0 0 192.168.X.X:54310 0.0.0.0:* LISTEN - 在Slave节点测试连通性:
telnet master 54310
如果能成功建立连接,说明配置已经生效。之后再测试HDFS的读写操作,应该就能正常工作了。
补充说明:你之前把core-site.xml里的fs.default.name改成localhost:54310能在Master本地工作,是因为此时客户端只会访问本地回环地址,但Slave节点无法通过localhost访问Master的NameNode,所以必须让NameNode监听全局可访问的IP。
内容的提问来源于stack exchange,提问作者user1289
相关产品推荐
相关产品推荐

