资源参数说明
num-executors
参数说明:该参数用于设置Spark作业总共要用多少个Executor进程来执行。
参数调优建议:每个Spark作业的运行一般设置50-100个左右。
executor-cores
参数说明:该参数用于设置每个Executor进程的CPU core数量。
参数调优建议:2-4。根据不同部门的资源队列来定,可以看看资源队列的最大CPU core限制是多少,此外,如果你是跟团队里其他人共享这个资源队列,num-executors * executor-cores不要超过队列总CPU core的1/3-1/2左右比较合适,最好的应该就是一个cpu core对应两到三个task。
executor-memory
参数说明:该参数用于设置每个Executor进程的内存。
参数调优建议:4G-8G。num-executors*executor-memory是不能超过队列的最大内存量的。此外,如果你是跟团队里其他人共享这个资源队列,那么申请的内存量最好不要超过资源队列最大总内存的1/3~1/2。
driver-memory
参数说明:该参数用于设置Driver进程的内存。
参数调优建议:Driver的内存通常来说不设置,或者设置1G左右应该就够了。唯一需要注意的一点是,如果需要使用collect算子将RDD的数据全部拉取到Driver上进行处理,那么必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。
spark.storage.memoryFraction
参数说明:该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6。
参数调优建议:如果Spark作业中,有较多的RDD持久化操作,该参数的值可以适当提高一些。避免内存不够缓存所有的数据。但是如果Spark作业中的shuffle类操作比较多,而持久化操作比较少,适当降低一些。此外,如果发现作业由于频繁的gc导致运行缓慢(通过spark web ui可以观察到作业的gc耗时),意味着task执行用户代码的内存不够用,建议调低这个参数的

本文详细介绍了Spark作业的资源参数调优,包括num-executors、executor-cores、executor-memory和driver-memory的设置建议。同时,针对shuffle操作,讨论了spark.shuffle.file.buffer和spark.reducer.maxSizeInFlight等参数如何调整以优化性能,并提到了重试和等待间隔参数对shuffle稳定性的影响。
最低0.47元/天 解锁文章
815

被折叠的 条评论
为什么被折叠?



