如果 driver 设置用 4040那后续在对应节点有数据的时候需要注意什么
Spark YARN HDFS Firewall Configuration - Claude
在部署了Spark、YARN和HDFS的环境中,需要开放以下关键端口来确保服务正常运行:
HDFS相关端口
- 9000/8020: NameNode RPC端口(客户端连接)
- 9870/50070: NameNode Web UI端口
- 9864/50075: DataNode数据传输端口
- 9866/50010: DataNode RPC端口
- 9867/50020: DataNode IPC端口
- 9868/50090: Secondary NameNode HTTP端口
YARN相关端口
- 8032: ResourceManager scheduler端口
- 8030: ResourceManager端口
- 8031: ResourceManager resource-tracker端口
- 8033: ResourceManager admin端口
- 8088: ResourceManager Web UI端口
- 8040: NodeManager localizer端口
- 8042: NodeManager Web UI端口
- 8041: NodeManager端口
- 10020: JobHistory Server RPC端口
- 19888: JobHistory Server Web UI端口
Spark相关端口
- 7077: Spark Master端口
- 8080: Spark Master Web UI端口
- 8081: Spark Worker Web UI端口
- 4040-4044: Spark应用程序Web UI端口范围
- 18080: Spark History Server端口
- 6066: Spark Master REST端口
动态端口范围
- 1024-65535: 建议为YARN和Spark的动态端口分配开放一个范围,或者配置固定端口范围
安全注意事项
- 网络隔离: 尽量将这些端口限制在内部网络访问,避免暴露到公网
- 访问控制: 使用防火墙规则限制特定IP段访问
- 认证配置: 启用Kerberos等认证机制
- 加密传输: 配置SSL/TLS加密
- 监控日志: 定期检查访问日志和异常连接
建议根据你的具体集群配置和网络拓扑,逐步开放必要端口并进行测试验证。
Spark YARN HDFS 防火墙端口配置 - Grok
在部署了 Spark、YARN 和 HDFS 的环境中,如果防火墙需要一直开启(例如使用 firewalld 或 iptables),你需要确保集群节点之间(包括 Master 和 Slave 节点)的内部通信顺畅,同时限制外部访问。关键是根据组件的角色(如 NameNode、DataNode、ResourceManager 等)放开必要的端口。以下是主要注意事项和推荐放开的端口列表。
注意事项
- 端口类型区分:端口包括 RPC/IPC(用于内部通信)、HTTP/HTTPS(用于 Web UI 和监控)和数据传输。集群内部节点之间必须互相放开这些端口,但外部访问(如客户端)只需放开少量端口(如 NameNode 的 8020 和 ResourceManager 的 8088)。
- Spark on YARN 的特殊性:Spark 运行在 YARN 上时,会依赖 YARN 的资源管理,但 Spark 的 Driver、Executor 和 Block Manager 默认使用随机端口(ephemeral ports)。这可能导致防火墙阻塞,建议在 spark-defaults.conf 中配置固定端口或端口范围(如 spark.driver.port=40002, spark.executor.port=40003, spark.port.maxRetries=10),然后在防火墙中放开该范围。
- HA 配置:如果启用了 HDFS 或 YARN 的高可用(HA),需额外放开 JournalNode 或 Failover Controller 的端口。
- 安全考虑:只放开必要的端口,并使用 –zone=internal 等指定内部网络接口。定期检查日志(如 /var/log/hadoop),确保没有端口冲突。测试时,可以临时关闭防火墙验证问题。
- 版本差异:端口可能因 Hadoop/Spark 版本而异(以下基于常见默认值,如 Hadoop 3.x 和 Spark 3.x/4.x)。建议检查你的配置文件(如 core-site.xml, yarn-site.xml, spark-defaults.conf)。
- 命令示例:使用 firewalld 时,放开端口命令如
sudo firewall-cmd --permanent --add-port=8020/tcp --zone=internal
,然后sudo firewall-cmd --reload
。对于范围:--add-port=40000-40010/tcp
。 - 外部 shuffle 服务:如果启用(spark.shuffle.service.enabled=true),放开 7337 端口。
- 监控和调试:放开 Web UI 端口后,可通过浏览器访问(如 http://
:8088)监控。
需要放开的端口列表
以下表格总结了 HDFS、YARN 和 Spark 的关键端口(基于官方文档和常见配置)。端口分为内部通信(节点间必须开放)和外部可选(客户端访问)。
HDFS 端口
组件 | 端口 | 协议 | 用途 | 类型 |
---|---|---|---|---|
NameNode | 8020 | TCP | 客户端 IPC 通信(文件操作) | 内部/外部 |
NameNode | 9870 | TCP | HTTP Web UI | 外部 |
NameNode | 9871 | TCP | HTTPS Web UI | 外部 |
NameNode | 8022 | TCP | 服务 RPC(可选,HA 时用) | 内部 |
DataNode | 9866 | TCP | 数据传输 | 内部 |
DataNode | 9864 | TCP | HTTP 地址 | 内部/外部 |
DataNode | 9865 | TCP | HTTPS 地址 | 内部/外部 |
DataNode | 9867 | TCP | IPC 服务器 | 内部 |
Secondary NameNode | 9868 | TCP | HTTP 地址 | 内部/外部 |
Secondary NameNode | 9869 | TCP | HTTPS 地址 | 内部/外部 |
JournalNode (HA) | 8485 | TCP | RPC 服务器 | 内部 |
JournalNode (HA) | 8480 | TCP | HTTP 地址 | 内部/外部 |
JournalNode (HA) | 8481 | TCP | HTTPS 地址 | 内部/外部 |
YARN 端口
组件 | 端口 | 协议 | 用途 | 类型 |
---|---|---|---|---|
ResourceManager | 8032 | TCP | 客户端应用程序接口 | 内部/外部 |
ResourceManager | 8088 | TCP | Web UI | 外部 |
ResourceManager | 8090 | TCP | HTTPS Web UI | 外部 |
ResourceManager | 8030 | TCP | 调度器接口 | 内部 |
ResourceManager | 8031 | TCP | 资源跟踪器 | 内部 |
ResourceManager | 8033 | TCP | Admin 接口 | 内部 |
NodeManager | 8040 | TCP | 本地化 IPC | 内部 |
NodeManager | 8042 | TCP | Web UI | 外部 |
NodeManager | 8044 | TCP | HTTPS Web UI | 外部 |
NodeManager | 8041 | TCP | 容器管理(默认 0,可配置) | 内部 |
Timeline Service | 10200 | TCP | RPC 服务器 | 内部 |
Timeline Service | 8188 | TCP | Web UI | 外部 |
Spark 端口(Spark on YARN 时)
组件 | 端口 | 协议 | 用途 | 类型 |
---|---|---|---|---|
Spark Driver/Executor | 随机(或配置) | TCP | Driver/Executor 通信。建议配置 spark.driver.port、spark.executor.port 为固定(如 40002-40010) | 内部 |
Block Manager | 随机(或配置) | TCP | 块管理。配置 spark.blockManager.port(如 40000) | 内部 |
Spark UI | 4040 | TCP | 应用仪表盘(可配置 spark.ui.port) | 外部 |
External Shuffle Service | 7337 | TCP | 外部 shuffle 服务(如果启用) | 内部 |
History Server | 18080 | TCP | 历史服务器 Web UI | 外部 |
Thrift Server (如果使用) | 2304 | TCP | Thrift 服务器 | 内部/外部 |
Kerberos 安全环境
- Kerberos KDC:
88
(TCP/UDP)。如果集群启用了 Kerberos 认证,所有节点都需要能够访问 KDC(密钥分发中心)。 - Kerberos Admin Server:
749
(TCP)。用于 Kerberos 数据库管理
如果你的配置不同(如自定义端口),请检查日志或配置文件调整防火墙规则。如果问题持续,建议提供更多细节如版本号或错误日志。