spark executor

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zyc920716/article/details/72885995

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

 

 

展开阅读全文

没有更多推荐了,返回首页