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

Spark 的运行模式(--master) 和 部署方式(--deploy-mode)

Spark 的 运行模式(--master 和 部署方式(--deploy-mode,两者的核心区别在于 资源调度范围 和 Driver 进程的位置

一、核心概念对比

维度--master(运行模式)--deploy-mode(部署方式)
作用指定 Spark 应用在哪里运行(单机 / 集群 / 云平台)。指定 Driver 进程的运行位置(本地客户端 / 集群节点)。
选项范围- 单机:local / local[N] / local[*]
- 集群:yarn / spark://host:port / mesos
仅当 --master 为 集群模式 时有效:
client(客户端部署)
cluster(集群部署)
是否必填是(决定应用的运行环境)。否(默认值:client,仅在集群模式下需显式指定)。

二、--master 运行模式详解

1. 单机模式(Local Mode)

适用场景:开发调试、本地测试(无需真实集群资源)。

  • local
    • 单线程运行,所有任务在一个线程中串行执行(无并行)。
    • 示例--master local
  • local[N]
    • 使用 N 个线程 模拟集群中的 Executor,并行执行任务(N 通常为 CPU 核心数)。
    • 示例--master local[2](2 个线程并行)。
  • local[*]
    • 使用 所有可用 CPU 核心 线程(自动获取本地 CPU 核数)。

特点

  • 无需启动集群服务,直接在本地 JVM 中运行。
  • Driver 和 Executor 都在同一个进程内,适合验证代码逻辑。
2. 集群模式(Cluster Mode)

适用场景:生产环境(需调度真实集群资源)。
常见集群模式包括:

  • yarn:运行在 Hadoop YARN 集群上(最常用的企业级方案)。
  • spark://host:port:运行在 Spark 自带的独立集群(Standalone Cluster)。
  • mesos:运行在 Mesos 集群上(较少用)。

特点

  • 需要提前启动集群服务(如 YARN 的 ResourceManager、Spark Standalone 的 Master 节点)。
  • 资源由集群统一管理,支持多应用并发运行。

三、--deploy-mode 部署方式详解(仅集群模式有效)

当 --master 设置为集群模式(如 yarn 或 spark://...)时,需通过 --deploy-mode 指定 Driver 进程的位置

1. client 部署(默认)
  • Driver 运行位置:提交任务的客户端节点(如你本地的终端或服务器)。

                                        Driver 进程运行在提交作业的客户端机器上

  • 适用场景
    • 交互式任务(如 Spark Shell)或需要实时查看日志的调试场景。
    • Driver 需要与客户端进行交互(例如接收用户输入)。
  • 优缺点
    • 优点:日志直接输出到客户端,方便调试。
    • 缺点:若客户端断开连接,任务会终止;Driver 占用客户端资源。

示例(YARN 集群 + client 部署):

spark-submit --master yarn --deploy-mode client ...
2. cluster 部署
  • Driver 运行位置:集群内部的某个节点(由集群调度分配)。

                                     Driver 进程运行在集群的某个 Worker 节点上。

  • 适用场景:生产环境的长时间运行任务(如定时批处理)。
  • 优缺点
    • 优点:任务提交后客户端可断开连接,Driver 独立运行在集群中,稳定性高。
    • 缺点:日志需通过集群命令(如 yarn logs)查看,调试不如 client 方便。

示例(YARN 集群 + cluster 部署):

spark-submit --master yarn --deploy-mode cluster ...

四、经典场景搭配

场景--master 配置--deploy-mode 配置说明
本地调试local[2]无需指定(单机模式不生效)使用 2 个线程模拟并行,直接在本地运行,日志打印到终端。
YARN 集群调试(需看日志)yarnclientDriver 运行在提交任务的客户端(如服务器),日志实时输出到终端。
YARN 集群生产任务yarnclusterDriver 运行在集群节点,任务提交后客户端可断开,适合无人值守任务。
Spark 独立集群任务spark://master-host:7077cluster(推荐)Driver 在集群内部,资源由 Spark Standalone 管理。

五、常见误区

  1. 单机模式下无需 --deploy-mode

    • 单机模式(local)中,Driver 和 Executor 都在本地,--deploy-mode 无效,指定会报错。
  2. 集群模式必须选 deploy-mode

    • 若 --master 是 yarn 或 spark://...,必须显式指定 --deploy-mode client 或 cluster(默认是 client,但生产环境建议显式写 cluster)。
  3. local 不是集群

    • local 模式是 伪分布式(模拟集群行为),实际没有真正的集群节点,仅用于开发测试。

总结记忆法

  • --master 决定 “在哪跑”:选本地(local)或集群(yarn/spark://...)。
  • --deploy-mode 决定 “Driver 在哪”:集群模式下,选客户端(client)或集群内(cluster)。
  • 开发调试用 local 或 yarn client生产任务用 yarn cluster 或 spark://... cluster
http://www.xdnf.cn/news/7000.html

相关文章:

  • Linux进程信号(三)之信号产生2
  • Day29 类的装饰器
  • axios的基本使用
  • 网络安全利器:蜜罐技术详解
  • windows11 安装好后右键没有 git bash 命令
  • 【超详细】面试中问到事件循环(Event Loop)机制?
  • 【数据结构】树状数组
  • 基于 STM32 的汽车防盗报警系统设计与实现
  • FPR2100安装ASA镜像
  • 高效查询:位图、B+树
  • 聊一聊契约测试在接口测试中常见的应用场景
  • 互联网大厂Java面试场景:从缓存到容器化的技术问答
  • Spring源码主线全链路拆解:从启动到关闭的完整生命周期
  • 第四章:WebSocket 通信机制全解与客户端发包实录
  • 二十一、案例特训专题4【数据库篇】
  • Vue.js教学第五章:计算属性与侦听器详解
  • 02 K8s双主安装
  • Flink的时间问题
  • 14【高级指南】Django部署最佳实践:从开发到生产的全流程解析
  • JavaScript性能优化实战(12):大型应用性能优化实战案例
  • 机器学习09-正规方程
  • 【MySQL成神之路】MySQL常见命令汇总
  • Vue3学习(组合式API——provide和inject)(跨多层级组件通信/跨多层级共享数据)
  • Manus vs Lovart:AI Agent技术深度解析与实战指南
  • 【机器学习】逻辑回归
  • 【每日一题丨2025年5.12~5.18】排序相关题
  • 在 Vue 中插入 B 站视频
  • 【上位机——WPF】命名空间
  • JavaScript基础-DOM 简介
  • 鸿蒙系统电脑:开启智能办公新时代