Spark中核心组件的基本知识

1 运行架构

Spark框架的核心是一个计算引擎,采用标准的master-slave的结构,图中的Driver表示master,负责整个集群的作业任务调度,Executor则是slave,负责实际执行任务
架构图

2 核心组件

2.1 Driver

Spark驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作
简单理解就是Driver是驱使整个应用运行起来的程序

2.2 Executor

是工作节点中的JVM进程,负责具体任务,如果有Executor节点发生故障或者崩溃,会讲出错任务调度到其他节点执行

2.3 Master 与 Worker

Spark集群的独立部署环境中,自身实现了资源调度,即Master朱啊哟负责资源的调度和分配,并进行集群的监控,类似于Yarn环境中的RM,Worker一个Work运行与一台服务器上,类似于Yarn环境中的NM

2.4 ApplicationMaster

RM(资源)和Driver(计算)之间的解耦合靠的就是AplicationMaster

3 核心概念

3.1 Executor 与 Core

集群中运行在工作节点(Work)中的一个JVM进程,是整个集群中的专门用于计算的节点。
提交应用中,可以提供参数指定计算节点的个数,以及对应的资源。资源一般是指工作节点Executor的内存大小和使用的虚拟CPU核(Core)数目
相关的启动参数:
启动参数

3.2 并行度

多个任务同时执行,分布在不同的计算节点计算,所以可以实现多任务并行执行,这里我们将整个集群并行执行任务的数量称之为并行度

3.3 有向无环图(DAG)

大数据计算引擎我们根据使用方式一般分为四类,一类是Hadoop所承载的MapRuduce,它将计算分为两个阶段,分别为Map和Reduce,需要拆分算法,多个Job串联。支持DAG的框架为第二代计算引擎,比如Tez和Oozie,第三代则为Spark,特点是Job内部的DAG支持,以及实时计算。

4 提交流程

Yarn环境下的提交流程:
流程图
Spark应用程序提交到Yarn环境中执行的时候,两种方式:Client和Cluster。主要区别在于:Driver程序的运行节点

4.1 Yarn Client模式

Client模式将用于监控和调度的Driver模块在客户端执行,而不是Yarn中,一般用于测试
* Driver在任务提交的本地机器运行
* Driver启动后和ResourceManager通讯申请启动ApplicationMaster
* ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,负责向RexourceManager申请Executor内存
* ResourceManager接到ApplicationMaster的资源申请后会分配container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程
* Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数
* 之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分stage,每个stage生成对应的TaskSet,之后将task分发到各个Executor上执行

4.2 Yarn Cluster 模式

将用于监控和调度的Driver模式启动在Yarn集群资源中执行,一般应用于实践生产环境

  • 在YARN Cluster模式下,任务提交后会和ResourceManager通讯申请启动ApplicationMaster,
  • 随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver。
  • Driver启动后向ResourceManager申请Executor内存,ResourceManager接到ApplicationMaster的资源申请后会分配container,然后在合适的NodeManager上启动Executor进程
  • Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,
  • 之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分stage,每个stage生成对应的TaskSet,之后将task分发到各个Executor上执行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章