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

Spark的三种部署模式及其特点与区别

Spark支持多种集群部署模式,主要分为以下三类:

部署模式特点适用场景资源管理依赖
Local模式单机运行,所有进程(Driver、Executor)在同一个JVM中开发调试、小规模数据测试无集群资源管理,仅本地线程模拟无需外部集群,仅需Spark安装包
Standalone模式Spark自带的轻量级集群管理器,支持分布式资源调度中小规模集群,需独立管理资源Standalone Master/Worker节点管理资源依赖Spark自带的集群管理组件
集群管理模式集成外部集群管理器(如YARN、Mesos、Kubernetes)企业级生产环境,与现有集群系统整合由外部集群管理器(如YARN)分配资源需部署外部集群(如Hadoop YARN、K8s)
核心区别
  1. 资源管理方式

    • Local:无资源管理,仅本地线程。

    • Standalone:Spark自带的Master/Worker资源调度。

    • 集群模式:依赖外部集群管理器(如YARN的ResourceManager)。

  2. 扩展性

    • Local:仅单机,无法扩展。

    • Standalone:支持多节点,但资源调度能力较弱。

    • 集群模式:高扩展性,适合大规模集群(如YARN支持千级节点)。

  3. 生产适用性

    • Local:仅限开发测试。

    • Standalone:适合中小规模生产环境。

    • 集群模式:企业级生产首选(如与Hadoop生态集成)。


Spark集群模式运行时架构

在集群模式下(以YARN为例),Spark的运行时架构包含以下核心组件:

1. 核心角色
  • Driver

    • 运行用户编写的main()函数,负责:

      • 解析代码生成DAG(有向无环图)。

      • 将DAG拆分为Task,分发给Executor。

      • 监控任务执行状态。

    • 两种部署模式

      • Client模式:Driver运行在提交任务的客户端机器上。

      • Cluster模式:Driver运行在集群的某个节点(由YARN管理)。

  • Executor

    • 在Worker节点上启动的JVM进程,负责:

      • 执行Driver分配的Task(如Map、Reduce操作)。

      • 缓存数据(通过内存或磁盘)。

    • 每个Executor可并行运行多个Task(由spark.executor.cores配置)。

  • Cluster Manager

    • 外部集群管理器(如YARN ResourceManager、K8s Master):

      • 分配集群资源(CPU、内存)。

      • 启动Driver和Executor。

2. 运行时流程(以YARN Cluster模式为例)
  1. 提交任务

    • 用户通过spark-submit提交任务到YARN ResourceManager。

    • ResourceManager分配Container启动ApplicationMaster(Driver)。

  2. 资源申请

    • Driver向ResourceManager申请Executor资源。

    • ResourceManager通知NodeManager启动Executor容器。

  3. 任务执行

    • Driver将Task分发到Executor。

    • Executor执行Task,返回结果给Driver。

  4. 结果回收

    • Driver汇总结果,任务完成后释放资源。

3. 架构示意图
+-------------------+       +---------------------+
|   Client Machine  |       |    YARN Cluster     |
| (spark-submit)    |       |                     |
+-------------------+       +----------+----------+|                           || 1. Submit Job             | 2. Launch AppMaster (Driver)+-------------------------->+|| 3. Request Resources+-------> ResourceManager|| 4. Start Executors+-------> NodeManagers|
+------------------+                   |
|   Executor       | <-----------------+
| (Task Execution) |   5. Run Tasks
+------------------+ 

不同集群管理器的对比

集群管理器特点适用场景
YARN与Hadoop生态深度集成,资源隔离性好已部署Hadoop的环境
Kubernetes原生容器化支持,弹性伸缩能力强云原生环境(如AWS EKS、GKE)
Mesos通用资源调度框架,支持混合负载(如同时运行Spark和Docker)多框架混合集群

总结

  • 部署模式选择

    • 开发测试用Local,轻量级集群用Standalone,生产环境优先选YARN/K8s

  • 架构核心

    • Driver负责任务调度,Executor执行计算,Cluster Manager管理资源。

  • 性能优化点

    • Executor配置:调整CPU核数、内存大小(避免OOM)。

    • 数据本地性:利用Spark的locality策略减少网络传输。

http://www.xdnf.cn/news/374977.html

相关文章:

  • GitHub 趋势日报 (2025年05月09日)
  • HTTP:十三.HTTP日志
  • 如何解决 PowerShell 显示 “此系统上禁用了脚本运行” 的问题
  • DAMA语境关系图汇总及考前须知
  • 【Linux系统编程】进程属性--进程状态
  • Vision Transformer(ViT)
  • 事务连接池
  • 编写第一个MCP Server之Hello world
  • 【动态导通电阻】软硬开关下GaN器件的动态RDSON
  • 养生:拥抱健康生活的秘诀
  • 深入解析JavaScript变量作用域:var、let、const全攻略
  • React Hooks:从“这什么鬼“到“真香“的奇幻之旅
  • 《基于人工智能的智能客服系统:技术与实践》
  • 二分类问题sigmoid+二元交叉熵损失
  • 微服务的“迷宫” - 我们为何需要服务网格?
  • 数据库故障排查指南:从连接问题和性能优化
  • Docker使用小结
  • 为什么选择 FastAPI、React 和 MongoDB?
  • vue 组件函数式调用实战:以身份验证弹窗为例
  • 计算机大类专业数据结构下半期实验练习题
  • 【基础IO下】磁盘/软硬链接/动静态库
  • 精品,第21章 Python数据类型详解:字典的入门与进阶总结(DevOps SRE视角)
  • sensitive-word-admin v2.0.0 全新 ui 版本发布!vue+前后端分离
  • T2I-R1:通过语义级与图像 token 级协同链式思维强化图像生成
  • 为什么有了BST了,还要红黑树,红黑树有什么优点
  • OCP开闭原则
  • Xilinx Kintex-7 XC7K325T-2FFG676I 赛灵思 FPGA
  • Kubernetes生产实战(十六):集群安全加固全攻略
  • Visual Studio 2022 远程调试
  • 【字符函数和字符串函数】