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

  • 时间:
  • 浏览:0

前一大家分析了SparkContext的创建,這個 节,大家介绍在RDD执行的日后,要怎样提交job进行分析,同样是下面的源码:

SparkContext中的runJob法律方法,该法律方法中再调用DAGScheduler中的runJob法律方法,具体源码如下:

submitJob法律方法的具体源码如下:

上边的程序代码counts.saveAsTextFile(“file:///hadoopLearning/spark-1.5.1-bin-hadoop2.4/countReslut.txt”)会触发action操作,Spark会生成有2个 Job来执行相关计算

eventProcessLoop.post(JobSubmitted(

jobId, rdd, func2, partitions.toArray, callSite, waiter,

SerializationUtils.clone(properties)))将任务提交JobSubmitted放置在event队列当中,eventThread后台程序将对该任务提交进行处置,该eventThread被定义在DAGSchedulerEventProcessLoop的父类EventLoop当中,其源码如下:

从上边的代码都时需看到,最后调用的dagScheduler.handleJobSubmitted法律方法完成整个job的提交。上边便是要怎样将job划分成各个Stage及TaskSet,提交到各个Worker节点执行,这每种内容,大家在下一节中进行讲解

跳转到saveAsHadoopDataset,并调用其self.context.runJob即SparkContext中的runJob法律方法

org.apache.spark.scheduler.DAGScheduler.scala文件中定义了DAGSchedulerEventProcessLoop,该类继承了EventLoop,对onReceive法律方法进行了实现,具体源码如下:

DAGScheduler中的runJob法律方法,该法律方法中通过submitJob法律方法进行任务的提交,具体源码如下: