Spark记录(二):Spark程序的生命周期
本文以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程序的生命周期的更多相关文章
- 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期
[源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...
- Android系列之Fragment(二)----Fragment的生命周期和返回栈
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- ASP.NET应用程序的生命周期
对基于.Net平台的Web应用程序开发者来说,编写适合的应用程序生命周期的代码是非常重要的.所以必须要了解应用程序生命周期才能在适当的生命周期阶段编写合适代码,达到预期的效果.ASP.NET应用程序的 ...
- iOS_应用程序的生命周期
每个iPhone程序都包括唯一一个UIApplication对象,它管理整个程序的生命周期,从载入第一个显示界面開始,而且监听系统事件.程序事件调度整个程序的运行. int main(int argc ...
- Service具体解释(二):Service生命周期
< Service具体解释(一):什么是Service> < Service具体解释(二):Service生命周期> <Service具体解释(三):Service的使用 ...
- [转载] iOS应用程序的生命周期
iOS应用程序的生命周期 2015-06-23 iOS大全 (点击上方蓝字,快速关注我们) iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些 ...
- vue 源码详解(二): 组件生命周期初始化、事件系统初始化
vue 源码详解(二): 组件生命周期初始化.事件系统初始化 上一篇文章 生成 Vue 实例前的准备工作 讲解了实例化前的准备工作, 接下来我们继续看, 我们调用 new Vue() 的时候, 其内部 ...
- asp.net MVC 应用程序的生命周期
下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html ...
- 微信小程序之生命周期(三)
[未经作者本人同意,请勿以任何形式转载] 上一篇介绍微信小程序开发工具使用和项目目录结构. 这一章节介绍微信小程序的生命周期,什么是生命周期呢? 通俗的讲,生命周期就是指一个对象的生老病死. 从软件的 ...
随机推荐
- rabbitmqctl 命令行管理工具
1. 用户管理 用户管理包括增加用户,删除用户,查看用户列表,修改用户密码. (1) 新增一个用户 rabbitmqctl add_user Username Password (2) 删除一个用户 ...
- Charles安装https证书
Charles抓取https的包,出现unknow,需要安装https证书.
- C++ 找零钱方法数
* 动态规划法 #include "stdafx.h" #include <iostream> #include <vector> using std::v ...
- php laravel v5.1 消息队列
* install https://laravel.com/docs/5.1#installationcomposer create-project laravel/laravel msgq &quo ...
- 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班? | 百篇博客分析OpenHarmony源码 | v22.01
百篇博客系列篇.本篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在 ...
- 使用Stargate访问K8ssandra,Springboot整合Cassandra
1 简介 之前我们在文章<K8ssandra入门-详细记录在Linux上部署K8ssandra到Kubernetes>成功地在Ubuntu上安装了K8ssandra,现在我们来看看如何访问 ...
- 获取HTML网页中option标签元素的值
在进行表单元素的操作时,难免会遇到对option元素的挑选,下面的示例代码能够很好的获取到你option元素选择的值,如果要传递给后端,可通过ajax或者其他方式传递即可. 示例代码 <!doc ...
- 现代 C++ 对多线程/并发的支持(上) -- 节选自 C++ 之父的 《A Tour of C++》
本文翻译自 C++ 之父 Bjarne Stroustrup 的 C++ 之旅(A Tour of C++)一书的第 13 章 Concurrency.用短短数十页,带你一窥现代 C++ 对并发/多线 ...
- 初步认识HCIA,什么是计算机网络,拓扑,网络的发展,交换机,路由器,IP,光纤,带宽,广播,ARP......
HCIA ---- 华为认证初级网络工程师 云技术 --- 云存储 云计算 计算机技术 : --- 抽象语言 -- 电线号的转换 抽象语言 -- 编码 ---- 应用层 编码 --- 二进制 -- ...
- Java初步学习——2021.10.05每日总结,第五周周二
(1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天学习了二维数组,包括二维数组的声明,和二维数组的创建.以及获取二维数组的长度,其中要注意的是二维数组是每个元素都是一维数 ...