Spark集群内存与核心调优:Databricks配置如何映射Executor与Node并优化?
Spark术语对应与配置优化
术语对应关系
- Databricks Worker节点 = 早期Stack Overflow讨论中的node(物理/虚拟计算节点)
- Executor:在单Worker配置下,默认会给这个Worker分配1个Executor。你当前的Worker是256GB内存、64核,默认状态下这个Executor会占用该Worker的全部可用资源(除少量系统预留内存)
- Driver:和早期讨论中的Driver概念完全一致,负责作业调度、任务分发,对应你配置的64GB内存、8核节点
最优配置设置
基于你1 Driver + 1 Worker的集群配置,结合Shuffle开销最小化的目标,直接用以下Spark配置:
- 固定Executor数量:
spark.executor.instances=1,让单个Executor独占Worker资源,避免节点内资源竞争 - 内存分配:Worker总内存256GB,预留15%左右给系统进程,设置
spark.executor.memory=220g,同时配套设置spark.executor.memoryOverhead=36g,降低OOM风险 - 核心分配:设置
spark.executor.cores=64,让Executor用满Worker的全部核心,最大化单节点并行度,减少跨Executor的Shuffle开销 - Driver保持现有配置:64GB内存、8核足够应对多数作业的调度需求,若有大量广播变量可适当调大
spark.driver.memory - Shuffle补充优化:开启
spark.shuffle.service.enabled=true(Databricks默认开启),同时根据数据量调整spark.sql.shuffle.partitions,比如数据量小时设为64,和Executor核数匹配,减少小文件生成
内容的提问来源于stack exchange,提问作者John Stud
相关产品推荐
相关产品推荐

