Spark中的Driver、Executor、Stage、TaskSet、DAGScheduler等介绍-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

工作流程

  1. Driver 创建 SparkSession 并将应用程序转化为执行计划将作业划分为多个 Stage并创建相应的 TaskSet。
  2. Driver 将 TaskSet 发送给 TaskScheduler 进行调度和执行。
  3. TaskScheduler 根据资源情况将任务分发给可用的 Executor 进程执行。
  4. Executor 加载数据并执行任务的操作将计算结果保存在内存中。
  5. Executor 将任务的执行结果返回给 Driver。
  6. DAGScheduler 监控任务的执行状态和依赖关系并根据需要调整任务的执行顺序和依赖关系。
  7. TaskScheduler 监控任务的执行状态和资源分配情况负责任务的调度和重新执行。

在 Spark 中有多个概念和组件相互协作以实现分布式数据处理。下面是这些概念和组件的详细说明及它们之间的工作关系

  1. Driver驱动器

    • Driver 是 Spark 应用程序的主要组件负责整个应用程序的执行和协调。
    • 它包含了应用程序的主函数并将用户程序转化为执行计划。
    • Driver 与集群管理器通信请求资源并监控应用程序的执行状态。
    • 它还与 Executor 进程进行通信发送任务并接收任务执行结果。
  2. Executor执行器

    • Executor 是运行在集群的工作节点上的进程负责执行任务和计算。
    • 它由集群管理器分配给应用程序用于并行处理数据和执行操作。
    • Executor 加载数据到内存中并根据分配的任务执行相应的操作。
    • 它将计算结果保存在内存中并将结果返回给 Driver。
  3. Application应用程序

    • 应用程序是用户编写的 Spark 代码用于数据处理和分析。
    • 应用程序由 Driver 执行将用户定义的操作转化为执行计划。
    • 应用程序可以包含多个 Job并且可以跨多个阶段进行分布式计算。
  4. Job作业

    • Job 是应用程序中的一个独立任务单元由用户定义的操作组成。
    • Job 定义了数据的转换和操作可以包含多个 Stage。
  5. Stage阶段

    • Stage 是 Job 的子任务单位有两种类型Shuffle Stage 和 Result Stage。
    • Shuffle Stage 包含需要进行数据洗牌的操作如 groupByKey、reduceByKey 等。
    • Result Stage 包含没有数据洗牌的操作如 map、filter 等。
    • Stage 通过依赖关系构成有向无环图DAG描述了数据的转换和操作流程。
  6. TaskSet任务集合

    • TaskSet 是一个 Stage 中所有任务的集合。
    • TaskSet 中的任务是并行执行的每个任务对应一部分数据的处理。
    • TaskSet 由 Driver 创建并发送给 TaskScheduler 进行调度和执行。
  7. Task任务

    • Task 是 Spark 中最小的执行单元对应于一个数据分区的处理。
    • 一个 Stage 中的任务数等于分区数每个任务负责处理一个数据分区。
    • 任务在 Executor 上执行加载数据并执行用户定义的操作。
  8. DAGScheduler有向无环图调度器

    • DAGScheduler 负责将应用程序转化为有向无环图DAG的形式。
    • 它根据任务之间的依赖关系将 Job 划分为多个 Stage并确定它们的执行顺序。
    • DAGScheduler 将任务发送给 TaskScheduler 进行调度和执行。
  9. TaskScheduler任务调度器

    • TaskScheduler 是 Spark 中的任务调度器负责将任务分发给 Executor 进程执行。
    • 它根据资源需求和可用资源将任务分配给合适的 Executor 进程。
    • TaskScheduler 还负责监控任务的执行状态处理任务失败和重试等情况。

关系一个Driver可以产生多个Application一个Application可以产生多个Job​​​​​​​一个Job对应多个Stage一个Stage对应一个TaskSetTaskSet是Stage内部调度的基本单位一个Stage对应多个Task一个TaskSet为一组Task集合一个Task对应一个分区

每个Application都有自己独立的执行环境和资源分配它们之间相互独立互不干扰。每个Application都会有自己的SparkContext用于与集群进行通信和资源管理。


如有错误欢迎指出

如有错误欢迎指出

如有错误欢迎指出

扩展文章推荐

1500字带你读懂 Spark任务的角色分工 - 知乎

一篇文章搞清spark任务如何执行 - 掘金

Spark[二]——Spark的组件们[Application、Job、Stage、TaskSet、Task] - 掘金

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6