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都在集群运行
相关推荐
编程彩机2 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
不是很大锅2 小时前
卸载TDengine
大数据·时序数据库·tdengine
qyr67893 小时前
深度解析:3D细胞培养透明化试剂供应链与主要制造商分布
大数据·人工智能·3d·市场分析·市场报告·3d细胞培养·细胞培养
2501_944934734 小时前
工业大数据方向,CDA证书和工业数据工程师证哪个更实用?
大数据
麦兜*5 小时前
深入解析现代分布式事务架构:基于Seata Saga模式与TCC模式实现金融级高可用与数据最终一致性的工程实践全解析
分布式·金融·架构
迎仔5 小时前
04-快反部队:Impala, Presto & Trino 通俗指南
大数据
BYSJMG5 小时前
计算机毕业设计选题推荐:基于大数据的肥胖风险分析与可视化系统详解
大数据·vue.js·数据挖掘·数据分析·课程设计
難釋懷6 小时前
分布式锁-redission功能介绍
分布式
yqd6666 小时前
elasticsearch
大数据·elasticsearch·搜索引擎
Leo.yuan6 小时前
经营分析会,该讲些什么?
大数据·数据库·数据分析