1. 背景与需求
在生产环境中,Spark默认会从1024-65535范围内随机选择通信端口。然而,在受严格网络安全策略约束的项目中,所有网络端口通常默认封闭,需要运维人员明确申请放行特定端口范围。面对这种情况,最理想的解决方案是主动限制Spark使用的端口范围,实现网络访问的合规化管理。
2. 解决方案概述
通过在SuperMap GPA中设置Spark环境参数,我们可以将Spark的通信端口限定在一个预定义的、连续的端口区间内。这样既满足了网络安全策略的要求,也简化了防火墙配置流程。
3. 关键参数配置详解
要实现端口范围限制,需要配置以下四个关键参数:
# 设置通信起始端口为 40000(此值可按实际申请情况自定义)
spark.blockManager.port 40000
spark.driver.port 40000
spark.driver.blockManager.port 40000
# 设置最大端口重试次数为 99 → 最终端口范围为 40000 ~ 40099
spark.port.maxRetries 99
参数解析表
| 参数名称 | 默认值 | 功能说明 | 配置建议 |
|---|---|---|---|
spark.driver.port |
随机 | Driver的RPC服务端口 | 与申请范围起始端口一致 |
spark.driver.blockManager.port |
随机 | Driver的块管理端口 | 与申请范围起始端口一致 |
spark.blockManager.port |
随机 | Executor的块管理端口 | 与申请范围起始端口一致 |
spark.port.maxRetries |
16 | 端口冲突时的最大重试次数 | 实际范围=起始端口 + (maxRetries) |
端口范围计算公式
可用端口范围 = [起始端口, 起始端口 + spark.port.maxRetries]
以上述配置为例,可用端口为:40000 ~ 40099(共100个端口)
重要提示:请确保配置的端口范围完全在您已向网络团队申请放行的范围内。
4. SuperMap GPA配置实战
4.1 配置入口
在SuperMap GPA中,您可以通过"spark 环境设置"入口来配置Spark参数

4.2 参数填写示例
在"spark环境参数"输入框中,逐行添加以下配置:
spark.driver.port=40000
spark.driver.blockManager.port=40000
spark.blockManager.port=40000
spark.port.maxRetries=99
4.3 配置示例截图

5. 效果验证
在Spark任务的Executor页面中,所有通信端口均应显示在预设的范围内:
