如何在Spark Engine(称为DAG)中执行任务?

时间:2019-07-10 12:24:50

标签: apache-spark

如果有人回答我并向我解释这件事,我将不胜感激。

据我了解,DAG是完成工作的物理计划,但我不了解它实际上是如何并行执行任务的。 我阐述了我的问题,希望我能得到答案。

an example of a DAG

1)任务如何分成阶段? (在低级发言中)

2)提供大量执行者,一个阶段中的任务是否同时工作?

,如果是,这是否意味着并行运行的任务数等于**独立阶段的任务数**?

3)最后,各阶段何时并行工作?我怎么知道DAG中并行执行阶段的数量?

1 个答案:

答案 0 :(得分:0)

1。

一般的经验法则是,每个阶段都是随机操作, 随机操作是最终需要减少到一台机器的操作(即reduce,join,count) 这意味着并非所有任务都可以并发运行(尽管起始任务可以),并且它们需要在执行器之间移动数据。这意味着此操作对于常规转换操作(即地图过滤器)而言非常昂贵。

这就是为什么根据随机播放操作创建阶段的原因。

Spark进行mapreduce的最大优势之一是速度,一旦您设置了执行程序,它通常会在整个工作过程中保持存活,因此执行2个小地图操作通常会合并在一起,形成一个单独的地图现场。随机操作无法完成相同的操作。

总而言之,每个阶段都包含可以并行运行的任务。

2。

能够同时运行的任务数是(执行者数*每个执行器上的核心数)

3。

不同阶段不会仅在并行任务中运行