spark参数调优

1.num-executors

该参数用于设置Spark作业总共要用多少个Executor进程来执行。Driver在向YARN集群管理器申请资源时,YARN集群管理器会尽可能按照你的设置来在

集群的各个工作节点上,启动相应数量的Executor进程。

2.executor-memory

该参数用于设置每个Executor进程的内存。Executor内存的大小,很多时候直接决定了Spark作业的性能,而且跟常见的JVM OOM异常,也有直接的关联。

3.executor-cores

该参数用于设置每个Executor进程的CPU core数量。这个参数决定了每个Executor进程并行执行task线程的能力。每个Executor进程的CPU core数量越多,越能够快速地执行完分配给自己的所有task线程。

4.driver-memory

该参数用于设置Driver进程的内存。

Driver的内存通常来说不设置,或者设置1G左右应该就够了。需要注意的一点是,如果需要使用collect算子将RDD的数据全部拉取到Driver上进行处理,

必须确保Driver的内存足够大,否则会出现OOM内存溢出的问题。

5.spark.default.parallelism

该参数用于设置每个stage的默认task数量。

如果不去设置这个参数,Spark会根据底层HDFS的block数量来设置task的数量,默认是一个HDFS block对应一个task。

Spark官网建议,设置该参数为num-executors * executor-cores的2~3倍。

6.spark.storage.memoryFraction

该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6。也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。

如果Spark作业中,有较多的RDD持久化操作,该参数的值可以适当提高一些,保证持久化的数据能够容纳在内存中。

但是如果Spark作业中的shuffle类操作比较多,而持久化操作比较少,那么这个参数的值适当降低一些比较合适。

7.spark.shuffle.memoryFraction

该参数用于设置shuffle过程中一个task拉取到上个stage的task的输出后,进行聚合操作时能够使用的Executor内存的比例,默认是0.2。

8.示例

./bin/spark-submit \

--master yarn-cluster \

--num-executors 100 \

--executor-memory 6G \

--executor-cores 4 \

--driver-memory 1G \

--conf spark.default.parallelism=1000 \

--conf spark.storage.memoryFraction=0.5 \

--conf spark.shuffle.memoryFraction=0.3 \

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • spark.shuffle.file.buffer 默认值:32k参数说明:该参数用于设置shuffle writ...
    简书生活2017阅读 4,605评论 0 3
  • 前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的...
    Alukar阅读 4,390评论 0 2
  • 1 前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数...
    wisfern阅读 7,085评论 3 39
  • 每当想起那年暑假捉“贼”的经历,我还会忍不住笑出声来。好不容易盼到了暑假,终于可以晚睡晚起,我每天早上总是八点起床...
    实验小学李兴果阅读 1,135评论 0 0
  • 方法给刚刚给vv到底v好好干v吃VCD多大的 吸血鬼尺寸
    寻米1号客服阅读 1,504评论 0 1

友情链接更多精彩内容