spark 体验点滴- executor 数量 和task 并行数

本文介绍了如何指定Spark Executor的数量以及并行任务数,强调了`spark.default.parallelism`参数的重要性,并提供了调优建议。建议设置task数量为Executor CPU核心数的2~3倍,以充分利用资源。同时,探讨了`spark.storage.memoryFraction`和`spark.shuffle.memoryFraction`参数对性能的影响,提出了针对不同操作类型的内存分配策略。最后,分享了交流群和学习资源。
摘要由CSDN通过智能技术生成

一.指定spark executor 数量的公式
executor 数量 = spark.cores.max/spark.executor.cores

spark.cores.max 是指你的spark程序需要的总核数
spark.executor.cores 是指每个executor需要的核数

二.指定并行的task数量
spark.default.parallelism
参数说明:该参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。

参数调优建议:Spark作业的默认task数量为500~1000个较为合适。很多同学常犯的一个错误就是不去设置这个参数,那么此时就会导致Spark自己根据底层HDFS的block数量来设置task的数量,默认是一个HDFS block对应一个task。通常来说,Spark默认设置的数量是偏少的(比如就几十个task),如果task数量偏少的话,就会导致你前面设置好的Executor的参数都前功尽弃。试想一下,无论你的Executor进程有多少个,内存和CPU有多大,但是task只有1个或者10个,那么90%的Executor进程可能根本就没有task执行,也就是白白浪费了资源!因此Spark官网建议的设置原则是,设置该参数为num-executors * executor-cores的2~3倍较为合适,比如Executor的总CPU core数量为300个,那么设置1000个task是可以的,此时可以充分地利用Spark集群的资源。

三. 命令示例
1
spark-submit --class com.cjh.test.WordCount --conf spark.default.parallelism=12 --conf spark.exe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值