在 Linux 上配置 HDFS 防火墙,通常分两种情况:
下面重点讲 Linux 防火墙如何放行 HDFS 相关端口。
| 服务 | 默认端口 | 说明 |
|---|---|---|
| NameNode | 8020 / 9000 | HDFS RPC |
| NameNode Web UI | 9870 | Hadoop 3.x |
| SecondaryNameNode | 9868 | Web UI |
| DataNode | 9864 / 50010 | 数据传输 |
| DataNode Web UI | 9864 | Hadoop 3.x |
| ResourceManager | 8088 | YARN(如有) |
Hadoop 2.x 和 3.x 端口不同,3.x 是 98xx,2.x 是 50xx
systemctl status firewalld
firewall-cmd --permanent --add-port=8020/tcp
firewall-cmd --permanent --add-port=9870/tcp
firewall-cmd --permanent --add-port=9864/tcp
firewall-cmd --permanent --add-port=9868/tcp
firewall-cmd --reload
firewall-cmd --list-ports
iptables -A INPUT -p tcp --dport 8020 -j ACCEPT
iptables -A INPUT -p tcp --dport 9870 -j ACCEPT
iptables -A INPUT -p tcp --dport 9864 -j ACCEPT
iptables -A INPUT -p tcp --dport 9868 -j ACCEPT
service iptables save
service iptables restart
✅ 推荐做法
示例(仅允许办公网访问 Web):
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="10.0.0.0/8"
port port="9870" protocol="tcp" accept'
防火墙 ≠ 权限安全:
hdfs-site.xml<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
telnet namenode 8020
curl http://namenode:9870
如果连不上,大概率是防火墙或 bind 地址问题。
如果你告诉我:
我可以给你 精准防火墙规则模板。