Spark中的Driver、Executor、Stage、TaskSet、DAGScheduler等介绍

工作流程:

  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对应一个TaskSet(TaskSet是Stage内部调度的基本单位);一个Stage对应多个Task(一个TaskSet为一组Task集合);一个Task对应一个分区;

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


如有错误,欢迎指出!!!

如有错误,欢迎指出!!!

如有错误,欢迎指出!!!

扩展文章推荐:

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/157401.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 chinese-roberta-wwm-ext 微调训练中文命名实体识别任务

一、模型和数据集介绍 1.1 预训练模型 chinese-roberta-wwm-ext 是基于 RoBERTa 架构下开发,其中 wwm 代表 Whole Word Masking,即对整个词进行掩码处理,通过这种方式,模型能够更好地理解上下文和语义关联,提高中文文…

数据仓库Hive(林子雨课程慕课)

文章目录 9.数据仓库Hive9.1 数据仓库的概念9.2 Hive简介9.3 SQL语句转换为MapReduce作业的基本原理9.4 Impla9.4.1 Impala简介9.4.2 Impala系统架构9.4.3 Impala查询执行过程9.4.4 Impala与Hive的比较 9.5 Hive的安装和基本操作9.5.1 Hive安装9.5.2 Hive基本操作 9.数据仓库Hi…

黑马点评-05缓存穿透问题及其解决方案,缓存空字符串或使用布隆过滤器

缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高,如果大量的请求同时访问这种…

十大排序算法Java实现及时间复杂度

文章目录 十大排序算法选择排序冒泡排序插入排序希尔排序快速排序归并排序堆排序计数排序基数排序桶排序时间复杂度 参考资料 十大排序算法 选择排序 原理 从待排序的数据元素中找出最小或最大的一个元素,存放在序列的起始位置, 然后再从剩余的未排序元…

C++类和对象(下)

目录 一、初始化列表 二、单参构造参数和explicit关键字 三、匿名对象 四、static成员 五、友元 六、内部类 一、初始化列表 之前我们在构造函数中写得还不错,也没发现什么问题,为什么C还有搞一个初始化列表呢? 如下这段代码&#x…

mars3d的api文档关于addDynamicPosition查找使用说明

示例链接:功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 api地址:Mars3D三维可视化平台 | 火星科技 说明: 1.用户反馈不知道如何搜索这个属性的用法 说明: 1. 示例代码中的graphic.addDynamicPosition()说明这个addDynam…

基本微信小程序的二手车交易平台

项目介绍 首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数…

@MultipartConfig注解

前言: 在学习Javaweb的Servlet文件上传和下载的过程中,我们会遇到一个特殊的注解---MultipartConfig。 MultipartConfig的适用情况: 1.文件上传: 当您的应用程序需要接收用户上传的文件时,可以在相应的 Servlet 上使用 Multipart…

Jmeter连接mysql数据库详细步骤

一、一般平常工作中使用jmeter 连接数据库的作用 主要包括: 1、本身对数据库进行测试(功能、性能测试)时会需要使用jmeter连接数据库 2、功能测试时,测试出来的结果需要和数据库中的数据进行对比是否正确一致。这时候可以通过j…

C++ 位图与布隆过滤器

目录 前言位图场景演示应用场景模拟实现问题例题 布隆过滤器例子理解应用 例题 前言 位图与布隆过滤器是用来在海量数据中判断一个数据在不在的问题的数据结构,这种数据结构在存储空间上大大的优于红黑树、哈希等数据结构 位图 我们为了处理一个数据在海量数据中…

SQL开发笔记之专栏介绍

Sql是用于访问和处理数据库的标准计算机语言,使用SQL访问和处理数据系统中的数据,这类数据库包括:Mysql、PostgresSql、Oracle、Sybase、DB2等等,数据库无非围绕着“增删改查”的核心业务进行开发。并且目前绝大多数的后端程序开发…

很烦的Node报错积累

目录 1. 卡在sill idealTree buildDeps2、Node Sass老是安装不上的问题3、unable to resolve dependency tree4、nvm相关命令5、设置淘宝镜像等基操5.1 镜像 5.2 npm清理缓存6、Browserslist: caniuse-lite is outdated loader 1. 卡在sill idealTree buildDeps 参考&#xf…

国际通用的Bug管理工具推荐:多款工具助力项目开发与管理

国际通用的bug管理工具有:1、Zoho Projects;2、Tracup;3、Bugtags;4、QC(QualityCenter);5、Bugzilla;6、EasyBUG;7、Mantis;8、WebIssues。Zoho Projects拥有专业的缺陷管理模块&am…

复数的三角形式与指数形式

See https://blog.csdn.net/u011089570/article/details/102685877

深入了解基数排序:原理、性能分析与 Java 实现

基数排序(Radix Sort)是一种非比较性排序算法,它根据元素的每个位上的值来进行排序。基数排序适用于整数或字符串等数据类型的排序。本文将详细介绍基数排序的原理、性能分析及java实现。 基数排序原理 基数排序的基本原理是按照低位先排序&…

android 固定进度环形刷新效果

android 固定进度无限旋转的环形效果 效果图 Activity 中使用 val rotation: ObjectAnimator ObjectAnimator.ofFloat(progressBar, "rotation", 0f, 360f) rotation.duration 000 // 旋转持续时间为2秒 rotation.repeatCount ObjectAnimator.INFINITE // 设置为…

保姆式教程:MAC安装Android studio(包括安装JDK,Android SDK),解决gradle下载慢的问题

文章目录 参考文章安装JDK并配置环境变量安装JDK配置JDK相关的环境变量 Android studio 安装下载Android studiogradle下载慢解决方法 安装Android SDK选择jdk版本安装SDK并配置环境变量 参考文章 原文链接 原文链接 安装JDK并配置环境变量 安装JDK 下载地址 下载后双击安装…

优化|优化处理可再生希尔伯特核空间的非参数回归中的协变量偏移

原文:Optimally tackling covariate shift in RKHS-based nonparametric regression. The Annals of Statistics, 51(2), pp.738-761, 2023.​ 原文作者:Cong Ma, Reese Pathak, Martin J. Wainwright​ 论文解读者:赵进 编者按: …

mac上安装mysql

下载地址:https://downloads.mysql.com/archives/community/ 可以选择dmg安装包,也可以选择tar包。 1、dmg安装包: 1.1)安装: 类似windows的exe,直接next即可。 注意:安装完成之后会弹出一个…

redis 哨兵 sentinel(一)配置

sentinel巡查监控后台master主机是否故障,如果故障根据投票数自动将某一个从库转换为新主库,继续对外服务 sentinel 哨兵的功能 监控 监控主从redis库运行是否正常消息通知 哨兵可以将故障转移的结果发送给客户端故障转移 如果master异常,则…