zoukankan      html  css  js  c++  java
  • Spark Task 概述

    Task的执行流程:

    1. Driver端中的 CoarseGrainSchedulerBackend 给 CoarseGrainExecutorBacken 发送 LaunchTask 消息

    2. CoarseGrainExecutorBacken 在收到消息后,首先会反序列化 TaskDescription

    3. Executor 通过 launchTask 来执行 Task

    4. TaskRunner 用 ThreadPool 来运行具体的 Task。在 TaskRunner 的 run 方法中首先会调用 statusUpdate 给 Driver发消息汇报自己现在的状态是 Running 状态。

    5. TaskRunner 内部会做一些准备工作,如反序列化 Task 的依赖。然后通过网络来获取依赖的文件、Jar 等

    6. 反序列化 Task本身

    7. 调用反序列化后的 Task.run 方法来执行任务 并获得执行结果。run 方法内部会调用 runTask,这个方法内部会调用 RDD 的 iterator() 方法,iterator 方法就是我们针对当前 Task所对就的 Partition 进行计算的关键所在,会迭代 Partition 的数据并交给我们自定义的  function 进行处理。

        对于 ShuffleMapTask, 首先要对 RDD 以及其依赖关系进行反序列化。

    8. 把执行结果序列化,并根据大小判断不同的结果传回给 Driver 的方式

    9. CoarseGrainExecutorBackend 给 DriverEndpoint 发送 StatusUpdate来传输执行结果, DriverEndpoint 会把执行结果传递给 TaskSchedulerImpl 处理, 针后交给 TaskResultGetter 内部通过线程去分别处理 Task 成功和失败时候的不同情况,然后告诉 DAGScheduler 任务处理结束的状况。

    补充说明: 在执行具体 Task 的业务逻辑前会进行四次反序列化:

    1. TaskDescription 的反序列化

    2. 反序列化 Task 的依赖

    3. Task 的反序列化

    4. RDD反序列化

  • 相关阅读:
    JWT在ASP.NET Core3.1的应用
    .NET Core 3.0中IAsyncEnumerable<T>有什么大不了的?
    C#类继承中构造函数的执行序列
    C#中的out 参数,ref参数,值参数
    ABP之启动配置
    ABP之模块系统
    ABP之N层架构
    ABP之什么是ABP(ASP.NET Boilerplate)
    如何使用ASP.NET Core、EF Core、ABP(ASP.NET Boilerplate)创建分层的Web应用程序(第一部分)
    ABP之Setting
  • 原文地址:https://www.cnblogs.com/langfanyun/p/8137999.html
Copyright © 2011-2022 走看看