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

  • 时间:
  • 浏览:1
  • 来源:5分排列5官方_极速5分排列3

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

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

submitJob办法 的具体源码如下:

从里边的代码能够看后,最后调用的dagScheduler.handleJobSubmitted办法 完成整个job的提交。里边便是何如将job划分成各个Stage及TaskSet,提交到各个Worker节点执行,这帕累托图内容,.我都都在下一节中进行讲解

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

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

前一.我都都分析了SparkContext的创建,你这种节,.我都都介绍在RDD执行的过后,何如提交job进行分析,同样是下面的源码:

eventProcessLoop.post(JobSubmitted(

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

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

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