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

  • 时间:
  • 浏览:2
  • 来源:大发5分3DAPP下载_大发5分3DAPP官方

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

TaskRunner是有一一个多多 线程 ,它是有一一个多多 结构类,被定义在org.apache.spark.executor.Executor类当中,具体源码如下:

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

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

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

以前面的代码要能看多,通过 executor.launchTask办法启动Worker节点上Task的运行,其源码如下:

总结一下Task的执行过程:

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

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

3 执行org.apache.spark.executor.TaskRunner线程 中的run办法

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

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

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