- ClusterManager:
- 在
Standlone
模式中,ClusterManager
为Master
。在Yarn
模式中就是ResourceManage
资源管理器。
- Worker:
- 从节点,在
Standlone
模式中就是一个Worker
节点,在Yarn
模式中就是NodeManager
,负责具体的任务,启动Executor或者Driver
。
- Driver:首先
Driver
是一个Spark
节点中的一个驱动进程,它是负责执行我们开发代码中的main函数的一个进程,它负责执行开发人员编写的代码,根据代码来创建SparkContext、创建RDD
,以及进行RDD
的转化和算子操作。如果我们用的是spark shell,那么我们在启动命令的时候,驱动器就会自动为我们创建一个SparkContext对象,如果我们的spark shell终止了,那么Spark应用也就结束了。
Driver
在spark
作业中的作用
- 把用户编写的程序转换成任务:
Driver
程序负责把用户的程序转换成多个物理执行单元,这些单元也称之为任务(Task
),Task是spark中执行的最小单元。spark
程序流程其实就是:创建SparkContext
、创建RDD
、转换RDD
、执行转换或者算子操作、结果入库,然后spark
会把上述操作流程转换成一个有向无环图(DAG
),也就是逻辑执行计划(Spark
会对逻辑执行计划进行优化,将多个Task合并成一系列的执行步骤(Stage
),所以Stage
是由多个Task
组成的。这些Stage
会被发送到集群上执行)。当Driver
运行的时候,它会把这个逻辑图转换成物理执行计划。 - 跟踪
Executor
的运行状况:有了物理执行计划以后,那么Driver
就会协各个节点上的Executor
资源情况,当Executor
启动以后,Driver
会接受Executor
的反向注册,那么Driver
就可以监控Executor
的运行情况了。
- Executor:
- 执行器,为应用提供运行在
Worker
节点上的进程,然后启动线程池。每个应用程序都有独立的一组Executor
。
- SparkContext:
-
Spark
应用程序的上下文,控制着整个程序的声明周期。
- RDD:
-
Spark
基本的计算单元,一种抽象的数据结构。弹性分布式数据集,是一种内存抽象,可以理解为一个大数组,数组的元素是RDD的分区Partition,分布在集群上;在物理数据存储上,RDD的每一个Partition对应的就是一个数据块Block,Block可以存储在内存中,当内存不够时可以存储在磁盘上
- DAG Scheduler:
- 根据
Job
狗将Stage
,封装成TaskSet
提交给TaskScheduler
。
- TaskScheduler:
- 它是一个进程
- 将
Task
分发到Executor
中,并接受Executor
的注册,监控Executor
情况。
- 结构图与执行流程: