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

Spark调度模块

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

147caa7920e90be883ff02634b7dbbf119d.jpg

之前我们提到:Driver 的sc负责和Executor交互,完成任务的分配和调度,在底层,任务调度模块主要包含两大部分:

1)DAGScheduler

2 ) TaskScheduler

它们负责将用户提交的计算任务按照DAG划分为不同的阶段并且将不同阶段的计算任务提交到集群进行最终的计算。整个过程可以使用下图表示

a7dae112a10cd2acba1961b255ba12c5da2.jpg

1.RDD Objects可以理解为用户实际代码中创建的RDD,这些代码逻辑上组成了一个DAG。

2.DAGScheduler主要负责分析依赖关系,然后将DAG划分为不同的Stage(阶段),其中每个Stage由可以并发执行的一组Task构成,这些Task的执行逻辑完全相同,只是作用于不同的数据。

在DAGScheduler将这组Task划分完成后,会将这组Task提交到TaskScheduler。

3.TaskScheduler通过Cluster Manager 申请计算资源,比如在集群中的某个Worker Node上启动专属的Executor,并分配CPU、内存等资源

4.接下来,就是在Executor中运行Task任务,如果缓存中没有计算结果,那么就需要开始计算,同时,计算的结果会回传到Driver或者保存在本地。

Scheduler的实现概述

e509271f73ccd79bbc57141626b5db415d5.jpg任务调度模块涉及的最重要的三个类是:

1)org.apache.spark.scheduler.DAGScheduler  前面提到的DAGScheduler的实现。

将一个DAG划分为一个一个的Stage阶段(每个Stage是一组Task的集合)

然后把Task Set 交给TaskScheduler模块。

2)org.apache.spark.scheduler.TaskScheduler

它的作用是为创建它的SparkContext调度任务,即从DAGScheduler接收不同Stage的任务。向Cluster Manager 申请资源。然后Cluster Manager收到资源请求之后,在Worker为其启动进程

3)org.apache.spark.scheduler.SchedulerBackend

是一个trait,作用是分配当前可用的资源,具体就是向当前等待分配计算资源的Task分配计算资源(即Executor),并且在分配的Executor上启动Task,完成计算的调度过程。

4)AKKA是一个网络通信框架,类似于Netty,此框架在Spark1.8之后已全部替换成Netty

任务调度流程图

6a6da99025a17af61219cb1be068eb2cb75.jpg

转载于:https://my.oschina.net/u/3701483/blog/3011165

相关文章:

  • 封装dialog弹窗
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法
  • 搭建gitbook 和 访问权限认证
  • 测试开发系类之接口自动化测试
  • Chrome 控制台报错Unchecked runtime.lastError: The message port closed before a response was received...
  • 读vue源码看前端百态2--打包工具
  • NoSQL是什么?
  • [ES-5.6.12] x-pack ssl
  • 20190220w
  • 怎么将电脑中的声音录制成WAV格式
  • 你的微博也被盗赞?试试HSTS强制HTTPS加密
  • Linux或UNIX系统配置检查
  • NutzWk 5.1.5 发布,Java 微服务分布式开发框架
  • 17-成员访问权限
  • python3.6+scrapy+mysql 爬虫实战
  • Angular2开发踩坑系列-生产环境编译
  • Apache Spark Streaming 使用实例
  • Asm.js的简单介绍
  • JavaScript的使用你知道几种?(上)
  • Java应用性能调优
  • js中的正则表达式入门
  • Python连接Oracle
  • rabbitmq延迟消息示例
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vim 折腾记
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 程序员该如何有效的找工作?
  • 大主子表关联的性能优化方法
  • 离散点最小(凸)包围边界查找
  • 前端知识点整理(待续)
  • 少走弯路,给Java 1~5 年程序员的建议
  • hi-nginx-1.3.4编译安装
  • 阿里云服务器购买完整流程
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #14vue3生成表单并跳转到外部地址的方式
  • #HarmonyOS:Web组件的使用
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Z2294. 打印树的直径
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $.ajax()方法详解
  • (1)(1.13) SiK无线电高级配置(五)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三)elasticsearch 源码之启动流程分析
  • (四)图像的%2线性拉伸
  • (一)SpringBoot3---尚硅谷总结
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ./configure,make,make install的作用