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

每个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
 

 

相关文章

1.SparkStreaming是什么?SparkStreaming是SparkCore的扩展A...
本篇内容介绍了“Spark通讯录相似度计算怎么实现”的有关知识...
本篇文章给大家分享的是有关如何进行Spark数据分析,小编觉得...
本篇内容主要讲解“Spark Shuffle和Hadoop Shuffle有哪些区别...
这篇文章主要介绍“TSDB的数据怎么利用Hadoop/spark集群做数...
本篇内容介绍了“Hadoop与Spark性能原理是什么”的有关知识,...