Spark master RPC 是什么
Apache Spark 以 Standalone 模式运行时,集群里有一个 master 进程负责资源分配,7077 就是它的 RPC 监听端口。Worker 启动后连到 7077 注册自己并周期性上报心跳,Driver 通过同一个通道申请执行器,spark-submit 命令里的 --master spark://host:7077 指向的正是这个地址,集群内所有节点与提交端都必须能访问它。
与 8080 的分工
7077 与 8080 用途完全不同:8080 是 Master 的 Web 界面,供人查看集群总览;7077 是机器之间通信的调度通道。因此界面能打开不代表作业能提交成功,反过来也一样。排查顺序通常是先验证 7077 的连通性,再对照界面上的 Worker 列表与作业状态定位问题。
基本信息
| 服务 | Spark Standalone master RPC |
|---|---|
| 协议 | TCP 7077 |
| 同机界面端口 | 8080(Master Web UI) |
| 客户端配置项 | spark.master = spark://host:7077 |
| 安全等级 | 仅大数据内网,需限制来源网段 |
典型使用场景
- 以 Standalone 模式提交作业:spark-submit --master spark://master:7077 app.py
- 集群扩容后确认新 Worker 已注册:比对界面 Worker 列表与节点台账
- 排查作业一直停在 connecting:先验证 7077 是否可达,再看 master 日志
- 迁移或更换域名时清理配置中写死的旧 master 地址
- 安全加固时确认 7077 只对集群网段开放,并检查是否开启集群认证
提交与连通性检查
提交与连通性检查
nc -zv master01 7077 # 先确认 RPC 端口通
ss -lntp | grep 7077 # 在 master 上确认监听状态
spark-submit --master spark://master01:7077 app.py # 指定 master 提交作业
curl -s http://master01:8080/json/ | head -c 200 # 取集群状态快照master 侧配置核对
master 侧配置核对
# conf/spark-env.sh
# SPARK_MASTER_HOST=master01 # 绑定地址,建议写内网地址
# SPARK_MASTER_PORT=7077 # RPC 端口
# conf/spark-defaults.conf
# spark.authenticate true # 开启集群认证
# spark.authenticate.secret <随机串> # 所有节点必须一致端口分工
| 端口 | 组件 | 作用 |
|---|---|---|
| 7077 | master RPC | Worker 注册、作业与资源调度 |
| 8080 | Master Web UI | 集群总览界面 |
| 4040 起 | Driver 应用界面 | 单作业运行详情,多作业顺延 |
| 18080 | History Server | 已完成作业的历史记录 |
RPC 端口可在 spark-env.sh 中用 SPARK_MASTER_PORT 修改,改成非默认值后所有 Worker 与提交端配置必须同步更新,否则会出现部分节点注册不上、部分客户端提交失败的混合故障。
Standalone 集群出厂不做认证,同网段任意主机都能提交作业抢占资源;生产环境应开启 spark.authenticate 与 spark.authenticate.secret,并用防火墙把 7077 收在集群网段内。