Spark架构

简介: 【4月更文挑战第26天】架构对于技术来说,是技术的灵魂。

架构对于技术来说,是技术的灵魂,它体现了技术对于需求的取舍,决定了技术的优点与缺点。Spark的架构也是如此,在分布式技术中,架构无非两种,即主从架构(master-slave)和点对点架构(p2p), Spark采取了前者,也是MapReduce的选择——主从架构。

Spark程序的入口是Driver中的SparkContext。与Spark 1.x相比,在Spark 2.0中,有一个变化是用SparkSession统一了与用户交互的接口,曾经熟悉的SparkContext、SqlContext、HiveContext都是SparkSession的成员变量,这样更加简洁。SparkContext的作用是连接用户编写的代码与运行作业调度和任务分发的代码。


当用户启动一个Driver程序时,会通过SparkContext向集群发出命令,Executor会遵照指令执行任务。一旦整个执行过程完成,Driver结束整个作业。ClusterManager负责所有Executor的资源管理和调度,根据底层资源管理和调度平台的不同,ClusterManager可以有多种选择,对应了多种资源管理平台,如YARN的ResourceManager与Mesos的ClusterManager,此外Executor也会根据资源管理平台的不同运行在不同的容器中。


Driver解析用户编写的代码,并序列化字节级别的代码,这些代码将会被分发至将要执行的Executor上。当执行Spark作业时,这些计算过程实际上是在每个节点本地计算并完成。

首先Driver根据用户编写的代码生成一个计算任务的有向无环图(Directed Acyclic Graph, DAG),接着,DAG会根据RDD(弹性分布式数据集)之间的依赖关系被DAGScheduler切分成由Task组成的Stage(TaskSet), TaskScheduler会通过ClusterManager将任务调度到Executor上执行。在DAG中,每个Task的输入就是一个Partition(分区),而一个Executor同时只能执行一个Task,但一个Worker(物理节点)上可以同时运行多个Executor。


在Spark的架构中,Driver主要负责作业调度工作,Executor主要负责执行具体的作业计算任务,ClusterManager主要负责资源管理和调度,Driver中还有几个重要的组件——SparkContext、DAGScheduler、TaskScheduler。Driver是整个架构中最重要的角色,它通过监控和管理整个执行过程保证了一切按照计划正常运行,此外它还在Spark容错中起到了重要的作用。


在MapReduce这类型的计算框架中,中间结果的传输是整个计算过程中最重要的一个步骤,Spark也是如此,在Spark作业中,这也是Stage划分的依据,我们称之为数据混洗(Shuffle)。

相关文章
|
5月前
|
分布式计算 资源调度 监控
【Spark】 Spark的基础环境 Day03
【Spark】 Spark的基础环境 Day03
37 0
【Spark】 Spark的基础环境 Day03
|
5月前
|
设计模式 SQL 分布式计算
Spark Day06:Spark Core之Spark 内核调度和SparkSQL快速入门
Spark Day06:Spark Core之Spark 内核调度和SparkSQL快速入门
49 0
|
存储 消息中间件 分布式计算
|
1天前
|
存储 分布式计算 资源调度
|
1月前
|
SQL 分布式计算 大数据
Spark 的集成
Spark 的集成
33 2
|
6月前
|
缓存 分布式计算 资源调度
Spark2:运行架构
Spark2:运行架构
181 0
|
9月前
|
分布式计算 Apache Spark
Apache Doris Spark Load快速体验之Spark部署(1)2
Apache Doris Spark Load快速体验之Spark部署(1)2
98 0
|
9月前
|
SQL 机器学习/深度学习 分布式计算
Apache Doris Spark Load快速体验之Spark部署(1)1
Apache Doris Spark Load快速体验之Spark部署(1)1
93 0
|
10月前
|
SQL 存储 分布式计算
什么是 Spark?Spark 的核心模块、Spark 的核心组件
什么是 Spark?Spark 的核心模块、Spark 的核心组件
318 0
|
分布式计算 Java Scala
【Spark】(二)Spark2.3.4 集群分布式安装
【Spark】(二)Spark2.3.4 集群分布式安装
201 0
【Spark】(二)Spark2.3.4 集群分布式安装