Spark执行者&任务并发

时间:2016-09-08 06:31:23

标签: apache-spark architecture internal

在Spark中,执行者可以同时运行许多任务,可能是2或5或6。

Spark如何同时计算(或计算)在同一执行程序中运行的任务数,即同时在执行程序中运行多少任务?

执行程序可能正在执行一个任务,但是可以在同一个执行程序上同时运行另外一个任务?该标准是什么?

执行人具有固定数量的核心和记忆。因为我们没有指定记忆和Spark中任务的核心要求,如何计算在执行程序中可以并发运行的数量?

2 个答案:

答案 0 :(得分:2)

在执行程序中配置的任务数量=并行配置的内核数量。 您始终可以通过配置更改此编号。 执行程序整体(并行或顺序)运行的任务总数取决于创建的任务总数(通过拆分数)和执行程序数。

在一个执行程序中运行的所有任务共享相同的内存配置。在内部,它只启动与核心数量一样多的线程。

答案 1 :(得分:0)

最可能的问题可能是您正在处理的RDD中的偏斜分区。如果2-6个分区上有大量数据,那么为了减少网络上的数据混乱,Spark会尝试执行程序处理本地驻留在自己节点上的数据。因此,您将看到那些2-6执行者长时间工作,其他人将在几毫秒内完成数据。

您可以在this stackoverflow question中找到更多相关信息。