Spark2.0

avatar
作者
猴君
阅读量:0

目录

10.3 Spark运行架构

10.3.1 基本概念

10.3.2 架构设计

​编辑

10.3.3 Spark运行基本流程

Spark运行架构特点


10.3 Spark运行架构

10.3.1 基本概念

RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task

Application:用户编写的Spark应用程序Task:运行在Executor上的工作单元 Job:一个Job包含多个RDD及作用于相应RDD上的各种操作Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务

10.3.2 架构设计

Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点Worker Node)、每个应用的任务控制节点Driver)和每个工作节点上负责具体任务的执行进程(Executor。其中,集群管理器可以自带使用MesosYARN等资源管理框架。

Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:

Ø一是利用多线程来执行具体的任务,减少任务的启动开销。Ø二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销。一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver或者写到HDFS或者其他数据库

10.3.3 Spark运行基本流程

1)首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控

2)资源管理器为Executor分配资源,并启动Executor进程

3SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;ExecutorSparkContext申请TaskTask SchedulerTask发放给Executor运行,并提供应用程序代码

4TaskExecutor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源

Spark运行架构特点

总体而言,Spark运行架构具有以下特点:

1)每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task

2Spark运行过程与资源管理器无关,只要能够获取Executor进程并保持通信即可

3Task采用了数据本地性和推测执行等优化机制

数据本地性,指的是尽量计算移动到数据所在的节点,即“计算向数据靠拢”,因为移动计算比移动数据比所占的网络资源要少的多。Spark还采用了延时调度机制,可以在更大程度上实现执行过程优化。比如数据节点当前正被其他的任务占用,那么在这种情况下是否需要将数据移动到其他的空闲节点上?不一定。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!