Spark运行架构
基本概念:
-
Application:用户编写的
Spark
应用程序,包含一个Driver
和多个Executor
。 -
Driver:
Spark
中的Driver
即运行上述Application
的main
函数并创建SparkContext
,创建SparkContext
的目的是为了准备Spark
应用程序的运行环境,在Spark
中有SparkContext
负责与ClusterManager
通信,进行资源申请、任务的分配和监控等,当Executor
部分运行完毕后,Driver
同时负责将SparkContext
关闭。 -
Executor:是运行在工作节点
WorkerNode
的一个进程,负责运行Task
。 -
RDD:弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
-
DAG:有向无环图,反映
RDD
之间的依赖关系。 -
Task:运行在
Executor
上的工作单元。 -
Job:一个
Job
包含多个RDD
及作用于相应RDD
上的各种操作。 -
Stage:是
Job
的基本调度单位,一个Job
会分为多组Task
,每组Task
被称为Stage
,或者也被称为TaskSet
,代表一组关联的,相互之间没有Shuffle
依赖关系的任务组成的任务集。 -
Cluster Manager:指的是在集群上获取资源的外部服务。目前有三种类型:
Standalon
:Spark
原生的资源管理,由Master
负责资源的分配;Apache Mesos
:与Hadoop MR
兼容性良好的一种资源调度框架;Hadoop Yarn
:主要是指Yarn
中的ResourceManager
。
Spark运行流程:
- 构建
Spark Application
的运行环境,启动SparkContext
; SparkContext
向资源管理器(可以是Standalone
,Mesos
,Yarn
)申请运行Executor
资源;Executor
向SparkContext
申请Task
;SparkContext
构建DAG
图,将DAG
图分解成Stage
、并将Stage
封装成Taskset
发送给Task Scheduler
,最后由Task Scheduler
将Task
发送给Executor
运行;Task
在Executor
上运行,运行完释放所有资源。
1、以下层级关系正确的是?a
A、Job->Stage->Task
B、Stage->Task->Job
C、Task->Job->Stage
D、Job->Task->Stage
2、以下哪项可以反映RDD之间的依赖关系 b
A、Driver
B、DAG
C、Stage
D、Cluster Manager
3、Stage的task数量由什么决定 a
A、Partition
B、Job
C、Stage
D、TaskScheduler