spark 核心概念图解


spark 核心概念图解

学习spark 三部曲

首先来看几个只管重要的概念,这些概念承载着Spark集群运转和程序运行的重要使命。
Spark运行架构图,如图1-1所示。

1、Master

图1-1 中的 Cluster Manager

就像Hadoop有NameNode和DataName一样,Spark有Master和Worker。Master是集群的领导者,负责管理集群资源,接收Client提交的作业,以及向Worker发送命令。

2、Work

图1-1 中的 Worker Node

集群中的Work,执行Master发送的指令,来具体分配资源,并在这些资源中执行任务。
通过注册机向

3、Driver

一个Sparkl作业运行时会启动一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage,并调度Task到Executor上。

具体的Application通过Driver与Master和Executor进行通信

4、Executor

真正执行作业的地方。Executor分布在集群中的Worker上,每个Executor接收Driver的命令来加载和运行Task,一个Executor可以执行一到多个Task。

5、SparkContext

是程序运行调度的核心,由高层调度器DAGScheduler划分程序的每个阶段,底层调度器TaskScheduler划分每个阶段的具体任务。
SchedulerBackend管理整个集群中为正在运行的程序分配的计算资源Executor。

初始化 DAGScheduler、TaskScheduler、SchedulerBackend
Spark程序向Master程序注册

6、DAGScheduler

负责高层调度,DAGScheduler见到shuffle生成一个Stage,划分stage并生成运行的有向无环图。
DAGScheduler是面向Staged的高层级的调度器。
DAGScheduler把DAG拆分为多个Task,每组Task都是一个Stage。
可以解析时是以shuffle为边界,进行反向构建的,每当遇到一个Shuffle,Spark就会产生一个新的Stage,然后以TaskSet的形式提交给底层的调度器(TaskScheduler)。

7、TaskScheduler

负责具体stage内部的底层调度,具体task的调度、容错等。

8、Job

正在执行的叫ActiveJob 是Top-level的工作单位,每个Action算子都会触发一次job,一个Job可能包含一个或多个Stage。

9、Stage

是用来计算中间结果的Tasksets。Tasksets中的Task逻辑对于同一个RDD内的不同partition都一样。
Stage在Shuffle的地方产生,此时下一个Stage要用到上一个Stage的全部数据,所以要等上一个Stage全部执行完成才能开始。
Stage有两种:ShuffleMapStageResultStage ,除了最后一个Stage是ResultStage歪,其他Stage都是ShuffleMapStage。
ShuffleMapStage会产生中间结果,以文件的方式保存在集群里,Stage经常被不同的JOB共享,前提是这些JOB重用了同一个RDD。
划分Stage的依据就是,Stage之间的宽窄依赖,遇到宽依赖就会划分Stage 。

10、Task

任务指定的工作单位,每个Task会被发送到一个节点上,每个Task对应RDD的一个partition。

11、RDD

是不可变的、Lazy级别的、粗粒度的(数据级别的而不是单个数据级别的)数据集合,包含了一个或多个数据分配,即partition

12、Application

1、实现Driver的程序
2、实现Exector的程序

13、DAG

对RDD关系进行建模、DAG描述了RDD的依赖关系,这种关系也被成为lineage类似的血缘关系。
RDD的依赖关系使用Dependency维护

14、TaskSet

Task之间是没有依赖的,可以在多个Executor并发执行。

最后

Spark程序中有两种级别的算子:TransformationAction
Transformation算子会由DAGScheduler划分到pipeline中,是Lazy级别的不会触发任务的执行;Action算子会触发Job来执行pipeline中的运算。

运行模式

集群角色

总体架构

总结


文章作者: Callable
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Callable !
评论
  目录