Spark运行时架构

目录

一,Spark运行时架构

二,YARN集群架构

(一)YARN集群主要组件

1、ResourceManager - 资源管理器

2、NodeManager - 节点管理器

3、Task - 任务

4、Container - 容器

5、ApplicationMaster - 应用程序管理器

6,总结

(二)YARN集群中应用程序的执行流程

三、Spark Standalone​​​​​​架构

(一)client提交方式

(二)cluster提交方式

四、Spark on YARN架构

(一)client提交方式

(二)cluster提交方式

五、两种提交方式各有应用场合


一,Spark运行时架构

“Spark 运行架构如图 1 所示,包括集群资源管理器(Cluster Manager)、多个运行作业任务的工作结点(Worker Node)、每个应用的 任务控制结点(Driver)和每个工作结点上负责具体任务的执行进程(Executor)。”

Spark有多种运行模式,可以运行在一台机器上,称为本地(单机)模式,也可以以YARN或Mesos作为底层资源调度系统以分布式的方式在集群中运行,称为Spark On YARN模式,还可以使用Spark自带的资源调度系统,称为Spark Standalone模式。
本地模式通过多线程模拟分布式计算,通常用于对应用程序的简单测试。本地模式在提交应用程序后,将会在本地生成一个名为SparkSubmit的进程,该进程既负责程序的提交,又负责任务的分配、执行和监控等。
 

Spark Driver驱动节点 用于执行Spark任务重的main方法,负责实际代码的执行工作
Driver 在Spark作业执行时主要负责
1.将用户程序转化为作业job
2.在Executor之间调度任务task
3.跟踪Execute的执行情况
4.通过UI展示查看运行情况

Spark Executor 是工作几点Worker 中的一个JVM进程,负责在Spark 作业中运行具体任务,任务之间相互独立,Spark 应用启动时 Execute节点被同时启动

1.负责运行spark应用的任务,并将结果返回给驱动器进行
2.通过自身管理器 Block manager 为用户程序中要求缓存的RDD提供内存式缓存 RDD是之间缓存在Execute进行内的,因此任务可以在运行时充分利用缓存数据加速运算

二,YARN集群架构

在讲解Spark集群架构之前,首先需要了解YARN集群的架构。YARN集群总体上是经典的主/从(Master/Slave)架构,主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。

YARN集群架构图

​​​​​​​Spark运行时架构_第1张图片

(一)YARN集群主要组件

1、ResourceManager - 资源管理器

以后台进程的形式运行,负责对集群资源进行统一管理和任务调度。主要职责:
1.接受来自客户端(client)的请求
2.启动和管理各个应用程序的ApplicationMaster
3.接收来自ApplicationMaster的资源申请,并为其分配Container
4.管理NodeManager,接收来自NodeManager的资源分配和节点健康情况汇报

2、NodeManager - 节点管理器

集群中每个节点的资源和任务管理器,以后台进程的形式运行。他会定时向ResourceManager汇报本节点的资源(内存、CPU)使用情况和各个Container的运行状态,同时会接收并处理来自ApplicationMaster的Container启动/停止等请求。NodeManager不会监视任务,它仅仅监听Container中的资源使用情况,例如,如果一个Container消耗的内存比最初分配的多,他就会结束该Container。

3、Task - 任务

应用程序的具体执行任务,一个应用程序可能会有多个任务。

4、Container - 容器

YARN中资源分配的基本单位,封装了CPU和内存资源的一个容器,相当于是一个Task运行环境的抽象。从实现上看,Container是一个Java抽象类,定义了资源信息。应用程序的Task会发布到Container中运行,从而限定Task使用的资源量。Container的源码如下:

5、ApplicationMaster - 应用程序管理器

应用程序管理者,主要负责应用程序的管理,以后后台的形式运行。为应用程序向ResourceM

你可能感兴趣的:(spark,架构,大数据)