SparkContext内核架构深度剖析

版权声明: https://blog.csdn.net/weixin_39966065/article/details/89578684

目录

 

一:Spark的核心运转分析

二:重点的算法提要

三:核心对象的从属关系

四:图表

 


一:Spark的核心运转分析

1.spark-submit 提交 Application 到 Driver 上执行
2.设置 SparkConf , 初始化 SparkContext ,SparkContext 建立 DAGScheduler 和 TaskScheduler
3.TaskScheduler 提交 Application 到 Master上
4.Master给Application分配对应的Worker上的Executor
5.Executor反向注册到 TaskScheduler上, 完成整体的注册工作
6.当Application程序执行到 Action 操作时,会触发 Job 任务
7.DAGScheduler 将 Job 划分为对应的 Stage , 每一个Stage 由 一个TaskSet 组成
8.TaskScheduler 将 TaskSet 里面的每一个 Task 分发到对应的已经注册的 Executor上 运行
9.Executor 会用 TaskRunner 封装接收的每一个Task,然后用线程池分配的线程进行执行任务
10.Task 分为 ShuffleTask 和 ResultTask,最后一个 Stage 可以称为 ResultTask,其余为 ShuffleTask
11.每个Task任务,处理 RDD中的某一个 partition,执行相应的算子和函数
12.RDD可以看成是上亿的数据,每一个partition可能是Hadoop上分布式的节点
13.然后就这样完美的进行工作!:) 开心

二:重点的算法提要

1.Master给Application分配对应的 Worker上的 Executor                               (分发算法)
2.DAGScheduler 将 Job 划分为对应的 Stage , 每一个Stage 由 一个TaskSet 组成       (划分算法)
3.TaskScheduler 将 TaskSet 里面的每一个 Task 分发到对应的已经注册的 Executor上  (分发算法) 
4.剩余的 ShuffleTask 中, Shuffle 中的调优的模式儿  ———— 待学习

三:核心对象的从属关系

Job ——》 Stage = TaskSet ——》 Task
Task = TaskRunner 
Stage = ShuffleTask、ResultTask
SparkContext ——》 DAGScheduler + TaskScheduler
SparkRDD ——》partition

四:图表

(1)SparkContext Init

(2)Spark Job Process

猜你喜欢

转载自blog.csdn.net/weixin_39966065/article/details/89578684