龙空技术网

分享Spark2任务划分以及执行流程的操作

爱编程的南风 95

前言:

今天兄弟们对“spark任务执行流程”大概比较看重,兄弟们都需要了解一些“spark任务执行流程”的相关资讯。那么小编也在网络上网罗了一些关于“spark任务执行流程””的相关知识,希望大家能喜欢,姐妹们一起来了解一下吧!

1、spark Application中可以由不同的action触发job,也就是说一个Application里可以有很多的job,每个job是由一个或者多个stage构成的,后面的stage依赖前面的stage,只有前面依赖的stage计算完成后面的stage才会计算;

2、stage划分的就是根据宽依赖如:reduceByKey、groupByKey等前后就需要划分为两个stage;

3、由action(如collect)导致了SparkContext.runJob的执行,最终导致了DAGScheduler中的submitJob的执行向自己发送JobSubmitted消息(解耦合),

当自己接收到JobSubmitted消息后出发handleJobSubmitted方法的执行,在其方法中会创建finalStage;

利用createResultStage方法找到parents

在寻找parents(List<Stage>)的过程中采用广度优先的算法。

当Executor接收到任务后会通过线程池复用的方式执行任务。

当executor执行到runTask时会有ShuffleMapTask和ResultTask,我们以ShuffleMapTask为例看看最后是怎样执行到RDD的compute方法的。

会执行rdd.iterator

如果存储基本不是NONE就执行getOrCompute

好了,今天的知识就分享到这里,欢迎关注爱编程的南风,私信关键词:大数据 ,获取更多学习大数据的资源,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习大数据的文章。同时欢迎在下面评论区留言如何学习大数据。

标签: #spark任务执行流程