spark executor

来源:互联网 发布:咫尺网络登录 编辑:程序博客网 时间:2024/05/22 04:50

spark executor

Executorspark任务(task)的执行单元,运行在worker上,但是不等同于worker,实际上它是一组计算资源(cpu核心、memory)的集合。一个worker上的memorycpu由多个executor共同分摊。

 

spark.executor.cores顾名思义这个参数是用来指定executorcpu内核个数,分配更多的内核意味着executor并发能力越强,能够同时执行更多的task

 

 

spark.cores.max 为一个application分配的最大cpu核心数如果没有设置这个值默认为spark.deploy.defaultCores

 

spark.executor.memory:配置executor内存大小

 


笔者在使用过程中总结如下规律:

  • executor个数 = spark.max.cores / spark.executor.cores,集群的executor个数由spark.max.coresspark.executor.cores共同决定,注意在standalonemesos coarse-grained模式 下cores不要大于对应节点的内核数
  • 要保证每个worker上启动的executor均衡。如果不均衡的话会造成数据倾斜,拉慢任务的整体速 度。在运行过程中一个stask对应一个partition,配置不均衡,会导致每个节点处理的任务量不一样,因此会产生短板效应。
  • 如果运行过程中发现GC时间变红(管理界面可以看到),应该适当调大spark.executor.memory