当前位置: 首页 > 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策略减少网络传输。

相关文章:

  • Autoware播放提示音
  • 基于Spring Boot + Vue的高校心理教育辅导系统
  • adb命令查询不到设备?
  • QTableWidget实现多级表头、表头冻结效果
  • 模型 启动效应
  • WPF之集合绑定深入
  • 配置高级相关
  • 深入理解卷积神经网络的输入层:数据的起点与预处理核心
  • SpringBoot项目容器化进行部署,meven的docker插件远程构建docker镜像
  • [杂谈随感-13]: 人的睡眠,如何布置床的位置比较有安全?感?
  • java命令行打包class为jar并运行
  • 基于人工智能的个性化 MySQL 学习路径推荐研究
  • Linux——Mysql索引和事务
  • 基于FPGA的PID控制器verilog实现,包含simulink对比模型
  • ffmpeg 写入avpacket时候,即av_interleaved_write_frame方法是如何不需要 业务层释放avpacket的 逻辑分析
  • 2003-2020年高铁线路信息数据
  • 第七章 数据库编程
  • 机器学习第四讲:无监督学习 → 给无标签积木自由组合,发现隐藏规律
  • redis sentinel和redis cluster的主从切换选举过程
  • 77.评论日记
  • 巴基斯坦外长:印巴停火
  • 巴基斯坦外长:近期军事回应是自卫措施
  • 欧洲承诺投资6亿欧元吸引外国科学家
  • 2024年上市公司合计实现营业收入71.98万亿元
  • 现场丨“影像上海”启幕:串联摄影、电影与当代艺术
  • 自然资源部印发地理信息数据分类分级指南