Spark Core介绍
Spark Core是Spark的核心计算引擎。它有着速度快和通用的特点,并且实现了Spark的基本功能,包含任务调度,内存管理,错误恢复,与存储交互等模块。Spark Core的组件是RDD,并提供了创建和操作RDD的多个API。
Spark 工作机制
一个应用的生命周期,即用户提交自定义的作业之后,Spark框架进行处理的一系列过程。
1. 应用执行过程中的基本组件和形态
Driver:
运行在客户端或者集群中,执行Application的main方法并创建SparkContext,调控整个应用的执行。
Application:
用户自定义并提交的Spark程序。
Job:
一个Application可以包含多个Job,每个Job由Action操作触发。
Stage:
比Job更小的单位,一个Job会根据RDD之间的依赖关系被划分为多个Stage,每个Stage中只存有RDD之间的窄依赖,即Transformation算子。
TaskSet:
每个Stage中包含的一组相同的Task。
Task:
最后被分发到Executor中执行的具体任务,执行Stage中包含的算子。
2. 应用的两种提交方式
2.1. Driver进程运行在客户端(Client模式):

用户在客户端直接运行程序
-
用户运行程序。
-
启动Driver进行(包括DriverRunner和SchedulerBackend),并向集群的Master注册。
-
Driver在客户端初始化DAGScheduler等组件。
-
Woker节点向Master节点注册并启动Executor(包括ExecutorRunner和ExecutorBackend)。
-
ExecutorBackend启动后,向Driver内部的SchedulerBackend注册,使得Driver可以找到计算节点。
-
Driver中的DAGScheduler解析RDD生成Stage等操作。
-
Driver将Task分配到各个Executor中并行执行。
2.2. Driver进程运行在集群中(某个Worker节点,Cluster模式):

用户将Spark程序提交给Master分配执行
-
用户启动客户端,提交Spark程序给Master。
-
Master针对每个应用分发给指定的Worker启动Driver进行。
-
Worker收到命令之后启动Driver进程(即DriverRunner和其中的SchedulerBackend),并向Master注册。
-
Master指定其他Worker启动Executor(即ExecutorRunner和其内部的ExecutorBackend)。
-
ExecutorBackend向Driver中的SchedulerBackend注册。
-
Driver中的DAGScheduler解析RDD生产Stage等。
-
Executor内部启动线程池并行化执行Task。
可以看到,两种程序的提交方式在处理过程中,仅仅是在哪个地方启动Driver进程的区别而已。
Client模式中(使用Spark Shell直接执行的程序),Driver就在客户端上。
Cluster模式(提交Spark程序到Master),Driver运行与集群中的某个Worker节点。
网友评论