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 应用界面 | 按并发作业数依次顺延 |
| 18080 | History Server | 已完成作业的历史记录 |
| 7077 | master RPC | 调度通信入口 |
| 8080 | Master Web UI | 集群总览界面 |
界面打不开先核对两件事:配置里界面是否启用,以及端口是否被其他作业占用后顺延。顺延不会报错,只体现在启动日志中,容易在排查时被忽略。
与应用界面和历史服务器的区别
应用界面只在作业运行期间存在,作业结束页面随即消失;要长期保留执行记录,需要开启历史服务器,把事件日志写入持久化存储后再由它展示。两者端口不同、生命周期也不同,交接与复盘时最容易被混淆。
共享建议:给分析同事看执行详情时,尽量通过内网地址或安全网关转发,而不是把界面端口直接对办公网开放,避免表结构信息在不经意间扩散。