微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐