Spark修炼之道(高级篇)——Spark源码阅读:第八节 Task执行

  • 时间:
  • 浏览:4
  • 来源:大发5分6合_大发5分6合官方

前要都看它继承ThreadSafeRpcEndpoint,它ThreadSafeRpcEndpoint中的receive法子进行了实现,具体源代码如下:

Task run法子负责Task的执行,其源码如下:

TaskRunner是一一另另一个tcp连接 ,它是一一另一个组织组织结构类,被定义在org.apache.spark.executor.Executor类当中,具体源码如下:

总结一下Task的执行过程:

1 调用Driver端org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend中的launchTasks

2 调用Worker端的org.apache.spark.executor.CoarseGrainedExecutorBackend.launchTask

3 执行org.apache.spark.executor.TaskRunner多tcp连接 中的run法子

4 调用org.apache.spark.scheduler.Task.run法子

5 调用org.apache.spark.scheduler.ResultTask.runTask法子

6 调用org.apache.spark.rdd.RDD.iterator法子

原来面的代码前要都看,通过 executor.launchTask法子启动Worker节点上Task的运行,其源码如下:

以ResultTask为例,其runTask法子源码如下:

在上一节中,亲戚亲戚亲戚亲戚朋友提到在Driver端CoarseGrainedSchedulerBackend中的launchTasks法子向Worker节点中的Executor发送启动任务命令,该命令的接收者是CoarseGrainedExecutorBackend(Standalone模式),类定义源码如下: