码迷,mamicode.com
首页 > 其他好文 > 详细

Spark executor中task的数量与最大并发数

时间:2021-02-02 11:14:58      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tag   highlight   mem   cli   tle   efault   hdf   word   mit   

每个task处理一个partition,一个文件的大小/128M就是task的数量

Task的最大并发数

当task被提交到executor之后,会根据executor可用的cpu核数,决定一个executor中最多同时运行多少个task。

默认情况下一个task对应cpu的一个核。如果一个executor可用cpu核数为8,那么一个executor中最多同是并发执行8个task;

 

 

二.指定并行的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集群的资源。

三. 命令示例

spark-submit --class com.cjh.test.WordCount --conf spark.default.parallelism=12 --conf spark.executor.memory=800m --conf spark.executor.cores=2 --conf spark.cores.max=6 my.jar

 

Spark executor中task的数量与最大并发数

标签:tag   highlight   mem   cli   tle   efault   hdf   word   mit   

原文地址:https://www.cnblogs.com/ExMan/p/14358469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!