首页/网络/常用端口速查/4040 Spark 任务 UI / ngrok 面板

4040 Spark 任务 UI / ngrok 面板

Apache Spark 应用 UI 的默认端口:作业一跑起来就监听 4040,每个 Driver 顺延 4041、4042;ngrok 的本地面板也用它。

常用端口速查网络更新于 2026-10-13

4040 是什么

4040 是 Apache Spark 应用界面的默认端口:每当一个作业启动,Driver 就会在 4040 上提供运行详情页面,包括阶段划分、任务耗时、数据倾斜情况与 SQL 执行计划;多个作业并行时端口顺延为 4041、4042。同一数值也被内网穿透工具用作本地面板端口,两者同号但完全不同源。

为什么需要注意它的内容

Spark 界面会展示表名、SQL 语句、抽样数据与执行计划,对攻击者而言等同于一份数据库结构说明;测试集群把它暴露到公网并不罕见。另外端口按作业数顺延,做安全评估或防火墙规划时要按整段端口考虑,而不是只盯 4040。

基本信息

服务Spark 应用界面 / 内网穿透工具面板
协议TCP/HTTP
起始端口4040,多作业依次顺延
关联端口18080 历史服务器、7077 调度入口
安全等级本机或分析网段

典型使用场景

  • 查看作业的阶段与任务耗时,定位数据倾斜与长尾任务
  • 检查 SQL 执行计划,确认是否命中预期的分区裁剪
  • 排查作业失败原因时对照失败任务的堆栈与重试次数
  • 把作业详情分享给分析同事,便于共同定位性能问题
  • 规划网络策略时按并发作业数预留整段端口

端口与接口核查

端口与接口核查
ss -lntp | grep -E ':(4040|4041|4042) '                          # 当前有哪些作业界面
curl -s http://127.0.0.1:4040/api/v1/applications | head -c 300   # REST 接口
curl -s http://127.0.0.1:4040/api/v1/applications | python -m json.tool | head -20

相关配置项

相关配置项
# conf/spark-defaults.conf
# spark.ui.enabled true          # 是否开启应用界面
# spark.ui.port 4040             # 起始端口,被占用时自动顺延
# spark.history.ui.port 18080    # 历史服务器端口

Spark 端口族

端口组件说明
4040 起Driver 应用界面按并发作业数依次顺延
18080History Server已完成作业的历史记录
7077master RPC调度通信入口
8080Master Web UI集群总览界面
界面打不开先核对两件事:配置里界面是否启用,以及端口是否被其他作业占用后顺延。顺延不会报错,只体现在启动日志中,容易在排查时被忽略。

与应用界面和历史服务器的区别

应用界面只在作业运行期间存在,作业结束页面随即消失;要长期保留执行记录,需要开启历史服务器,把事件日志写入持久化存储后再由它展示。两者端口不同、生命周期也不同,交接与复盘时最容易被混淆。

共享建议:给分析同事看执行详情时,尽量通过内网地址或安全网关转发,而不是把界面端口直接对办公网开放,避免表结构信息在不经意间扩散。

易错点

  • 作业界面暴露到公网:表结构、SQL 与抽样数据一并泄露
  • 排障时默认端口固定:并发作业导致端口顺延,按 4040 抓取拿到的可能是另一个作业
  • 网络策略只放行单个端口:多作业并行时后启动的界面无法访问,误判为界面异常
  • 把内网穿透工具的面板与 Spark 界面混为一谈:两者同号不同源,需按监听进程判断归属

数据来源与参考

  • Apache Spark 官方文档(UI 默认 4040)
  • ngrok 官方文档(本地 4040)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌