码迷,mamicode.com
首页 > 其他好文 > 详细

Spark运行原理源码版

时间:2019-10-27 12:54:30      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:data   sha   saveas   ext   main   ash   orm   final   contex   

1、首先我们编写完类打成jar包提交到集群上,然后用spark-submit提交任务。提交任务可以分为集群和本地模式(集群:spark-submit --master spark://master:7077 --class 全类名 jar包路径 需要的参数)(本地:spark-submit --class 全类名 jar包路径 需要的参数)
2、spark-submit脚本会自己去调用SparkSubmit类,appArgs.action根据模式匹配判断是哪种方式提交的然后去执行对应的代码。
3、通过调用runmain方法去反射拿到我们要执行的类和方法去执行
4、首先SparkContext会去创建DAGScheduler和TaskScheduler
5、Transformation是懒执行的当我们的程序碰到Action算子的时候才会去saveAsHadoopDataset中调用runjob方法利用submitJob去DAGSchedulerEventProcessLoop线程池中提交job这时开始构造Stage,先拿到最后一个RDD(finalRdd),创建ResultStage(只存在一个),之后的Stage会根据宽窄依赖去切分Stage(都叫做ShuffleMapStage),Stage的切分是从后往前的,但是提交是从前往后的。
6、一个Stage中都是窄依赖,可以并行的去计算。根据你的分区数量开始划分任务。把相同处理逻辑但是数据不同的Task封装成一个TaskSet调用makeOffers去启动Task,交给TaskScheduler
7、客户端的Driver向Master注册
8、Master会根据自己的资源调度算法去让Worker启动一个或者多个Exeuctor。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程
9、ExecutorBackend启动后会向Driver的SchedulerBackend注册,每个Stage包含的Task通过TaskScheduler分配给Executor执行
10、所有stage都完成后作业结束。

Spark运行原理源码版

标签:data   sha   saveas   ext   main   ash   orm   final   contex   

原文地址:https://www.cnblogs.com/tkzm/p/11747099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!