当前位置: 首页 > news >正文

【仅公网互通的 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),专门针对这种“仅公网互通”的场景?这样你只需要一条命令就能拉起整个集群。

http://www.cnnetsun.cn/news/109000.html

相关文章:

  • Ferry工单系统完整指南:从零开始构建企业级流程协作平台
  • 1.4 你绝对不能错过的天气查询工具:MCP 标准化接入实战
  • Taiga敏捷项目管理:5个核心功能助你高效协作
  • 29、Linux 系统管理与使用指南
  • dc.js GDPR合规可视化:构建数据隐私保护的交互式仪表盘
  • Strapi 无头 CMS 实战:如何用现代架构构建高性能网站
  • NMEA-GNSS-RTK 定位html小工具
  • 30、Bash Shell 高级特性与实用命令详解
  • 31、深入探索C与Bash脚本交互及相关命令
  • EmotiVoice语音害羞感模拟增添人际互动趣味
  • 终极免费方案:李跳跳自定义规则一键告别所有弹窗广告
  • Linux系统编程:进程间通信
  • Linux系统编程:动静态库的操作
  • 终极轻量化AI模型部署:完整快速配置指南
  • 嵌入式分层架构藏着哪些秘密?
  • Vue3-Admin-TS:终极TypeScript管理后台解决方案
  • 转账业务逻辑与账户联动
  • 搞定面试高频题:动态规划解通配符匹配
  • 基于WEB的多媒体素材管理库的开发与应用开题报告
  • 终极version-manager完整配置指南:5步轻松管理70+开发工具
  • 体测成绩计算器抖音快手微信小程序看广告流量主开源
  • robot_lab:机器人强化学习快速上手指南
  • 比亚迪游学考察太顶了!被Zhong国智造狠狠拿捏住了
  • “微信拒绝,阿里封锁:新兴手机品牌如何面对平台巨头的联合打压?”
  • 如何集成Camoufox与CapSolver实现无缝CAPTCHA解决
  • 批量修改指定路径下的文件名
  • AI训练场景下的革命性存储解决方案:突破性分布式系统架构全解析
  • RuoYi-Cloud-Plus SSE实时推送:企业级消息通信终极指南
  • 让智能家居“听懂人话”:我用4B模型+万条数据,教会了它理解复杂指令
  • ShawzinBot:Warframe音乐创作的全新革命