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

  • 时间:
  • 浏览:0
  • 来源:大发5分快3APP下载_大发5分快3APP官方

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

总结一下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土最好的法子

原来面的代码也能 看多,通过 executor.launchTask土最好的法子启动Worker节点上Task的运行,其源码如下:

TaskRunner是有另有另一两个程序,它是有另有另一两个实物类,被定义在org.apache.spark.executor.Executor类当中,具体源码如下:

以ResultTask为例,其runTask土最好的法子源码如下:

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

也能 看多它继承ThreadSafeRpcEndpoint,它ThreadSafeRpcEndpoint中的receive土最好的法子进行了实现,具体源代码如下: