spark提交任务的流程

1.spark任务提交阶段划分


spark提交任务分为五个状态,五个状态之间的有四个转换过程:
(1)根据代码中的Transformations确定RDD。
(2)根据RDD确定RDD的类型和它们之间的血统关系,生成一个DAG。
(3)将DAG提交给DAGScheduler来划分出不同的task,以及task执行顺序和依赖关系。
(4)TaskScheduler调度任务,采用集群中配置的调度方式完成task调度。最后任务的执行交给了worker

注意:当任务发生执行失败的时候,taskSchduler负责开启一个新的task去继续执行那个任务。哪个先返回结果则停止。

2.wordcount的执行过程


(1)根据wordcount代码可以划分为:
HadoopRDD(textFile())->MapPartitionsRDD(flatMap())->MapPartitionsRDD(map())->ShuffledRDD(reduceByKey())->MapPartitionsRDD(saveAsTextFile())

 sc.textFile(args(0)).flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile(args(1))

(2)stage:明显,wordcount的执行流程分为两个stage,因为产生了一次shuffle,左右一边一个stage。
(3)task:某个stage中的在同一个partitioner中完成的任务被划分为了一个task。

3.stage划分

宽依赖是划分Stage的依据。

问:为什么图中有三个stage?
答:G的执行必须要以F和B的结果作为依赖,不仅要B执行结束,F也要执行结束。因此B和F分为两个stage1和stage2产生的结果为stage3。

全部评论

相关推荐

预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-12 10:48
已编辑
秋招之苟:邻居家老哥19届双2硕大厂开发offer拿遍了,前几天向他请教秋招,他给我看他当年的简历,0实习实验室项目技术栈跟开发基本不沾边😂,我跟他说这个放在现在中厂简历都过不了
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务