news 2026/6/25 18:50:51

【仅公网互通的 Spark 集群通信与配置实战方案】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【仅公网互通的 Spark 集群通信与配置实战方案】

Spark 集群公网互通场景配置方案


🗂️ 地址规划

  • 公网地址:

    • Master 节点:100.112.4.22(主控节点,master-node)
    • Worker 节点1:100.112.5.61(worker-node1)
    • Driver 节点(Client 模式提交任务):100.112.6.32
  • 假设的内网地址(不可互通,仅作为说明):

    • Master 节点:172.31.1.34
    • Worker 节点1:122.31.1.34
    • Driver 节点:182.31.1.34

背景:三台机器只有公网互通,内网不可互通。Spark 集群必须依赖公网 IP 进行通信。此时如果直接在spark-env.sh中设置SPARK_MASTER_HOST=master-node(解析到公网),Master 启动会失败,因为 Spark 尝试绑定一个并未直接配置在网卡上的公网地址。解决办法是监听本机可绑定地址(0.0.0.0 或内网 IP),公布公网地址用于访问


📌/etc/hosts统一方案

在三台机器的/etc/hosts中统一配置:

100.112.4.22 master-node100.112.5.61 worker-node1100.112.6.32 driver-node

注意:这里仅映射公网地址,不要混入内网地址,避免解析冲突。


⚙️ Master 节点$SPARK_HOME/conf/spark-env.sh

#!/usr/bin/env bashexportJAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64# Master 监听所有网卡,避免绑定公网失败exportSPARK_MASTER_HOST=0.0.0.0exportSPARK_MASTER_PORT=7077exportSPARK_MASTER_WEBUI_PORT=8080# 公布公网地址(UI、集群信息显示用)exportSPARK_PUBLIC_DNS=100.112.4.22# Worker / Driver 常用端口exportSPARK_WORKER_WEBUI_PORT=8081exportSPARK_DRIVER_PORT=7080exportSPARK_BLOCKMANAGER_PORT=7081exportSPARK_LOG_DIR=$SPARK_HOME/logs

⚙️ Worker 节点$SPARK_HOME/conf/spark-env.sh

Worker1(100.112.5.61):

#!/usr/bin/env bashexportJAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64# 公布公网地址exportSPARK_PUBLIC_DNS=100.112.5.61exportSPARK_WORKER_WEBUI_PORT=8081exportSPARK_DRIVER_PORT=7080exportSPARK_BLOCKMANAGER_PORT=7081exportSPARK_LOG_DIR=$SPARK_HOME/logs

启动 Worker:

$SPARK_HOME/sbin/start-worker.sh spark://100.112.4.22:7077

📄 spark-defaults.conf(可选)

在 Master 节点配置(Driver 公网可回连):

spark.driver.host100.112.6.32 spark.driver.port7080spark.driver.bindAddress0.0.0.0

💻 Driver 端参数指定方案(Client 模式)

Driver 在100.112.6.32上运行,代码示例:

SparkConfconf=newSparkConf();// 资源配置conf.set("spark.executor.instances","6");conf.set("spark.executor.cores","8");conf.set("spark.executor.memory","16g");conf.set("spark.driver.memory","8g");// Master 公网地址conf.set("spark.master","spark://100.112.4.22:7077");// Driver 公网地址(必须是 Worker 可达)conf.set("spark.driver.host","100.112.6.32");conf.set("spark.driver.port","7080");conf.set("spark.driver.bindAddress","0.0.0.0");

🚀 总结

  • SPARK_MASTER_HOST:不要直接设为公网映射的主机名,否则启动失败。应设为0.0.0.0或本机内网 IP。
  • SPARK_PUBLIC_DNS:公布公网地址,供 UI 和集群信息显示。
  • Worker:通过公网地址注册到 Master。
  • Driver:必须指定公网 IP,保证 Executor 能回连。
  • hosts:统一映射公网地址,避免混入内网。

要不要我帮你写一个完整的启动顺序脚本(start-all.sh),专门针对这种“仅公网互通”的场景?这样你只需要一条命令就能拉起整个集群。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 0:03:50

GLM-4.5-FP8:轻量化大模型如何实现高效AI推理?

GLM-4.5-FP8:轻量化大模型如何实现高效AI推理? 【免费下载链接】GLM-4.5-FP8 项目地址: https://ai.gitcode.com/zai-org/GLM-4.5-FP8 智谱AI开源的GLM-4.5-FP8以其3550亿参数规模和创新的FP8精度格式,为如何降低AI部署成本提供了完美…

作者头像 李华
网站建设 2026/6/24 0:22:34

鸿蒙投屏新体验:HOScrcpy如何让远程调试变得如此简单

作为一名鸿蒙开发者,我曾无数次面对这样的困境:测试设备在异地,调试过程就像隔山打牛。直到我遇见了HOScrcpy,这款基于视频流的远程真机工具,彻底改变了我的开发工作流。 【免费下载链接】鸿蒙远程真机工具 该工具主要…

作者头像 李华
网站建设 2026/6/26 12:03:28

20、Linux 文件系统与打印管理全解析

Linux 文件系统与打印管理全解析 1. 文件操作与inode 在Linux系统中,文件的移动和复制操作对inode的影响不同。当文件被移动时,它的inode保持不变。而当文件被复制时,原文件的inode不变,但新文件会关联一个新的inode。以下是示例: $ mv monday friday $ ls -li 18471 …

作者头像 李华
网站建设 2026/6/26 5:39:37

s3fs-fuse终极指南:5分钟快速搭建云端存储本地挂载方案

s3fs-fuse终极指南:5分钟快速搭建云端存储本地挂载方案 【免费下载链接】s3fs-fuse FUSE-based file system backed by Amazon S3 项目地址: https://gitcode.com/gh_mirrors/s3/s3fs-fuse 你是否曾经为云端S3存储的访问速度而烦恼?或者希望在本地…

作者头像 李华
网站建设 2026/6/24 23:18:02

26、Linux 网络配置与服务管理全解析

Linux 网络配置与服务管理全解析 1. 路由配置 在网络环境中,为了让 IP 数据包能够准确到达最终目的地,存在三种类型的路由: - 主机路由 - 网络/网关路由 - 默认路由 路由的目的是为数据指明找到目标的路径,而配置路由使用的工具是 route 实用程序。添加路由使…

作者头像 李华
网站建设 2026/6/26 9:33:37

拾题:从零构建AI驱动的考研助手

摘要:在 AIGC 爆发的时代,如何将大模型能力真正落地到垂直场景?本文将分享我开发的智能考研平台——“拾题”,探讨如何利用 Vue3、Django 和 Moonshot AI (Kimi) 构建一个集智能问答、模考阅卷和择校分析于一体的全栈应用。文中将…

作者头像 李华