如果有人回答我并向我解释这件事,我将不胜感激。
据我了解,DAG是完成工作的物理计划,但我不了解它实际上是如何并行执行任务的。 我阐述了我的问题,希望我能得到答案。
1)任务如何分成阶段? (在低级发言中)
2)提供大量执行者,一个阶段中的任务是否同时工作?
,如果是,这是否意味着并行运行的任务数等于**独立阶段的任务数**?
3)最后,各阶段何时并行工作?我怎么知道DAG中并行执行阶段的数量?
答案 0 :(得分:0)
1。
一般的经验法则是,每个阶段都是随机操作, 随机操作是最终需要减少到一台机器的操作(即reduce,join,count) 这意味着并非所有任务都可以并发运行(尽管起始任务可以),并且它们需要在执行器之间移动数据。这意味着此操作对于常规转换操作(即地图过滤器)而言非常昂贵。
这就是为什么根据随机播放操作创建阶段的原因。
Spark进行mapreduce的最大优势之一是速度,一旦您设置了执行程序,它通常会在整个工作过程中保持存活,因此执行2个小地图操作通常会合并在一起,形成一个单独的地图现场。随机操作无法完成相同的操作。
总而言之,每个阶段都包含可以并行运行的任务。
2。
能够同时运行的任务数是(执行者数*每个执行器上的核心数)
3。
不同阶段不会仅在并行任务中运行