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都在集群运行
相关推荐
AI营销快线7 分钟前
AI营销获客难?原圈科技深度解析SaaS系统增长之道
大数据·人工智能
星幻元宇VR1 小时前
VR环保学习机|科技助力绿色教育新模式
大数据·科技·学习·安全·vr·虚拟现实
CryptoPP1 小时前
开发者指南:构建实时期货黄金数据监控系统
大数据·数据结构·笔记·金融·区块链
ZGi.ai3 小时前
生产级 Agent 编排 从单一 LLM 调用到多智能体工作流的工程设计
大数据·数据库·人工智能
无名-CODING3 小时前
分布式锁实战演练:跨越 JVM 的并发掌控者
jvm·分布式
天远数科3 小时前
分布式系统实战:基于天远二手车估值API构建高可用车辆估值微服务
大数据·微服务·云原生·架构
standovon4 小时前
RabbitMQ 的介绍与使用
分布式·rabbitmq·ruby
码农小白AI4 小时前
AI审核加持的IACheck:塔吊与施工电梯安全监测系统检测报告如何实现高效合规与风险可控
大数据·人工智能·安全
leo_2324 小时前
小数据”与大数据(之二)
大数据·企业信息化·smp(软件制作平台)·软件开发工具·应用系统·小数据系统
十月南城5 小时前
文档化与知识库方法——ADR、Runbook与故障手册的结构与维护节奏
大数据·数据库