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 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
uesowys6 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_56786 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
CRzkHbaXTmHw6 小时前
探索Flyback反激式开关电源的Matlab Simulink仿真之旅
大数据
七夜zippoe7 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥7 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿7 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
忆~遂愿8 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
米羊1218 小时前
已有安全措施确认(上)
大数据·网络
人道领域9 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法