spark2.2.0源码学习过程记录:Day5
来源:互联网 发布:广州女人街网络批发 编辑:程序博客网 时间:2024/06/05 07:05
1、读《apache spark 源码剖析》第四章第2.3节任务的创建和分发
2、源码学习
类DAGScheduler
首先看DAGScheduler类的submitMissingTasks方法,
方法中首先取得了需要计算的partitions
然后根据stage的类型(ShuffleMapStage或ResultStage)使用outputCommitCoordinator的stageStart方法。(具体是啥没研究)
然后取得taskIdToLocations,即数据的存放位置
为stage创建一个attemptid,作为已经启动的标志
为stage创建广播变量
根据partitions数量和stage类型创建tasks集合
创建任务集TaskSet并调用taskScheduler.submitTasks方法提交任务集
没找到具体的实现类,返回之前的SparkContext类的代码,发现是从这个方法(SparkContext.createTaskScheduler)创建的,看里面的代码,根据不同的master种类创建了不同的taskScheduler,我们和书中一致,来看TaskSchedulerImpl类
类TaskSchedulerImpl
通读一遍,然后看submitTasks方法
这个方中首先创建TaskSetManager类用来管理任务
调用backend.reviveOffers方法,这个backend需要再回到SparkContex勒种去确认,在这使用StandaloneSchedulerBackend
TaskSetManager
Schedules the tasks within a single TaskSet in the TaskSchedulerImpl. This class keeps track of
each task, retries tasks if they fail (up to a limited number of times), and
handles locality-aware scheduling for this TaskSet via delay scheduling. The main interfaces
to it are resourceOffer, which asks the TaskSet whether it wants to run a task on one node,
and statusUpdate, which tells it that one of its tasks changed state (e.g. finished).
类StandaloneSchedulerBackend
不在这个类里,看他的父类
类CoarseGrainedSchedulerBackend
其中DriverEndpoint的receive方法,在里面调用了makeOffers方法
方法中调用scheduler.resourceOffers分配资源
然后调用launchTasks
最终调用executorData.executorEndpoint.send(LaunchTask(new SerializableBuffer(serializedTask)))方法将任务发送出
阅读全文
0 0
- spark2.2.0源码学习过程记录:Day5
- spark2.2.0源码学习过程记录:序
- spark2.2.0源码学习过程记录:Day3
- spark2.2.0源码学习过程记录:Day4
- spark2.2.0源码学习过程记录:Day6
- spark2.2.0源码学习过程记录:Day7
- spark2.2.0源码学习过程记录:Day8
- spark2.2.0源码学习过程记录:Day9
- spark2.2.0源码学习过程记录:Day10
- spark2.2.0源码学习过程记录:Day1 Day2
- Python学习记录day5
- 安卓学习记录-java-day5
- 【Spark2.0源码学习】-1.概述
- 【Spark2.0源码学习】-4.Master启动
- 【Spark2.0源码学习】-5.Worker启动
- 【Spark2.0源码学习】-6.Client启动
- eoe:开篇-记录EOE源码学习过程
- 基于CentOS6.5编译Spark2.2.0源码
- R语言自定义函数及基本分支循环结构
- spark2.2.0源码学习过程记录:Day4
- hdu_2647_拓扑排序_邻接表或者vector_优化内存_拓扑+贪心_用的是拓扑思想_并不是拓扑
- 主席树详解
- 小程序数字精确度问题
- spark2.2.0源码学习过程记录:Day5
- PsSetCreateProcessNotifyRoutine妙用
- 利用Data URL(data:image/jpg;base64,)将小图片生成数据流形式
- Codeforces Round #431 (Div. 2) D Rooter's Song
- hdu 4965 Fast Matrix Calculation 矩阵
- 一个例子学会CountDownLatch
- 设计师到底能不能自己进行可用性测试(上)
- Windows如何Share目录给docker容器
- spark2.2.0源码学习过程记录:Day6