在Spark中,一个执行器可以同时运行多个任务,可能是2个、5个或6个。
Spark如何计算(或计算)在同一个executor中并发运行的任务数量,即一个executor中可以并发运行多少个任务?
一个executor可能正在执行一个任务,但是可能会将另一个任务放在同一个executor上并发运行?它的标准是什么?
executor具有固定数量的内核和内存。由于我们没有为Spark中的任务指定内存和内核要求,如何计算一个executor中可以并发运行的内存和内核数量?
发布于 2016-09-08 16:13:16
在executor中并行运行的任务数量=配置的核心数量。您可以随时通过配置更改此号码。executor运行的任务总数(并行或顺序)取决于创建的任务总数(通过拆分的数量)和executor的数量。
在一个执行器中运行的所有任务共享配置的相同内存。在内部,它只启动与核心数量一样多的线程。
发布于 2016-12-16 03:19:06
一个最可能的问题可能是您正在处理的RDD中的不对称分区。如果2-6个分区上有大量数据,那么为了减少网络上的数据混洗,Spark将尝试让executors处理驻留在自己节点上的本地数据。所以你会看到这2-6个执行器工作了很长一段时间,而其他的会在几毫秒内处理完这些数据。
您可以在this stackoverflow question中找到有关这方面的更多信息。
https://stackoverflow.com/questions/39383984
复制相似问题