在 CentOS 上部署 HDFS(Hadoop) 时,通常需要通过 firewalld 开放 Hadoop 相关端口,否则 NameNode / DataNode / 客户端之间会通信失败。
下面按常见场景给你说明。
| 组件 | 端口 | 说明 |
|---|---|---|
| NameNode | 9000 / 8020 | HDFS RPC |
| NameNode Web UI | 9870 | HDFS 页面(Hadoop 3.x) |
| Secondary NameNode | 9868 | Web UI |
| DataNode | 9864 | DataNode 数据传输 |
| DataNode Web UI | 9865 | DataNode 页面 |
| ResourceManager | 8088 | YARN Web |
| NodeManager | 8042 | YARN NodeManager |
如果你是 Hadoop 2.x,Web UI 通常是:
- NameNode:50070
- DataNode:50075
systemctl status firewalld
若未启动:
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=9870/tcp
firewall-cmd --permanent --add-port=9864/tcp
firewall-cmd --permanent --add-port=9865/tcp
firewall-cmd --permanent --add-port=9868/tcp
如果是 Hadoop 2.x:
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=50070/tcp
firewall-cmd --permanent --add-port=50075/tcp
firewall-cmd --reload
firewall-cmd --list-ports
如果集群在局域网:
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.1.0/24"
port protocol="tcp" port="9000" accept'
⚠️ 不推荐生产
systemctl stop firewalld
systemctl disable firewalld
hdfs-site.xml 中确保:
<property>
<name>dfs.namenode.rpc-bind-host</name>
<value>0.0.0.0</value>
</property>
否则可能只监听 localhost。
for port in 9000 9870 9864 9865 9868; do
firewall-cmd --permanent --add-port=${port}/tcp
done
firewall-cmd --reload
如果你能告诉我:
我可以给你更精确的端口和配置方案。