Spark Core


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节点。

你可能感兴趣的:(Spark Core)