Spark:三种任务提交流程standalone、yarn-cluster、yarn-client
spark的runtime
参考:Spark:Yarn-cluster和Yarn-client区别与联系
浪尖分享资料
standalone
Spark可以通过部署与Yarn的架构类似的框架来提供自己的集群模式。
该集群模式的架构设计与HDFS和Yarn大相径庭,都是由一个主节点多个从节点组成。
在Spark 的Standalone模式中:
主:为master
从:为worker
任务提交流程:
- spark-submit 提交任务给 Master
- Master 收到任务请求后通过 LaunchDriver 向 Worker 请求启动 Driver
- Worker 收到请求后启动 Driver
- Driver 启动后向 Master 注册(用户App信息)
- Master 收到 App 信息后根据资源的情况向 Worker 发送 launchExecutor 启动 Excutor
- Worker 收到 Master 的请求后启动相应的 Excutor
- Excutor 启动后负责与 Driver 通信, 执行相关任务

Spark on Yarn
- Application Master
在YARN中,每个Application实例都有一个Application Master进程,它是Application启动的第一个容器。它负责和ResourceManager打交道,并请求资源。获取资源之后告诉NodeManager为其启动container。 - yarn-cluster和yarn-client模式的区别
yarn-cluster和yarn-client模式的区别其实就是Application Master(AM)进程的区别,yarn-cluster模式下,driver运行在AM中,它负责向YARN申请资源,并监督作业的运行状况。
当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行,显然yarn-cluster模式不适合运行交互类型的作业。
而yarn-client模式下,ApplicationMaster仅仅向YARN请求executor,client会和请求的container通信来调度他们工作,也就是说Client不能离开。
- yarn-cluster
与standalone模式不同,yarn-cluster是基于yarn集群进行调度管理的,yarn集群上有ResourceManager(RM)和NodeManager(NM)两个角色。 - 作业提交流程
由client向RM提交请求,并上传jar到HDFS上
这期间包括四个步骤:
a). 连接到RM
b). 从 RM ASM(Applications Manager )中获得metric、queue和resource等信息。
c). 上传 app jar and spark-assembly jar
d). 设置运行环境和container上下文(launch-container.sh等脚本)- ASM 向 Scheduler 申请空闲 container
- Scheduler 向 ASM 返回空闲 container 信息(NM 等)
- RM(ASM)根据返回信息向 NM 申请资源。
- NM 分配创建一个container 并创建Spark Application Master(AM),此时 AM 上运行的是 Spark Driver。(每个SparkContext都有一个 AM)
- AM启动后,和RM(ASM)通讯,请求根据任务信息向RM(ASM)申请 container 来启动 executor
- RM(ASM)将申请到的资源信息返回给AM
- AM 根据返回的资源信息区请求对应的 NM 分配 container 来启动 executor
- NM 收到请求会启动相应的 container 并启动 executor
- executor 启动成后 反向向 AM 注册
- executor 和 AM 交互 完成任务
- 后续的DAGScheduler、TaskScheduler、Shuffle等操作都是和standaloe一样
等到所有的任务执行完毕后,AM 向 ASM 取消注册并释放资源

- yarn-client
在yarn-client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。
整体的过程与yarn-cluster类似。
不同点在于 Driver 是运行在本地客户端,它的 AM 只是作为一个 Executor 启动器,并没有 Driver 进程。
而且 Executor启动后是与 Client 端的 Driver 进行交互的,所以 Client 如果挂了 任务也就挂了。
在yarn-client、yarn-cluster 提交模式中,可以不启动Spark集群,应为相关的jvm环境有yarn管理(启动、结束等)。
standalone 提交模式中 Spark 集群一定要启动,因为需要依赖worker、Master进行任务的启动、调度等。
Spark:三种任务提交流程standalone、yarn-cluster、yarn-client的更多相关文章
- spark三种连接Join
本文主要介绍spark join相关操作. 讲述spark连接相关的三个方法join,left-outer-join,right-outer-join,在这之前,我们用hiveSQL先跑出了结果以方便 ...
- Spark集群任务提交流程----2.1.0源码解析
Spark的应用程序是通过spark-submit提交到Spark集群上运行的,那么spark-submit到底提交了什么,集群是怎样调度运行的,下面一一详解. 0. spark-submit提交任务 ...
- Apache Spark支持三种分布式部署方式 standalone、spark on mesos和 spark on YARN区别
链接地址: http://dongxicheng.org/framework-on-yarn/apache-spark-comparing-three-deploying-ways/ Spark On ...
- spark 三种数据集的关系(一)
Catalyst Optimizer: Dataset 数据集仅可用Scala或Java.但是,我们提供了以下上下文来更好地理解Spark 2.0的方向数据集是在2015年作为Apache Spark ...
- spark 三种数据集的关系(二)
一个Dataset是一个分布式的数据集,而且它是一个新的接口,这个新的接口是在Spark1.6版本里面才被添加进来的,所以要注意DataFrame是先出来的,然后在1.6版本才出现的Dataset,提 ...
- Spark三种部署方式
- Spark学习笔记-三种属性配置详细说明【转】
相关资料:Spark属性配置 http://www.cnblogs.com/chengxin1982/p/4023111.html 本文出处:转载自过往记忆(http://www.iteblog.c ...
- spark 四种模式
Spark 三种运行模式 一:Spark On Local 此种模式下,我们只需要在安装Spark时不进行hadoop和Yarn的环境配置,只要将Spark包解压即可使用,运行时Spark目 ...
- Hadoop三种架构介绍及搭建
apache hadoop三种架构介绍(standAlone,伪分布,分布式环境介绍以及安装) hadoop 文档 http://hadoop.apache.org/docs/ 1.StandAlo ...
随机推荐
- python+appium学习总结
经过了这个月的学习,今天终于完成了公司APP系统的自动化的脚本的编写. 通过单元测试框架UNITTEST,进行脚本的连跑,本来还想把测试数据统一写到EXCEL表格内,实现脚本与数据的分离. 后来发现增 ...
- 61、Queueable接口
public with sharing class QueueableSample implements Queueable{ private List<String> Name{get; ...
- Eclipse Missing artifact jdk.tools:jdk.tools:jar:1.6
Missing artifact jdk.tools:jdk.tools:jar:1.6 问题出在Eclipse Maven的支持上,在Eclipse下,java.home变量设置为用于启动Eclip ...
- 查看mysql慢日志,进行优化
MySQL 慢查询的相关参数解释:slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭. slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭. lo ...
- java多线程学习笔记(三)
java多线程下的对象及变量的并发访问 上一节讲到,并发访问的时候,因为是多线程,变量如果不加锁的话,会出现“脏读”的现象,这个时候需要“临界区”的出现去解决多线程的安全的并发访问.(这个“脏读”的现 ...
- Django框架(二十二)—— Django rest_framework-频率组件
目录 频率组件 一.作用 二.自定义频率类 三.内置的访问频率控制类 四.全局.局部使用 1.全局使用 2.局部使用 3.局部禁用 五.源码分析 1.as_view -----> view -- ...
- python获取港股通每日成交信息
接口:ggt_daily 描述:获取港股通每日成交信息,数据从2014年开始 限量:单次最大1000,总量数据不限制 积分:用户积2000积分可调取,5000积分无限制,请自行提高积分,具体请参阅本文 ...
- byte为什么要与0xff
面对带正负号的数,会采用符号扩展,如果原值是正数,则高位补上0:如果原值是负数,高位补1.二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.当前的计算机系统使用的基本上是二 ...
- axure破解版
axure 破解版 https://www.cnblogs.com/lianghong/p/9385233.html 授权: zdfans.com 注册码: gP5uuK2gH+iIVO3Y ...
- python中关于is,=和==的区别
在Python中 '='相当于赋值 '=='相当于等号两边的值相同 is则是表示两边的id,也就是内存地址相同
