spark知识体系2-运行架构

本篇主要讲解spark运行架构,包含如下内容:

spark知识体系2-运行架构

Spark运行架构 基本概念

Application
Spark的应用程序,包含一个Driver program和若干Executor

SparkContext
Spark应用程序的入口,负责调度各个运算资源,协调各个Worker Node的Executor

Driver Program
运行Application的main()函数并且创建SparkContext

Executor

为Application运行在Worker node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上,每个Application都会申请各自的Executor来处理任务

Cluster Manager
在集群上获取资源的外部服务(例如Standalone,Mesos,Yarn)

Worker Node
集群中任何可以运行Application代码的节点,运行一个或者多个Executor进程

Task
运行在Executor上的工作单元

Job
SparkContext提交的具体Action操作,常和Action对应

Stage
每个Job会被拆分很多组task,每组任务被称为Stage,也称TaskSet

RDD
是Resilient distributed datasets的简称,中文为弹性分布式数据集,是Spark最核心的模块和类

DAGScheduler
根据Job构建基本Stage的DAG,并提交Stage给TaskScheduler

TaskScheduler
将TaskSet提交给Worker node集群运行并返回结果

Transformations
是Spark API的一种类型,Transformation返回值还是一个RDD,所有的Transformation采用的都是懒策略,如果只是将Transformation的提交时不会执行计算的

Action
是Spark API的一种类型,Action返回值不是一个RDD,而是一个scala集合,计算只有在Action被提交的时候计算才被触发

架构设计 Standalone模式

Spark Standalone模式的集群由Master与Worker节点组成,程序通过与Master节点交互申请资源,Worker节点启动Executor运行

spark知识体系2-运行架构

Driver部分
Driver部分主要是对SparkContext进行配置、初始化以及关闭。初始化SparkContext是为了构建Spark应用程序的运行环境,在初始化SparkContext,要先导入一些Spark的类和隐式转换;在Executor部分运行完毕后,需要将SparkContext关闭。

Executor部分
Spark应用程序的Executor部分是对数据的处理,包含原生数据,RDD,以及共享变量

spark on Mesos模式

Mesos是Apache下的开源分布式资源管理框架。由于血缘关系,Spark官方推荐这种模式,很多公司也采用该模式。Spark On Mesos模式参考:

Spark on YARN模式

Spark on YARN框架解析:

基于YARN的Spark作业首先由Spark客户端生成作业信息,提交给ResourceManager,ResourceManager在某一个NodeManager汇报时把AppMaster分配给该NodeManager;

该NodeManager启动Spark AppMaster,Spark AppMaster 启动后初始化作业,然后向ResourceManager申请资源;

申请到相应资源后,Spark AppMaster通过RPC让对应若干个NodeManager启动相应的 Spark Executor,Spark Executor向Spark AppMaster汇报完成相应的任务。

Spark客户端会通过Spark AppMaster获取作业运行状态。

Client模式

在Spark on YARN/Mesos模式中,根据Spark Application的Driver是否在集群中运行,Spark on YARN/Mesos运行模式又可以分为Client模式和Cluster模式。

spark知识体系2-运行架构

Cluster模式

spark知识体系2-运行架构

Spark运行基本流程

Spark集群由若干节点构成,而每个节点都是可以接受和发送消息的RPC服务端点(Endpoint),根据责任的不同可以分为三类端点:Client、Master、Worker,三端调用关系:

spark知识体系2-运行架构

Client:Spark任务节点,负责发布、查询,以及终止任务的相关进程的统称,Client是运行时有效进程,如果任务处理完成,对应的进程结束

Master:Spark管理节点,负责Worker进程,协调调度Client发布的任务处理,Master节点可以为多个,有且仅有一个为Active状态,其他为Standby状态

Worker节点:Spark工作节点,负责具体任务的执行工作
基于三端模型,用户通过spark-submit提交或者运行spark-shell REPL,集群创建Driver,Driver加载Application,最后Application根据用户代码转化成RDD,RDD分解为Tasks,Executor执行Task等,整体交互蓝图如下:

spark知识体系2-运行架构

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzzyg.html