Spark学习笔记(五):Spark运行模式原理

基本概念

  1. RDD:是Resillient Distributed Dataset (弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
  2. DAG:是Directed Acyclic Graph (有向无环图)的简称,反映RDD之间的依赖关系
  3. Executor:是运行在工作节点(WorkerNode)的一个进程,一个Worker会启动多个Executor,负责运行Task
  4. Application:用户编写的Spark应用程序
  5. Driver:Application的驱动程序(如main方法)
  6. Task:运行在Executor上的工作单元,一个Executor会启动多个线程来执行Task
  7. Job: —个Job包含多个RDD及作用于相应RDD上的各种操作,按照是否返回scala集合或对象进行划分,即以action操作来切分
  8. Stage:是Job的基本调度单位,一个Job会分为多组Stage,按照是否shuffle操作进行划分,一个Stage会分为多组Task,代表了一组关联的(同个分区)、相互之间没有Shuffle依赖关系的任务组成的任务集,task的个数由stage中最后一个RDD的分区数来决定
    在这里插入图片描述
    如下图:
    蓝色框代表一个Stage,黄色框代表一个Task
    在这里插入图片描述

运行架构

•Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor)
•资源管理器可以自带或Mesos或YARN与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:

  1. 是利用多线程来执行具体的任务,减少任务的启动开销
  2. 是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销
    在这里插入图片描述

•一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构 成,一个Stage由多个没有Shuffle关系的Task组成
•当执行一个Application时,Driver会向集群管理器申请资源,启动 Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中

在这里插入图片描述

运行流程

(1) 首先为应用构建起基本的 运行环境,即由Driver创建一个 SparkContext,进行资源的申请 、任务的分配和监控
(2) 资源管理器为Executor分 配资源,并启动Executor进程
(3) SparkContext根据RDD的依赖关系构建DAG图,DAG图 提交给DAGScheduler解析成 Stage,然后把一个个TaskSet提 交给底层调度器TaskScheduler 处理;Executor 向 SparkContext 申请Task,Task Scheduler将 Task发放给Executor运行,并提供应用程序代码
(4) Task在Executor上运行, 把执行结果反馈给 TaskScheduler,然后反馈给 DAGScheduler,运行完毕后写入数据并释放所有资源
在这里插入图片描述
总体而言,Spark运行架构具有以下特点:
(1) 每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task
(2) Spark运行过程与资源管理器无关,只要能够获取 Executor进程并保持通信即可
(3) Task采用了数据本地性和推测执行等优化机制

欢迎关注同名公众号:“我就算饿死也不做程序员”。
交个朋友,一起交流,一起学习,一起进步。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值