Spark提交任务的资源配置和优化

Spark 提交任务时主要可调的资源配置参数包括 Driver 资源(内存、CPU)、Executor 资源(数量、内存、CPU)以及 集群管理相关参数。配置和优化时一般结合集群硬件资源、数据规模、作业类型和作业复杂度(SQL / 机器学习) 来综合设置。

下面是提交过程参数配置实例:

shell 复制代码
spark-submit --driver-memory 4g \ # 指定Driver进程的内存大小(堆内存),影响不大。
--num-executors 15 # Executor 的总数量,Standalone/K8s 可直接设定;Yarn默认会动态分配。
--executor-memory 8g \ # 指定每个Executor的内存大小(堆内存),一般都是Execution会出现OOM,因为Storage会落盘。
--executor-cores 3 \ # 指定每个Executor核心数(真正并行数),4核心建议设成3。
--queue root.default \ # 设置Yarn的资源队列。
--conf spark.yarn.executor.memoryOverhead=2048 \ # 设置堆外内存大小,默认executor-memory的10%。
--conf spark.core.connection.ack.wait.timeout=300 # 设置通讯等待超时时间。
# 例如集群有15台机器,每台2个CPU核心,则指定15个Executor每个的核心为2。总并行度 = num-executors × executor-cores,尽量大于等于总分区数

资源优化的策略包括:

  1. 内存分配:
    executor-memory ≈ 节点内存 ÷ 每节点 Executor 数量 - 预留空间;
    num-executors × executor-cores 不要超过节点总核数。
  2. 并行度:一般建议 总 cores ≈ 分区数 或者稍大一些。SQL 场景调节 spark.sql.shuffle.partitions(默认 200 通常过大/过小都不好)。
  3. 动态分配:在资源紧张的环境或多租户模式下建议开启,可避免资源浪费。
相关推荐
用户36105886261219 小时前
Spark 核心之广播变量、累加器原理深度剖析
大数据·spark
用户3610588626122 天前
Spark 核心之二次排序、分组取 TopN 优化分析
大数据·spark
头茬韭菜3 天前
Apache Fluss 项目深度分析与技术文档系列计划
flink·spark·realtime·fluss
Gent_倪4 天前
Spark聚合算法:HashAggregate与SortAggregate详解
大数据·spark
用户3610588626125 天前
Spark 核心之任务调度角色划分以及资源调度角色划分详解
大数据·spark
用户3610588626126 天前
Spark 核心之 Stage 并行度划分及优化详解
spark
用户3610588626126 天前
Spark 核心之 Stage 切分划分与计算模式详解
spark
用户3610588626126 天前
Spark 核心之 RDD 窄依赖与宽依赖详解
spark
用户3610588626127 天前
Spark 核心之 Stage 和 Task 原理剖析
spark
java1234_小锋7 天前
【免费】基于Spark实时医疗健康数据监测与疾病预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
大数据·spark·kafka·实时医疗健康数据监测·实时疾病预测系统