美文网首页
Spark执行流程概要与DAG

Spark执行流程概要与DAG

作者: 不愿透露姓名的李某某 | 来源:发表于2019-07-23 11:38 被阅读0次

    一:RDD Objects

    Spark执行代码块时会先构建DAG(有向无环图),描述了我们将要进行的操作

    二:DAGScheduler

    第二阶段为将一个DAG切分成多个stages,DAGScheduler切分的依据是Shuffle(宽依赖),在RDD执行过程中调用了很多算子,执行了很多RDD,并且还会调用Transformation,再执行很多的RDD。所以第二阶段会执行DAGScheduler切分stages装到TaskSet再发送给TaskScheduler,并且切分之后的stages他们的业务逻辑相同,只是数据不同而已

    三:TaskScheduler

    将上个阶段生成的多个Task调度到Worker的Executor中,意味着该Task要序列化,发送过去之后再反序列化,

    四:Worker:

    Executor接收Task,反序列化之后丢到线程池中执行

    Spark执行流程图

    DAG:(有向无环图):数据执行过程,有方向,无闭环

    描述多个RDD的转换关系,任务执行时,可以按照DAG的描述,执行真正的计算(数据被操作的一个过程)

    DAG是有边界的:开始(通过SparkContext创建的RDD),结束(触发Action,调用 Run job 就是一个完整的DAG了)

    一个Saprk Aoolication有多少个DAG:一到多个(触发一个Action就有一个DAG)

    一个DAG可能产生多种不同类型和功能的Task,会有不同的阶段

    一个RDD只是描述了任务执行过程中的一个环节,而DAG由一到多个RDD组成,描述了数据计算的所有环节(过程)

    为什么要切分Stage?
          一个复杂的业务逻辑(将多台机器上的具有相同属性的数据聚集到一台机器上:Shuffle)

               如果有Shuffle,那么就意味着前面阶段产生结果后,才能执行下一个阶段(下一阶段的计算需要上个阶段的数据)

                在同一个Stages中,会有多个算子,可以合并在一起,我们称其为pipeline(流水线:严格按照流程、顺序执行)

    DAG流程图 Spak整体执行流程

    相关文章

      网友评论

          本文标题:Spark执行流程概要与DAG

          本文链接:https://www.haomeiwen.com/subject/nskolctx.html