本文以Spark执行模式中最常见的集群模式为例,详细的描述一下Spark程序的生命周期(YARN作为集群管理器)。

1、集群节点初始化

集群刚初始化的时候,或者之前的Spark任务完成之后,此时集群中的节点都处于空闲状态,每个服务器(节点)上,只有YARN的进程在运行(环境进程不在此考虑范围内),集群状态如下所示:

每个节点服务器上都有一个YARN的管理器进程在检测着服务器的状态。蓝色的是YARN主节点。

2、创建Spark驱动器进程

如上图所示,客户端将程序包(jar包或代码库)提交到集群管理器的驱动节点(即master节点),此时驱动节点会给Spark驱动器进程申请资源,并将其在某一个节点服务器上启动起来。程序包也发给Spark驱动器。

注意此时只有Spark的驱动器Driver进程,执行器Executor进程还未创建。

3、创建Spark集群

Spark的Driver进程启动后,开始执行用户代码。用户代码中会先初始化包含Spark集群信息的SparkSession,该SparkSession中就存有执行器所需资源的配置信息,它会与集群管理器的master进程通信(下图实线箭头),要求集群管理器在集群上启动所需要Spark的Executor(下图虚线箭头)。集群管理器按要求启动完Executor之后,会将启动的Executor及其所在节点信息发送给Spark的Driver进程,后面将由Spark的Driver对所有的Executor进程进行操控。这就构建出来了一个Spark集群。

4、执行Spark程序

由于Spark的Driver进程已经从集群管理器处获取到了所有可以调度的Executor信息,下面就开始执行代码了,如下图所示。

Spark的Driver进程与Executor进程互相通信,下发task和反馈执行结果,直到程序代码执行完成或异常退出。

5、结束运行

当Spark程序执行完成之后,Driver进程会发消息给集群管理器的Master节点告知执行结果(下图箭头1),集群管理器会关闭该Spark驱动器对应的Executor进程。至此,资源全部被回收,Spark集群完成本次任务,用户可以通过集群管理器得到Spark任务的执行结果。

Spark集群资源完全释放之后,就又进入了第一步中的集群节点初始化的状态,等待下一个Spark任务的到来。

Spark记录(二):Spark程序的生命周期的更多相关文章

  1. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  2. Android系列之Fragment(二)----Fragment的生命周期和返回栈

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. ASP.NET应用程序的生命周期

    对基于.Net平台的Web应用程序开发者来说,编写适合的应用程序生命周期的代码是非常重要的.所以必须要了解应用程序生命周期才能在适当的生命周期阶段编写合适代码,达到预期的效果.ASP.NET应用程序的 ...

  4. iOS_应用程序的生命周期

    每个iPhone程序都包括唯一一个UIApplication对象,它管理整个程序的生命周期,从载入第一个显示界面開始,而且监听系统事件.程序事件调度整个程序的运行. int main(int argc ...

  5. Service具体解释(二):Service生命周期

    < Service具体解释(一):什么是Service> < Service具体解释(二):Service生命周期> <Service具体解释(三):Service的使用 ...

  6. [转载] iOS应用程序的生命周期

    iOS应用程序的生命周期 2015-06-23 iOS大全 (点击上方蓝字,快速关注我们) iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些 ...

  7. vue 源码详解(二): 组件生命周期初始化、事件系统初始化

    vue 源码详解(二): 组件生命周期初始化.事件系统初始化 上一篇文章 生成 Vue 实例前的准备工作 讲解了实例化前的准备工作, 接下来我们继续看, 我们调用 new Vue() 的时候, 其内部 ...

  8. asp.net MVC 应用程序的生命周期

    下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html       ...

  9. 微信小程序之生命周期(三)

    [未经作者本人同意,请勿以任何形式转载] 上一篇介绍微信小程序开发工具使用和项目目录结构. 这一章节介绍微信小程序的生命周期,什么是生命周期呢? 通俗的讲,生命周期就是指一个对象的生老病死. 从软件的 ...

随机推荐

  1. Java基础系列(21)- dowhile循环

    do-while循环 对于while语句而言,如果不满足条件,则不能进入循环.但有时候我们需要即使不满足条件,也至少执行一次 do-while循环和while循环相似,不同的是,do-while循环至 ...

  2. windows10 升级并安装配置 jmeter5.3

    一.安装配置JDK Jmeter5.3依赖JDK1.8+版本,JDK安装百度搜索JAVA下载JDK,地址:https://www.oracle.com/technetwork/java/javase/ ...

  3. Python+Pygame开发太空大战/飞机大战完整游戏项目(附源代码)

    项目名称:太空大战 开发环境:Python3.6.4 第三方库:Pygame1.9.6 代码编辑器:Sublime Text 先来看一下游戏画面吧!  游戏画面动态且丰富哦!   需求分析 利用Pyt ...

  4. spring入门2-aop和集成测试

    1.AOP开发 1.1.简述 作用:面向切面编程:在程序运行期间,在不修改源码的情况下对代码进行增强 优势:减少代码重复,提高开发效率,便于维护 底层:动态代理实现(jdk动态代理,cglib动态代理 ...

  5. django使用celery搭配redis配置定时任务

    已经安装环境: Python3.6 django==2.1.8(用2.2.2需要升级sqlite3) 项目名称:ceshiproject   APP名称:ceshi 第一步:centos7下首先安装r ...

  6. CF5E-Bindian Signalizing【单调栈】

    正题 题目链接:https://www.luogu.com.cn/problem/CF5E 题目大意 圆上有\(n\)个山,两个山之间可以看到当且仅当它们之间的两条弧中有一条满足所有山都不高于它们两个 ...

  7. P4022-[CTSC2012]熟悉的文章【广义SAM,dp,单调队列】

    正题 题目链接:https://www.luogu.com.cn/problem/P4022 题目大意 给出\(m\)个模板串. 然后\(n\)次询问给出一个串\(S\)要求找到一个最大的\(L\)使 ...

  8. 深入理解netty---从偶现宕机看netty流量控制

    一.业务背景 目前移动端的使用场景中会用到大量的消息推送,push消息可以帮助运营人员更高效地实现运营目标(比如给用户推送营销活动或者提醒APP新功能). 对于推送系统来说需要具备以下两个特性: 消息 ...

  9. Windows10通过WSL编译jdk12

    Windows使用WSL编译OpenJDK 安装Ubuntu以及配置国内镜像 首选确保windows10已经安装了ubuntu 更换ubuntu20.04国内镜像,这里我选择的是阿里云镜像 sudo ...

  10. 使用Stargate访问K8ssandra,Springboot整合Cassandra

    1 简介 之前我们在文章<K8ssandra入门-详细记录在Linux上部署K8ssandra到Kubernetes>成功地在Ubuntu上安装了K8ssandra,现在我们来看看如何访问 ...