辨析Spark 运行方式、运行模式(master)、部署方式(deploy-mode)

为了理清 Spark 运行方式、部署模式(master)、部署方式(deploy-mode) 之间的关系,我们先明确几个核心概念,再对比它们的联系与区别。

一、核心概念解析

1. Spark 运行方式(代码执行方式)

指 如何启动和运行 Spark 代码

就是代码在哪上面运行

常见有三种:

  • REPL 方式(交互式)

    • 工具spark-shell(Scala/Java)、pyspark(Python)、spark-sql(SQL)。
    • 特点
      • 直接在命令行中输入代码,实时交互式执行(类似 Python 的 ipython)。
      • 仅适用于开发调试,无法用于生产环境(代码无法保存、性能差)。
      • 默认运行模式:通常是 本地模式(local),因为交互式环境一般在单节点执行。
  • spark-submit 方式(任务提交)

    • 流程
      1. 先将代码打包成 JAR 包(或 Python 脚本)。
      2. 通过 spark-submit 命令提交到 Spark 集群(或本地)运行。
    • 特点
      • 生产环境唯一方式,支持各种部署模式(本地、YARN、Spark Standalone 等)。
      • 可通过参数(如 --master--deploy-mode)灵活配置运行环境。
  • 集成开发环境(IDE,如 IDEA)

    • 流程
      在 IDE 中编写代码,直接运行(需配置 Spark 依赖和环境)。
    • 特点
      • 用于开发调试,本质上是 本地模式运行(类似 REPL,但可调试代码)。
      • 不涉及集群部署,适合单机测试。

更详细的Spark运行方式请见

辨析Spark代码的不同运行方式:交互,submit,集成开发环境-CSDN博客

2. 运行模式(master 参数)

指 Spark 应用运行时的资源管理方式,通过 --master 指定,决定了任务运行在 单机 还是 集群

简单来说就是指定 Spark 应用在哪里运行(单机 / 集群 / 云平台)

  • 本地模式(local)

    • 场景:单机测试(如开发阶段)。
    • 示例
      • --master local:单线程,仅用 1 个 CPU 核心。
      • --master local[2]:2 个线程,模拟多任务并行(但仍在单节点)。
    • 特点
      • 不涉及集群,所有任务在 本地 JVM 中运行,无需启动集群服务。
      • 适合调试代码逻辑,但无法测试集群环境的资源调度、容错等特性。
  • 集群模式(YARN/Spark Standalone/Kubernetes)

    • 场景:生产环境,多节点分布式计算。
    • 示例
      • YARN 模式:--master yarn(需指定 --deploy-mode)。
      • Spark Standalone 模式:--master spark://host:port(Spark 自带的集群管理)。
    • 特点
      • 需要一个 集群资源管理器(如 YARN)分配资源。
      • 任务会被分发到集群中的多个节点执行,支持高并发、高可用。
3. 部署方式(deploy-mode 参数)

仅在 集群模式(master 为 yarn/spark://...) 下有效,决定 Driver 进程的位置

其实就是指定 Driver 进程的运行位置(本地客户端 / 集群节点)

  • client 模式

    • Driver 运行位置:提交任务的节点(如本地机器或集群中的某节点)。
    • 适用场景
      • 交互式任务(如 spark-sql),需实时查看日志和结果。
      • 开发调试阶段,方便直接观察 Driver 输出。
    • 限制
      • 提交任务的节点必须与集群保持网络连通,否则 Driver 会挂掉。
      • 生产环境中若本地机器宕机,任务会失败。
  • cluster 模式

    • Driver 运行位置:集群内部的某个节点(由资源管理器分配)。
    • 适用场景
      • 生产环境,Driver 与 Executor 均在集群内,稳定性更高。
      • 任务提交后可断开本地连接,不影响运行(如后台任务)。
    • 特点
      • 日志需通过集群命令(如 yarn logs)查看,无法实时在本地显示。

更详细的辨别运行模式和部署方式,请见

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

二、三者的联系与区别

维度REPL 方式spark-submit 方式IDE 运行
本质交互式命令行工具任务提交工具(生产环境核心)开发工具(本地调试)
支持的 master仅 local 模式所有模式(local/yarn/standalone)仅 local 模式
是否需要打包不需要(直接输入代码)需要(打成 JAR 或脚本)不需要(IDE 直接运行)
deploy-mode不涉及(仅本地)集群模式下需指定(client/cluster)不涉及(仅本地)

三、常见场景举例

1. 本地调试(开发阶段)
  • 需求:测试代码逻辑,不涉及集群。
  • 方式
    • 用 spark-shell 或 IDE(如 IDEA)直接运行,master 默认是 local
    • 示例:
      spark-shell  # 自动以 local 模式启动,单线程
      
2. 单机模拟多线程(测试并行逻辑)
  • 需求:在本地用多个线程模拟分布式任务并行。
  • 方式
    • 用 spark-submit 指定 --master local[2]
    • 示例:
      spark-submit --master local[2] --class MyApp myapp.jar
      
3. 提交到 YARN 集群(生产环境)
  • 需求:在多节点集群上运行任务,Driver 位于集群内。
  • 方式
    • spark-submit 指定 --master yarn --deploy-mode cluster
    • 示例:
      spark-submit \--master yarn \--deploy-mode cluster \--class MyApp \myapp.jar arg1 arg2
      

四、总结:为什么会混淆?

  1. 运行方式 vs 部署模式

    • 运行方式(REPL/IDE)是 开发工具,仅用于本地调试;spark-submit 是 提交工具,支持所有环境。
    • 运行模式(master)决定任务运行在 单机 还是 集群,与代码的运行方式无关(但 REPL/IDE 只能用本地模式)。
  2. deploy-mode 仅在集群模式下有效

    • 本地模式(local)没有集群节点,因此无需区分 Driver 位置,deploy-mode 参数被忽略。
    • 只有当 master 是 yarn或者spark://... 时,才需要考虑 client 或 cluster 模式。

通过 “代码的运行方式管开发,master 管资源在哪里,deploy-mode 管 Driver 在哪里” 的逻辑,可快速理清三者关系。实际使用中,开发阶段用 REPL/IDE(本地模式),生产环境用 spark-submit 提交到集群(指定 master 和 deploy-mode)。

五、大总结

前置说明

Spark Local(本地)

 Spark Standalone(集群)

Spark on Yarn(集群)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/84049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从芯片互连到机器人革命:英伟达双线出击,NVLink开放生态+GR00T模型定义AI计算新时代

5月19日,在台湾举办的Computex 2025上,英伟达推出新技术“NVLink Fusion”,允许非英伟达CPU和GPU,同英伟达产品以及高速GPU互连技术NVLink结合使用,加速AI芯片连接。新技术的推出旨在保持英伟达在人工智能开发和计算领…

04算法学习_209.长度最小的子数组

04算法学习_209.长度最小的子数组题目描述:个人代码:学习思路:第一种写法:题解关键点: 第二种写法:题解关键点: 个人学习时疑惑点解答: 04算法学习_209.长度最小的子数组 力扣题目链…

【已解决】docker search --limit 1 centos Error response from daemon

在docker search的时候你是否遇到过这样的问题? Error response from daemon: Get "https://index.docker.io/v1/search?qcentos&n1": dial tcp 103.56.16.112:443: i/o timeout解决方案 可以尝试一下加一层docker镜像代理: 以mysql:5.…

vue好用插件

自动导入插件 cnpm i -D unplugin-auto-import配置 //在vite.config.js文件加入AutoImport({imports:["vue","vue-router","pinia"],dts:true,}),

算法--js--电话号码的字母组合

题:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 function letterCombinations (digits){if (!digits.length)…

OSI 网络七层模型中的物理层、数据链路层、网络层

一、OSI 七层模型 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 1. 物理层(Physical Layer) 功能:传输原始的比特流(0和1),通过物理介质(如电缆、光纤、无线电波)…

Linux 文件(3)

文章目录 1. Linux下一切皆文件2. 文件缓冲区2.1 缓冲区是什么2.2 缓冲区的刷新策略2.3 为什么要有缓冲区2.4 一个理解缓冲区刷新的例子 3. 标准错误 1. Linux下一切皆文件 在刚开始学习Linux的时候,我们就说Linux下一切皆文件——键盘是文件,显示器是文…

STM32之串口通信蓝牙(BLE)

一、串口通信的原理与应用 通信的方式 处理器与外部设备之间或者处理器与处理器之间通信的方式分两种:串行通信和并行通信。 串行通信 传输原理:数据按位依次顺序传输(每一位占据固定的时间长度 MSB or LSB) 优点&#xff1a…

基于python的机器学习(七)—— 数据特征选择

目录 一、特征选择概念 二、特征选择的方法 2.1 过滤式特征选择 2.1.1 方差分析 2.1.2 相关系数 2.1.3 卡方检验 2.2 包裹式特征选择 2.2.1 递归特征消除 2.3 嵌入式特征选择 2.3.1 决策树特征重要性 一、特征选择概念 特征选择是机器学习非常重要的一个步骤&#x…

《AI工程技术栈》:三层结构解析,AI工程如何区别于ML工程与全栈工程

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Redis数据库-消息队列

一、消息队列介绍 二、基于List结构模拟消息队列 总结: 三、基于PubSub实现消息队列 (1)PubSub介绍 PubSub是publish与subscribe两个单词的缩写,见明知意,PubSub就是发布与订阅的意思。 可以到Redis官网查看通配符的书写规则: …

归一化函数 & 激活函数

目录 Softmax函数 定义 输入输出 例子 总结 Layernorm 定义 输入输出 Sigmoid函数 定义 Tanh函数 定义 Relu函数 定义 Elu函数 定义 Gelu函数 定义 总结 Softmax函数 定义 softmax函数又称归一化指数函数,其作用是将一个 n 维的实值向量转换为…

使用 C# 入门深度学习:线性代数详细讲解

在深度学习的领域中,线性代数是基础数学工具之一。无论是神经网络的训练过程,还是数据的预处理和特征提取,线性代数的知识都无处不在。掌握线性代数的核心概念,对于理解和实现深度学习算法至关重要。在本篇文章中,我们…

【通用智能体】Serper API 详解:搜索引擎数据获取的核心工具

Serper API 详解:搜索引擎数据获取的核心工具 一、Serper API 的定义与核心功能二、技术架构与核心优势2.1 技术实现原理2.2 对比传统方案的突破性优势 三、典型应用场景与代码示例3.1 SEO 监控系统3.2 竞品广告分析 四、使用成本与配额策略五、开发者注意事项六、替…

CICD遇到npm error code EINTEGRITY的问题

场景 CICD编译时抛出npm error code EINTEGRITY的错误 npm error code EINTEGRITY npm error sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA integrity checksum failed when using sha512: wanted sha512-PlhdFcillOINfeV…

Android13 wifi设置国家码详解

Android13 wifi设置国家码详解 文章目录 Android13 wifi设置国家码详解一、前言二、设置wifi国家码相关代码1、adb或者串口也能设置和获取当前国家码(1)查询命令的方式(2)获取和设置国家码的示例 2、Java代码设置国家码3、获取当前…

c/c++的opencv高斯模糊

深入探索图像高斯模糊:原理、C/C实现与OpenCV应用 在图像处理的众多技术中,模糊(或平滑)是最为基础且不可或缺的一环。它广泛应用于降噪、图像预处理、特征提取前的平滑以及计算机图形学中的各种视觉效果。在高斯模糊&#xff08…

Java求职者面试:从Spring Boot到微服务的技术点解析

Java求职者面试:从Spring Boot到微服务的技术点解析 场景:互联网医疗-预约挂号系统 面试官: “小明,我们今天的场景是一个互联网医疗的预约挂号系统。我们需要支持高并发的用户预约操作,同时保证数据一致性和系统的高…

专业 YouTube SEO 方案:打造高排名视频的关键步骤

YouTube 是全球订阅量最高的社交媒体平台之一。YouTube 为发布创意视频内容和针对特定受众开展营销活动提供了无限可能,是任何品牌内容营销策略的重要组成部分。 但是,为了发展您的 YouTube 频道并消除噪音,优化您的视频内容以便可以在搜索结…

Java Collection(集合) 接口

Date: 2025-05-21 20:21:32 author: lijianzhan Java 集合框架提供了一组接口和类,以实现各种数据结构和算法。 以下是关于 Java 集合的核心内容说明: /*** Java Collection Framework 说明:** 在 Java 中,集合(Collec…