spark的资源参数调优

10 篇文章 0 订阅
8 篇文章 0 订阅

1.num-executors
参数说明:该参数用于设置spark作业总共要用多少个Executor,
建议每个spark作业运行一般设置50~100个左右的Executor进程比较合适
2.executor-memory
参数说明:该参数用于设置每个executor进程的内存,executor内存的大小,很多时候度决定了spark作业的性能,常见jvm oom异常
建议每个executor内存设置为4~8G
3.executor-cores
参数说明:设置每个executor进程的CPU core数量,这个参数决定每个executor进程并行执行task线程的能力
建议:CPU的core数量设置为2~4个较为合适
4.driver-memory
参数说明:该参数用于设置Driver进程的内存
参数调优建议:Driver的内存通常来说不设置,或者设置1G左右应该就够了。唯一需要注意的一点是,如果需要使用collect算子将RDD的数据全部拉取到Driver上进行处理,那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。
5.spark.default.parallelism
参数说明:该参数用于设置每个stage的默认task数量,这个参数极为重要,如果不设置可能会直接影响你的spark作业性能
参数调优建议:spark作业的默认task数量为500~1000个较为合适官网建议设置原则是:设置该参数为num-executors * executor-cores的2~3倍较为合适,比如executor的总CPU core数量为300个,那么设置1000个task是可以的,此时可以充分利用spark集群的资源
6.spark.storage.memoryFraction(内存保存部分)
参数说明:用于设置RDD持久数据在Executor内存中能占的比例,默认是0.6页就是说,默认executor60%的内存.
参数调优建议:如果Spark作业中,有较多的RDD持久化操作,该参数的值可以适当提高一些,保证持久化的数据能够容纳在内存中。避免内存不够缓存所有的数据,导致数据只能写入磁盘中,降低了性能。但是如果Spark作业中的shuffle类操作比较多,而持久化操作比较少,那么这个参数的值适当降低一些比较合适。
7.spark.shuffle.memoryFraction
参数说明:用于设置shuffle过程汇总一个task拉取上个stage的task的输出或,进行聚合操作能够使用executor内存的比例,默认是0.2也就是说,executor默认只有20%的内存用来进行该操作,shuffle操作进行聚合操作时,如果发现使用的内存超过了这个20%的限制,那么多余的数据就会溢写到磁盘文件总,此时就会极大地降低性能
参数调优:spark作业汇总的RDD持久化操作较少,shuffle操作较多时,建议降低持久化操作的内存占比,提高shuffle操作的内存比例,避免shuffle过程汇总数据过多时内存不够用,必须溢写到磁盘上,降低了性能,此外,如果发现作业由于频繁的gc导致运行缓慢,意味着task执行用户代码的内存不够用,那么同样建立调低这个参数的值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值