Mac开放7077端口供本地Spark访问 解决提交连接拒绝问题
问题根因
直接执行pyspark命令启动的是本地运行模式的交互Shell,并未启动Spark Standalone模式的Master服务。7077是Standalone Master的专属监听端口,对应服务未启动时,无论如何调整端口开放策略都会出现连接拒绝错误,和Mac系统端口拦截无关。
以下操作步骤可实现本地Standalone集群仅本机可访问、局域网设备完全无法连接的效果,无需额外调整防火墙规则:
操作步骤
1. 启动绑定本地回环地址的Standalone Master
执行启动脚本时指定服务绑定127.0.0.1回环地址,从根源上杜绝局域网设备访问:
# Intel芯片Mac执行该命令 /usr/local/opt/apache-spark/libexec/sbin/start-master.sh --host 127.0.0.1
# M系列芯片Mac执行该命令 /opt/homebrew/opt/apache-spark/libexec/sbin/start-master.sh --host 127.0.0.1
- 参数解释:
--host 127.0.0.1强制Master服务仅监听本地回环网卡,所有来自局域网的外部请求会被系统直接丢弃,天然满足访问控制要求。 - 启动验证:浏览器访问
http://localhost:8080,能正常打开Master Web UI即为启动成功。
2. 启动绑定本地回环地址的Worker节点
Master仅负责任务调度,需要启动Worker节点提供计算资源,同样绑定回环地址:
# Intel芯片Mac执行该命令 /usr/local/opt/apache-spark/libexec/sbin/start-worker.sh spark://127.0.0.1:7077 --host 127.0.0.1
# M系列芯片Mac执行该命令 /opt/homebrew/opt/apache-spark/libexec/sbin/start-worker.sh spark://127.0.0.1:7077 --host 127.0.0.1
- 参数解释:指定Worker向本地
127.0.0.1:7077的Master注册,同样不对外暴露任何端口。刷新Master的8080 Web UI,能在Worker列表看到刚启动的节点即为成功。
3. 提交任务验证
使用spark-submit提交PySpark脚本时,必须写全Master地址,不能省略IP部分:
spark-submit --master spark://127.0.0.1:7077 你的PySpark脚本本地路径.py
此时不会再出现连接拒绝错误,任务会正常提交到本地Standalone集群运行。
4. 用完关闭集群
单元测试完成后,执行以下命令关闭Worker和Master进程,避免后台占用资源:
# Intel芯片Mac执行 /usr/local/opt/apache-spark/libexec/sbin/stop-worker.sh /usr/local/opt/apache-spark/libexec/sbin/stop-master.sh
# M系列芯片Mac执行 /opt/homebrew/opt/apache-spark/libexec/sbin/stop-worker.sh /opt/homebrew/opt/apache-spark/libexec/sbin/stop-master.sh
注意事项
- 无参数直接启动的
pyspark默认是local[*]本地模式,进程不会监听7077端口,无法作为提交任务的集群端点使用。 - 无需手动修改Mac的pf防火墙规则开放端口:回环地址
127.0.0.1的本地通信默认不会被防火墙拦截,且绑定回环地址的端口不会对局域网开放,不存在安全风险。 - 禁止将Master/Worker绑定到
0.0.0.0地址:该配置会让服务监听所有网卡,同局域网设备可直接访问7077端口提交任务,不符合访问控制要求。
内容的提问来源于stack exchange,提问作者bda
相关产品推荐
相关产品推荐

