前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spark作业调度

Spark作业调度

作者头像
用户3003813
发布于 2018-09-06 05:12:26
发布于 2018-09-06 05:12:26
75200
代码可运行
举报
文章被收录于专栏:个人分享个人分享
运行总次数:0
代码可运行

    Spark在任务提交时,主要存在于Driver和Executor的两个节点.

(1)Driver的作用: 用于将所有要处理的RDD的操作转化为DAG,并且根据RDD DAG将JBO分割为多个Stage,最后生成相应的task,分发到各个Executor执行.

流程:sc.runJob -> DAGScheduler.runJob ->submitJob ->DAGEventProcessActor ->dagScheduler.handleJobSubmitted ->submitStage ->submitMissingTasks ->taskScheduler.submitTasks -> schedulerBackend.reviveOffers ->ReviveOffers ->DriverActor ->makeOffers -> resourceOffers ->launchTasks ->CoarseGrainedExecutorBackend(Executor)

其中handleJobSubmitted和submitStage主要负责依赖性分析,生成finalStage,根据finalStage来生成job.

源码newStage用来创建一个新的Stage

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private def newStage(
        rdd:RDD[],
        numTasks: Int,
        shuffleDep: Option[ShuffleDependency[_,_,_]],
        jobId:Int,
        callSite:CallSite)
    :stage =
    {
        val id = nextStageId.getAndIncrement()
        val stage = new Stage(id,rdd,numTasks,shuffleDep,getParentStages(rdd,jobId),jobId,callSite)
        stageIdToStage(id) = stage 
        updateJobIdStageIdMaps(jobId,stage)
        stageToInfos(stage) = StageInfo.fromStage(stage)
        stage
}

spark在创建一个Stage之前,必须知道该Stage需要从多少个Partition读入数据,据此来创建Task数。源码Stage:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private[spark] class stage(
    val id:Int //stage的序号越大,数值越大
    val rdd: RDD[_], //归属于本stage的最后一个rdd
    val numTasks:Int, //创建的Task的数目,等于父rdd的输出Partition数目
    
    val shuffleDep:Option[ShuffleDependency[_,_,_]],//是否存在shuffle
    val parents:List[Stage],//父stage列表
    val jobId:Int,//作业id
    val callSite:CallSite)

Stage的划分的重要依据就在于是否有Shuffle操作,既宽依赖(RDD的宽依赖和窄依赖请参考前文,或者百度- -),如果有,则创建一个新的stage.Stage的划分完毕就明确了很多内容了,如下:

(1)产生的stage需要从多少个Partition中读取数据

(2)产生的stage会生成多少个Partition

(3)产生的stage是否属于shuffle

当确认了有多少个Partition,其实就确认了有多少个task。

当作业提交及执行期间,Spark集群中存在大量的消息的交互,所以使用AKKA 进行消息的接收,消息的处理和消息的发送。

下面开始在各个Executor中执行Task。然而Task又被分为ShuffleMapTask和ResultTask两种,相当于Hadoop的Map和Reduce.每个Stage根据isShuffleMap来标记确定Task类型,来区分ShuffleMapTask和ResultTask.一旦task类型和数量确定,下来就分发到各个executor,由Executor启动县城来执行。(从计划到执行)

TaskschedulerImple发送ReviveOffers消息给DriverActor,DriverActor在收到ReviveOffers消息后,调用makeOffers函数进行处理。源码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def makeOffers(){
    launchTasks(scheduler.resourceOffers(
    executorHost.toArray.map{case(id,host)=>new WorkerOffer(id,host,freeCores(id))}))

makeOffers函数主要用来找寻空闲的Executor,随机分发,尽可能的将任务平摊到各个executor中。发现有空闲的Executor,将任务列表中的部分任务利用launchTasks发送给制定的Executor.Task执行完毕.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
多台电脑共享一套鼠标键盘的免费方法
本文转载:http://www.cnblogs.com/fangpage/archive/2011/07/22/inputdirector.html
跟着阿笨一起玩NET
2018/09/19
6.1K0
多台电脑共享一套鼠标键盘的免费方法
mac键位的键盘_键盘键位图高清126键
mac和Windows在键盘上还是有一些差距的,在习惯了Windows的键位之后还是很难第一时间转换到mac的键位上,为大家整理了一下mac的键位分布,和常用的快捷键。
全栈程序员站长
2022/11/17
3.3K0
mac键位的键盘_键盘键位图高清126键
多台电脑共用鼠标键盘(局域网内)
Synergy是一款跨平台的键盘鼠标共享软件,现在有Synergy 和Synergy 64位的Win版本、Synergy Mac版,Synergy 能够让使用者仅用一套键盘鼠标,就同时操控多部计算机的免费工具软件。使用者能够在包括 Windows 、 Linux 、 Mac OS 等不同的系统上安装它,并且在设定好主从关系后,就能够透过一组键盘鼠标来进行多部计算机的操控。
逍遥子大表哥
2021/12/17
2.8K0
多台电脑共用鼠标键盘(局域网内)
一套键盘鼠标跨电脑切换使用「建议收藏」
身为一名涉猎领域广泛的码农,工作间中往往会出现同时使用超过一台电脑的场景,笔记本+台式机基本是常态,甚至会出现Win+MAC或者Win+LINUX这样的跨平台同时操作需求。那么最令人烦恼的莫过于切换使用电脑时需要来回切换键鼠,如果可以用桌面上的一套键鼠,实现对多台电脑的无缝操作切换,岂不是美滋滋。
全栈程序员站长
2022/11/07
4.5K0
Mac 键盘上的 Windows 按键映射
Mac 键盘上很多按键的功能与 Windows 键盘按键的功能相同。以下是其中的一些按键:
云深无际
2021/04/14
3K0
Mac 键盘上的 Windows 按键映射
在多台电脑设备间共享一套鼠标键与盘
在办公和家中场景中,有时候需要同时操作多个电脑设备,如果每套电脑用一套键盘鼠标比较占有空间不方便,所以会考虑如何在设备之间共享一套键盘鼠标设备。
糖果
2020/05/14
2.2K0
你的下一台电脑何必是电脑,探索不一样的远程操作
最近全国各地都在迎战疫情,远程办公逐渐变成一种常态被大家所接受,作为程序员我们每天唯一离不开的就是电脑,虽然各种远程软件层出,但是在移动端的体验一直不佳,所以我们每天不得不背着沉重的笔记本东奔西跑。
石臻臻的杂货铺[同名公众号]
2022/06/12
6490
你的下一台电脑何必是电脑,探索不一样的远程操作
Windows常用快捷键
老猫-Leo
2023/12/11
2970
你的下一台电脑何必是电脑,探索不一样的远程操作
最近全国各地都在迎战疫情,远程办公逐渐变成一种常态被大家所接受,作为程序员我们每天唯一离不开的就是电脑,虽然各种远程软件层出,但是在移动端的体验一直不佳,所以我们每天不得不背着沉重的笔记本东奔西跑。
石臻臻的杂货铺[同名公众号]
2022/06/10
6160
打造前端MAC工作站(一)简单系统配置
在上一个系列的打造黑苹果的系列博文中,我讲解了如何组装以及安装黑苹果系统。有了苹果系统之后,我们就需要进行各方面的设置,来将我们的MAC打造成我们前端专用的工作站。
FungLeo
2022/05/05
8950
打造前端MAC工作站(一)简单系统配置
开发者的如何优雅的使用OSX
Mac对于IT开发者来说是最好的开发工具,没有之一。
老马
2018/02/18
1.4K0
开发者的如何优雅的使用OSX
12.1 使用键盘鼠标监控钩子
本节将介绍如何使用Windows API中的SetWindowsHookEx和RegisterHotKey函数来实现键盘鼠标的监控。这些函数可以用来设置全局钩子,通过对特定热键挂钩实现监控的效果,两者的区别在于SetWindowsHookEx函数可以对所有线程进行监控,包括其他进程中的线程,而RegisterHotKey函数只能对当前线程进行监控。
王瑞MVP
2023/10/07
4910
12.1 使用键盘鼠标监控钩子
电脑键盘功能基础知识汇总
电脑键盘是我们平时使用电脑时最常用的输入设备之一,了解键盘的基本功能,不见能提升工作效率,还能让我们在使用电脑时更加得心应手。今天要和大家探讨一下电脑键盘的基础功能,并介绍一些小技巧,帮助大家更好的利用这个工具。
用户7704932
2024/09/11
4120
电脑键盘功能基础知识汇总
电脑外设(I/O)简介:键盘鼠标
电脑外设:是除主机外的大部分硬件设备都可称作外部设备,或叫外围设备,简称外设。计算机系统没有输入输出设备,就如计算机系统没有软件一样,是毫无意义的。
用户5410712
2022/06/01
1.4K0
电脑外设(I/O)简介:键盘鼠标
Mac三分之一 系统初尝
https://www.apple.com/cn/shop/product/FPXT2CH/A
acc8226
2022/05/17
1.3K0
Mac三分之一 系统初尝
IDEA-从 Windows 过度到 Mac 必备快捷键对照表
从 Windows 过度到 Mac 必备快捷键对照表 Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == Delete ⌦ == 向前删除键(Fn+Delete) ↑ == 上箭头 ↓ == 下箭头 ← == 左箭头 → == 右箭头 ⇞ == Page Up(Fn+↑) ⇟ == Page Down(Fn+↓) Home == Fn + ← End == Fn +
cwl_java
2020/02/19
6.4K0
linux连接蓝牙键盘_双系统蓝牙键盘切换
后记: 写完这篇文章后又先后重新连接过两次, 每次都会下意识担心, 完了完了这次可能再也连不上了(想起当初一直连不上双系统,被蓝牙键盘支配的日日夜夜), 结果我按着自己写的这篇文章来搞, 还不是每次都成功了hh.
全栈程序员站长
2022/11/19
11K0
linux连接蓝牙键盘_双系统蓝牙键盘切换
安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器
本文源码下载地址:《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》源码 多文源码打包下载: 《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》+《蓝牙HID TouchScreen协议让你的安卓手机变成触摸屏》两份源码打包下载 《仅通过蓝牙HID将安卓手机模拟成鼠标和键盘》+《蓝牙HID TouchScreen协议让你的安卓手机变成触摸屏》+《通过蓝牙将安卓手机模拟成游戏方向盘-支持旋转轮胎》三份源码打包下载
全栈程序员站长
2022/11/01
5.9K0
安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器
Windows中的键盘快捷方式大全
Windows有很多键盘快捷方式,使用键盘快捷方式能够大大提高使用windows的效率,同时还能提升自己的逼格,背熟几个快捷方式,操作起来行云流水犹如大神一般!
用户7657330
2020/08/14
6K0
Mac下键盘使用
要使用键盘快捷键,请按住一个或多个修饰键,同时按快捷键的最后一个键。例如,要使用快捷键 Command-C(拷贝),请按住 Command 键并按 C 键,然后同时松开这两个键。Mac 菜单和键盘通常使用 [某些按键的符号],其中包括以下修饰键: Command ⌘ Shift ⇧ Option ⌥ Control ⌃ Caps Lock ⇪ Fn 如果您使用的是 Windows PC 专用键盘,请用 Alt 键代替 Option 键,用 Windows 标志键代替 Command 键。有些
98k
2018/04/12
2.9K0
Mac下键盘使用
相关推荐
多台电脑共享一套鼠标键盘的免费方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档