Spark Executor 与 Driver 在三种模式下的区别

核心概念回顾

Driver(驱动程序):

  • Spark 应用程序的主控制器
  • 运行用户的 main() 函数
  • 创建 SparkContext,协调任务调度

Executor(执行器):

  • 分布式工作节点
  • 执行具体的计算任务
  • 存储数据分区和缓存

三种模式的详细对比

  1. Local 模式(本地模式)
bash 复制代码
# 本地模式运行
spark-submit --master local[4] \
  --driver-memory 4g \
  --class com.example.MyApp \
  my-app.jar

# 实际上是1个进程,4个执行器线程
  1. Client 模式(客户端模式)
bash 复制代码
# 客户端模式运行
spark-submit --master yarn \
  --deploy-mode client \
  --driver-memory 4g \
  --executor-memory 8g \
  --num-executors 10 \
  --class com.example.MyApp \
  my-app.jar

# Driver在客户端,10个Executor在YARN集群中
  1. Cluster 模式(集群模式)
bash 复制代码
# 集群模式运行
spark-submit --master yarn \
  --deploy-mode cluster \
  --driver-memory 4g \
  --executor-memory 8g \
  --num-executors 20 \
  --class com.example.MyApp \
  my-app.jar

# Driver和Executor都在YARN集群中

详细对比表格

具体代码示例对比

bash 复制代码
示例1:Local模式(开发测试)
# 本地开发环境
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("LocalDev") \
    .master("local[*]") \          # 本地模式
    .config("spark.driver.memory", "2g") \
    .getOrCreate()

# Driver和Executor都在本地进程
# 可以直接在IDE中调试
bash 复制代码
示例2:Client模式(数据科学工作)
# 数据科学家交互式分析
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("DataAnalysis") \
    .master("yarn") \              # YARN集群
    .config("spark.submit.deployMode", "client") \
    .config("spark.driver.memory", "4g") \
    .config("spark.executor.memory", "8g") \
    .getOrCreate()

# Driver在本地,可以看到实时输出
# Executor在集群,处理大数据
df = spark.sql("SELECT * FROM large_table")
df.show()  # 结果直接显示在本地
bash 复制代码
示例3:Cluster模式(生产作业)
# 生产环境提交作业
#!/bin/bash
spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --name "DailyETLJob" \
  --driver-memory 4g \
  --executor-memory 16g \
  --num-executors 50 \
  --conf spark.dynamicAllocation.enabled=true \
  --class com.company.ETLJob \
  /jobs/etl-job.jar \
  --input hdfs:///data/raw \
  --output hdfs:///data/processed

# 提交后客户端可以断开
# Driver和Executor都在集群运行
相关推荐
YangYang9YangYan11 小时前
2026仓库文员学数据分析的价值
大数据
EMBA寰球网11 小时前
互动展厅设计核心逻辑、实施路径与落地实施要点专业解析:名瑞展览展陈行业实践深度洞察
大数据·人工智能
我登哥MVP12 小时前
Hadoop成长史-从Nutch子项目到大数据生态王者
java·大数据·hadoop·分布式·云原生·云计算
dunge202613 小时前
# GPT 与 Codex:软件正在从“静态程序”演化为“持续推理系统”
大数据·gpt
ganbingfenxiang13 小时前
太原干冰定制
大数据·python
跨境数据猎手13 小时前
反向海淘SaaS系统架构拆解与业务技术
大数据·爬虫·系统架构
code_pgf13 小时前
大模型赋能家庭服务机器人的场景适应性分析
大数据·人工智能·机器人
凯云-金山HIL14 小时前
打破仿真孤岛:基于凯云SimuRTS的分布式联合仿真系统架构深度解析
自动化测试·分布式·系统架构·etest·半实物仿真
CodeStats14 小时前
《源纹天书》第一百四十一章至第一百四十五章:etcd升级、2PC的阻塞困境、3PC的超时突破、TCC的补偿之道、Saga的最终选择!
java·大数据·数据库·etcd·源纹天书
2601_9630162614 小时前
统一消息与事件调用:如何用微信接口把微信自动化做成稳健中台?
大数据·运维·人工智能·微信·自动化