Spark修炼之道(高级篇)——Spark源码阅读:第六节 Task提交

  • 时间:
  • 浏览:1

DriverEndpoint中的receive最好的法子接收driverEndpoint.send(ReviveOffers)发来的消息,DriverEndpoint继承了ThreadSafeRpcEndpoint trait,具体如下:

submitTasks最好的法子定义在TaskScheduler Trait当中,目前TaskScheduler 要能一2个 多子类TaskSchedulerImpl,其submitTasks最好的法子源码如下:

上方的代码逻辑全部是在Driver端进行的,调用完launchTasks最好的法子后,Task的执行便在Worker节点上运行了,至此完成Task的提交。

关于resourceOffers最好的法子及launchTasks最好的法子的具体内容,在后续章节中将进行进一步的解析。

ThreadSafeRpcEndpoint 继承 RpcEndpoint trait,RpcEndpoint对receive最好的法子进行了描述,具体如下:

从上方的代码要能 看过,避免ReviveOffers消息时,调用的是makeOffers最好的法子

Stage由一系列的tasks组成,哪几种task被封装成TaskSet,TaskSet类定义如下:

SchedulerBackend有多种实现,如下图所示:



朋友以SparkDeploySchedulerBackend为例进行说明,SparkDeploySchedulerBackend继承自CoarseGrainedSchedulerBackend中的reviveOffers最好的法子,具有代码如下:

在上一节中的 Stage提交中朋友提到,最终stage被封装成TaskSet,使用taskScheduler.submitTasks提交,具体代码如下:

它具有如下定义形式:

DriverEndpoint 中的对其receive最好的法子进行了重写,具体实现如下:

driverEndpoint的类型是RpcEndpointRef