当前位置: 首页 > article >正文

Spark任务提交流程

在这里插入图片描述

当包含在application master中的spark-driver启动后,会与资源调度平台交互获取其他执行器资源,并通过反向注册通知对应的node节点启动执行容器。此外,还会根据程序的执行规划生成两个非常重要的东西,一个是根据spark任务执行计划生成n个ADG有向无环图,另一个是根据有向无环图生成对应的task set,也可以统称为stage,ADG和taskset由于宽窄依赖以及程序的复杂度从而导致本就是一对多的关系

在执行器启动并接收了taskset后,就意味着任务开始了跑数阶段,每一个taskset可以视为一个弹性数据集,简称rdd集合,不同的taskset之间以中间文件的方式传递数据,在这个过程中往往需要注意数据key的倾斜情况、task的多少导致的文件数是否合理、写入和写出的效率等,对任务的优化也生效于这些环节

不同的key分布、数据集的分区策略和中间文件生成策略会对shuffer的性能造成直接的影响,但并不是所有的teskset之间数据传递时都会发生shuffer,也有单纯的一对一数据交换。而是否发生shuffer取决于当前taskset数据血缘的宽窄与否,或者是你对rdd分区策略是否有干预,通俗的讲就是两个task set传递数据的key是否需要从新排列

应当注意的是,spark的shuffer分为两个阶段,上一个taskset的结束向文件中写数据的阶段叫做shuffer write,下一个taskset的读取叫做shuffer read,而没有发生shffer的taskset在这个流程中叫做inputdata和outputdata,可以在spark的ui上看到相关的消息

从跑数上总体来说,spark-driver内部是依靠了两个调度器,ADG调度器负责生成可用于执行的stage,而stage的调度与监控则由taskset调度器在负责,在所有的stage执行结束后,AM会通过向资源调度框架申请注销自己,来结束任务


http://www.kler.cn/a/507856.html

相关文章:

  • MarsCode青训营打卡Day1(2025年1月14日)|稀土掘金-16.最大矩形面积问题
  • ZooKeeper 核心概念与机制深度解析
  • 读《SQL经典实例》学数据库(系列一)
  • 【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题
  • 【算法学习笔记】30:埃氏筛(Sieve of Eratosthenes)和线性筛(Linear Sieve)
  • IvorySQL 4.0 之 Invisible Column 功能解析
  • 学习记录1
  • 免费送源码:Java+SpringBoot+MySQL SpringBoot网上宠物领养管理系统 计算机毕业设计原创定制
  • el-table中使用el-image图片预览被其他表格遮挡,使用z-index层级设置无效
  • 从 Web3 到元宇宙:探索数字身份的奇幻演变
  • Sqlmap入门
  • OpenCV-ED绘制的使用(附源码)
  • 1.17学习记录
  • 使用Docker部署postgresql
  • Navicat For Mysql 1112 导出密码破解 python
  • PHP生产管理系统
  • 算法-最大连续1的个数
  • IntelliJ IDEA 路径问题总结:如何配置并显示当前工作目录
  • Python学习之旅:入门阶段(七)数据结构
  • 【C++】反向迭代器
  • Kotlin语言的正则表达式
  • wordpress zibll 2025款新页脚-6ke论坛
  • uni-app:动态禁止下拉列表展示情况(如果下拉列表数据为空就拦截下拉框展示,显示提示信息)
  • LeetCode 111.二叉树的最小深度
  • 【原创】大数据治理入门(1)《大数据治理入门:为什么重要?》入门必看 高赞实用
  • SpringBoot3集成Sa-Token详解