Spark运行架构
 Spark框架的核心是一个计算引擎,整体来说,它采用了标准master-slave的结构
  如下图所示,它展示了一个Spark执行时的基本结构,图形中的Driver表示master,负责管理整个集群中的作业任务调度,图形中的Executor则是slave,负责实际执行任务。

 由上图可以看出,对于Spark框架有两个核心组件:
Driver
Spark驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作 ,Driver在Spark作业执行时主要负责;
- 将用户程序转化为作业(job)
 - 在Executor之间调度任务(task)
 - 跟踪Executor的执行情况
 - 通过UI展示查询运行情况
 
实际上,我们无法准确地描述Driver的定义,因为在整个的编程过程中没有看到任务有关Driver的字眼,所以简单理解,所谓的Driver就是驱使整个应用运行起来的程序,也称之为Driver类
Executor
Spark Executor是集群中工作节点(Worker)中的一个JVM进程,负责在Spark作业中运行具体任务(Task),任务彼此之间相互独立,Spark应用启动时,Executor节点被同时启动,并且始终伴随着整个Spark应用的生命周期而存在,如果有Executor节点发生了故障或者崩溃,Spark应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。
Executor有两个核心功能
- 负责运行组成Spark应用的任务,并将结果返回给驱动器进程
 - 他们通过自身的块管理器为用户程序中要求缓存的RDD提供内存式存储,RDD是直接缓存在Executor进程内
 


