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都在集群运行
相关推荐
一品威客爱开发6 小时前
商城 App 核心指标监控与分析:驱动用户增长与转化
大数据
m0_619731197 小时前
libmodbusTcp发送自定义功能码
大数据·elasticsearch·搜索引擎
赫尔·普莱蒂科萨·帕塔7 小时前
DeepMind 分布式 AGI 安全框架与拼凑型 AI 群技术深度分析
分布式·安全·agi
Ashley_Amanda7 小时前
SAP ABAP 开发全攻略:从核心编程到最佳实践
大数据·数据库·sql
Vic101017 小时前
Redis防重复点击与分布式锁
java·数据库·redis·分布式
Vic101017 小时前
Redis防重复点击与分布式锁实现方案对比笔记
java·redis·笔记·分布式
彭思远20067 小时前
以 MapReduce 之力,解锁螺蛳粉销量数据的有序密码
大数据·mapreduce
黎相思7 小时前
附录:ChatSDK使用
大数据·elasticsearch·搜索引擎
geneculture7 小时前
融智学:重构认知与实践的智慧体系
大数据·人工智能·融智学的重要应用·信智序位·人类智力·融智时代(杂志)