【问题标题】:how do tasks get executed in spark engine ( referred to DAG )?任务如何在 spark 引擎(称为 DAG)中执行?
【发布时间】:2019-07-10 12:24:50
【问题描述】:

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

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

an example of a DAG

1) 任务如何划分阶段? (低级口语)

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

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

3) 最后,这些阶段何时并行工作?如何从 DAG 中知道并行执行阶段的数量?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    1.

    一般的经验法则是每个阶段都是随机操作, shuffle 操作是最终需要减少到一台机器上的操作(即 reduce、join、count) 这意味着并非所有任务都可以同时运行(尽管启动任务可以),并且它们需要跨执行程序移动数据。这意味着此操作对于常规转换操作(即地图过滤器)来说非常昂贵。

    这就是为什么根据 shuffle 操作创建阶段的原因。

    就速度而言,Spark 中 mapreduce 的最大优势之一是,一旦您设置了一个执行器,它通常会在工作期间保持活动状态,因此执行 2 个小地图操作通常会被连接到后面的单个地图场景。 shuffle 操作也不能做到这一点。

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

    2.

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

    3.

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

    【讨论】:

    • 那么同阶段的任务是同时进行的吗? ,那么同一阶段的分区之间的界线是指什么?同一阶段的任务是独立的吗?
    • 应该是的。
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多