spark yarn 集群端口情况梳理

文章目录
  1. 1. HDFS相关端口
  2. 2. YARN相关端口
  3. 3. Spark相关端口
  4. 4. 动态端口范围
  5. 5. 安全注意事项
    1. 5.1. 注意事项
    2. 5.2. 需要放开的端口列表
      1. 5.2.1. HDFS 端口
      2. 5.2.2. YARN 端口
      3. 5.2.3. Spark 端口(Spark on YARN 时)
      4. 5.2.4. Kerberos 安全环境

如果 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的动态端口分配开放一个范围,或者配置固定端口范围

安全注意事项

  1. 网络隔离: 尽量将这些端口限制在内部网络访问,避免暴露到公网
  2. 访问控制: 使用防火墙规则限制特定IP段访问
  3. 认证配置: 启用Kerberos等认证机制
  4. 加密传输: 配置SSL/TLS加密
  5. 监控日志: 定期检查访问日志和异常连接

建议根据你的具体集群配置和网络拓扑,逐步开放必要端口并进行测试验证。

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 数据库管理

如果你的配置不同(如自定义端口),请检查日志或配置文件调整防火墙规则。如果问题持续,建议提供更多细节如版本号或错误日志。