Spark源码剖析(八):stage划分原理与源码剖析

小说:2018最新网赚项目作者:平龙扁更新时间:2018-11-17字数:47065

对于花雨这个时候找他,他还真的有些奇怪。花雨已经很久没有找他了,或许是因为知道了他的身份,不想再事事麻烦他了。

网上养鸡赚钱骗局

这一刻完全不同,兵器刺入的那一刻,靠在树干睡觉的那些人没有任何反应,只有一种人不会有任何知觉。
既是言语相通,那便好办多了,悟空走过去,寻见一个路旁摆些杂货的小贩,先作了一揖,彬彬有礼道:“这位大哥,叨扰了,敢问此处是何地界?”

“这块令牌的真实来历我可能不怎么清楚,同样也不能告诉你!但是我可以告诉你,有着这块令牌,你可以在这京都横行,而且在华夏八大家除了轩辕家外,在其他的家族中会受到很好的待遇!”李文武羡慕的对着唐欣说道,随即将令牌从桌子上递给了唐欣。

Spark源码剖析(八):stage划分原理与源码剖析


引言

对于Spark开发人员来说,了解stage的划分算法可以让你知道自己编写的spark application被划分为几个job,每个job被划分为几个stage,每个stage包括了你的哪些代码,只有知道了这些之后,碰到某个stage执行特别慢或者报错,你才能快速定位到对应的代码,对其进行性能优化和排错

 

stage划分原理与源码

接着上期内核源码(五)的最后,每个action操作最终会调用SparkContext初始化时创建的DAGSchedule的runJob方法创建一个job:

Alt text

那么这一篇就我们来探究一下每个job中stage到底是如何划分的

dagScheduler.runJob(rdd, cleanedFunc, partitions, callSite, allowLocal, resultHandler, localProperties.get)

val waiter = submitJob(rdd, func, partitions, callSite, allowLocal, resultHandler, properties)

eventProcessLoop.post(JobSubmitted( jobId, rdd, func2, partitions.toArray, allowLocal, callSite, waiter, properties))

new DAGSchedulerEventProcessLoop(this)

dagScheduler.handleJobSubmitted(jobId, rdd, func, partitions, allowLocal, callSite, listener, properties)

 

跳转了这么多,我们终于找到了DAGScheduler的job调度核心入口handleJobSubmitted方法,该方法总共分为五步完成stage的划分和提交。

 

finalStage = newStage(finalRDD, partitions.size, None, jobId, callSite)使用触发job的最后一个rdd创建finalStage

val job = new ActiveJob(jobId, finalStage, func, partitions, callSite, listener, properties)用finalStage创建一个job

submitStage(finalStage) stage划分算法重点!递归寻找父Stage!

val missing = getMissingParentStages(stage).sortBy(_.id)获取当前stage的父stage

 

submitMissingTasks(stage, jobId.get)提交某一个stage

 

val locs = getPreferredLocs(stage.rdd, id)给每个partition创建一个ShuffleMapTask或ResultTask(最后一个stage),并计算其运行的最佳位置

 

stage划分算法总结

1. 从finalStage倒推

2. 通过宽依赖,来进行新stage的划分

3. 使用递归,优先提交父stage

 

重要知识点

对于每一种有shuffle的操作,例如:groupByKey、reduceByKey、countByKey等,底层都对应了三个RDD

  • MapPartitionsRDD:对应父stage的最后一个RDD
  • ShuffleRDD:对应子stage的第一个RDD
  • MapPartitionsRDD:对应子stage的第二个RDD

当前文章:http://zxqss.com/content/10-14/52542/content_9621032735.html

发布时间:2018-11-17 05:38:56

玩手机应用赚钱 伊犁赶集网大学身兼职 昆明夜班兼职小时工 手机免费兼职打字平台 学生在家网上兼职招聘 淘宝卖什么偏门 云赚客消费网 项目经理论坛

编辑:开平

我要说两句: (0人参与)

发布