Spark⼯作机制
主要模块
调度与任务分配I/O模块
通信控制模块容错模块Shuffle模块
调度层次
应⽤作业StageTask
调度算法
FIFO
FAIR(公平调度)
Spark应⽤执⾏机制
总览
Spark应⽤提交后经历了⼀系列的转换,最后成为Task在每个节点上执⾏.
RDD的Action算⼦触发Job的提交,提交到Spark中的Job⽣成RDD DAG由DAGScheduler转化为Stage Dage每个Stage中产⽣相应的Task集合
TaskScheduler将任务分发到Executor执⾏
每个任务对应相应的⼀个数据块,使⽤⽤户定义的函数处理数据块.
Spark实现了分布式计算和任务处理,并实现了任务的分发,跟踪,执⾏等⼯作.最终聚合结果,完成Spark应⽤的计算.
对RDD的块管理通过BlockManger完成.BlockManager将数据抽象为数据块,在内存或者磁盘进⾏存储,如果数据不在本节点,则还可以通过远端节点复制到本机进⾏计算.
Spark应⽤
执⾏模式
Local
StandaloneYARNMesos
Cluster模式Client模式应⽤的基本组件
Application:⽤户⾃定义的Spark程序,⽤户提交后,Spark为App分配资源,将程序转换并执⾏Driver Program:运⾏Application的main()创建并创建SparkContext
RDD Graph:RDD是Spark的核⼼结构,当RDD遇到Action算⼦时,将之前的所有算⼦形成⼀个DAG,也就是RDD Graph.再在Spark中转化为Job,提交到集群执⾏.⼀个App中可以包含多个Job.
Job:⼀个RDD Graph触发的作业,往往由Spark Action算⼦触发.在SparkContext中通过runJob⽅法向Saprk提交Job.Stage:每个Job会根据RDD的宽依赖关系呗切分很多Stage,每个Stage中包含⼀组相同的Task,这⼀组Task也叫TaskSet.Task:⼀个分区对应⼀个Task,Task执⾏RDD中对应Stage中包含的算⼦.Task被封装好后放⼊Executor的线程池中执⾏.
因篇幅问题不能全部显示,请点此查看更多更全内容