Spark处理100GB文件时executor数量及内存最优参数配置咨询
Spark 作业参数最优配置建议
前置说明
以下配置基于YARN集群管理器设计,可适配你给出的10节点、单节点15核/64GB RAM的集群规模,以及100GB CSV文件的处理需求。
核心配置参数
直接可复用的spark-submit启动参数如下:
spark-submit \ --executor-cores 5 \ --executor-memory 24G \ --num-executors 20 \ # 其余作业自定义参数
参数推导逻辑
- 单节点资源预留:每个节点预先留出2核、8GB RAM给操作系统、HDFS守护进程、YARN NodeManager等基础服务,剩余13核、56GB RAM可分配给计算任务
- executor核数选择:单executor设置为5核,是Spark官方推荐的最优区间(5~6核),既能避免核数过高导致的GC停顿过长,也能降低资源调度的开销
- 单节点executor部署数:每个节点部署2个5核executor,共占用10核,剩余3核留作冗余避免CPU争抢
- executor内存配置:单executor分配24GB堆内存,对应系统自动分配的10%堆外内存(约2.4GB),单executor总内存占用约26.4GB,单节点2个executor共占用约52.8GB,剩余3GB留作节点内存冗余
- executor总数量:10个节点各部署2个executor,共20个;如果你的Driver运行在集群上,可将数量调整为19,预留1个executor配额给Driver使用
适配100GB CSV的处理效率验证
100GB CSV按HDFS默认128MB块大小拆分,共产生约800个输入分片,对应800个map任务。20个executor共100个处理核,任务分8批即可跑完,无过多排队延迟,资源利用率最优。
场景化微调建议
- 如果你后续要做大量join、group by等宽依赖转换,或者CSV存在大量稀疏列、字符串字段,可以将executor内存上调到26GB,executor总数量下调到18,降低OOM风险
- 如果作业GC时间占比超过10%,可将单executor核数降到4,executor总数量上调到25,每个executor内存调整为19GB,降低单executor的GC压力
- 若shuffle数据量超过50GB,可开启
spark.shuffle.service.enabled=true降低shuffle拉取开销
内容的提问来源于stack exchange,提问作者anas
相关产品推荐
相关产品推荐

