spark优化三部曲(三)--参数调优

本文深入探讨了Spark性能优化的多个方面,包括shuffle参数调整以优化数据读写,设置timeout参数增强系统稳定性,利用本地性参数解决任务倾斜问题,内存模型参数的定制,JVM参数优化如使用G1 GC,启用AEQ参数解决数据倾斜和小文件问题,以及合理配置executor的数量、核心和内存。这些策略能有效提升Spark作业的执行效率和资源利用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前文:spark优化三部曲(二)--代码优化_dkk2014的博客-优快云博客

spark优化三部曲(一)--瓶颈分析_dkk2014的博客-优快云博客

1.shuffle参数

shuffle参数大都是围绕,单词读写的数据量大小,io,网络稳定性等

spark官网-- shuffle参数

2.timeout参数

目的是为了提高稳定性

spark.network.timeout=120s //默认120s

3.本地性参数

发生任务倾斜的时候可以设置,可查看我这篇文章

spark的task分布不均匀,某些executor没有领取任务_dkk2014的博客-优快云博客_spark task分布不均匀

4.内存模型参数

可以调整内存模型的各个分区比例和开启堆外内存(不建议开启堆外,任务会不稳定)

可自行搜索 spark统一内存管理

spark官网-内存管理

5.JVM参数

打印日志,根据不同的垃圾回收处理器设置参数等

通常在GC状态不好(web ui看飙红)的时候开启。

这边建议开启G1,G1对大数据处理非常友好

--conf 'spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseG1GC'

6.AQE参数

解决spark sql的大部分数据倾斜,小文件问题,动态分区裁剪,以及最优解的join等

spark官网-runtime参数
 

7.num-executors  executor-cores  executor-memory

 这可能是spark新人最经常接触也最迷惑的点了

先给个通用配置

num-executors 看任务整体并发度(被划分成了多少个task)

executor-cores=2 

executor-memory=8G-16G

如果有多线程安全问题(比如mapPartition里有线程不安全的操作)

executor-cores=1(只能为1)

executor-memory=4G-16G

了解更多看我另外一篇文章spark如何合理的分配资源(executor-memory,num-executors,executor-cores)_dkk2014的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值