Spark任务提交流程
文章目录
- 1.Standalone-Client
- 2.Standalone-cluster
- 3.Yarn-Client模式
- 4.Yarn-Cluster
1.Standalone-Client
[root@node4 bin]# ./spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
1.Client提交任务后,Client会启动一个Driver进程。
2.Client为当前的application向Master申请资源
3.Master找到满足资源的Worker节点,启动Executor(内有ThreadPool,可以跑Task)
4.Executor启动后,会反向注册给Driver(告诉Driver:你可以给我发Task,我有能力run)
5.Driver将task发送给Executor、监控Task的执行情况,并回收结果
注意:这种模式有问题:Driver是在Client启动,每个提交的Spark Application都会有自己独立的Driver。一旦Client提交N多个Application,多个Driver和集群Worker就会产生大量通信,会造成Client网卡流量激增问题。so,该模式只适用程序测试,不适合生产环境。在Client能看到task执行结果。
2.Standalone-cluster
–deploy-mode cluster 指定运行模式
[root@node4 bin]# ./spark-submit --master spark://node1:7077 --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
1.(worker向master汇报)Client首先提交application,向Master申请启动Driver
2.Master随机找一台满足资源的Worker节点,启动Driver
3.Driver启动成功后,替Application向Master申请资源
4.Master启动Worker上的Executor(内有线程池TheadPool,用来run task),Executor反向注册给Driver
5.Driver向Executor发送task
注意:spark基于standalont-cluster模式提交任务,Driver是在随机一台worker上启动。如果client想提交多个application,将单节点网卡流量激增问题分散到集群中,这种模式适用于生产环境。
缺点:在client看不到task的执行和结果,只能去web ui去看
3.Yarn-Client模式
[root@node4 bin]# ./spark-submit --master yarn
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 1003种:--master yarn--master yarn-client--master yarn --deploy-mode client
1.(NodeManager向ResourceManager汇报资源)在Client提交application,首先在Client启动Driver
2.Client向ResourceManager申请启动ApplicationMaster
3.ResourceManager收到请求后,随机在一台NodeManager节点启动ApplicationMaster
4.ApplicationMaster会向ResourceManager申请资源,用于启动Executor
5.ResourceManager返回给ApplicationMaster返回一批资源(哪些NodeManager可以启动Executor)
6.ApplicationMaster连接NodeManager,启动Executor(内有线程池ThreadPool,用来run task)
7.各个Executor向Driver反向注册
8.Driver就能发送task、监控task执行、回收结果
注意:该模式提交任务,当在Client提交多个Application,每个Application都有自己独立的Driver。Driver与集群大量通信,Client会造成网卡流量激增问题。
只适用于程序测试,不适用生产环境。在Client就能看到task的执行结果
4.Yarn-Cluster
[root@node4 bin]# ./spark-submit --master yarn-cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 1002种:--master yarn-cluster--master yarn --deploy-mode cluster
1.在client提交application,首先client向RS申请启动ApplicationMaster
2.RS先随机找到一台NodeManager启动ApplicationMaster(身份就是Driver)
3.ApplicationMaster向RS申请启动Executor的资源
4.RS返回一批资源给ApplicationMaster
5.ApplicationMaster连接那些Executor(内置ThreadPool)
6.各个Executor反向注册给ApplicationMaster(充当Drvier)
7.ApplicationMaster发送task、监控task执行,回收结果
注意:该模式当Client有多个application提交时,将client模式的网卡流量激增问题分散到集群,适用生产环境。在client看不到task的执行和结果,只能去webui查看
Spark任务提交流程相关推荐
- Spark 任务提交流程说明
前言 Spark on Yarn集群管理方式 Yarn-Client 任务提交方式 Yarn-Cluster 任务提交方式 Spark Standalone集群管理方式 Standalone Clie ...
- Spark Submit任务提交流程
1,简介 在上一篇博客中,我们详细介绍了Spark Standalone模式下集群的启动流程.在Spark 集群启动后,我们要想在集群上运行我们自己编写的程序,该如何做呢?本篇博客就主要介绍Spark ...
- Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项
背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...
- 【概述】spark(一):spark特点、知识范畴、spark架构、任务提交流程、支持哪些运行环境
学习或者复习一门技术之前需要认识这个技术:包括这个技术的特点.架构.它是怎么运作的.它能在哪里运行等: 然后可以学习怎么使用它开放的API对一些业务场景进行开发实现: 其次对于某些特定场景我们可能使用 ...
- Spark任务提交底层原理
Driver的任务提交过程 1.Driver程序的代码运行到action操作,触发了SparkContext的runJob方法. 2.SparkContext调用DAGScheduler的runJob ...
- Spark任务执行流程
这是Spark官方给的图,大致意思就是: 四个步骤 1.构建DAG(有向无环图)(调用RDD上的方法) 2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中 ...
- Arxiv 论文提交流程——看这篇就够了
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:刘浚嘉 | 来源:知乎 https://zhuanlan.zhihu.com/p/1094051 ...
- Spark任务提交源码
文章目录 一.向Master申请启动Driver 二.启动Driver 三.DriverWrapper向Master申请资源(给Application) 一.向Master申请启动Driver Spa ...
- Spark学习(四) -- Spark作业提交
标签(空格分隔): Spark 作业提交 先回顾一下WordCount的过程: sc.textFile("README.rd").flatMap(line => line.s ...
最新文章
- centos java 指令_Centos 命令方式下载JDK1.7
- python不能处理excel文件-别以为Python的pandas不能处理非规范Excel数据
- Conficker-AE的处理方法
- 宏定义对调试代码的作用
- [Objective-C语言教程]结构体(17)
- 执行Hive语句报错:FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Access denied for user '
- 关于线性字符串匹配的算法-----KMP的算法
- jQuery 学习笔记 元素操作
- Win10安装RabbitMq遇到的问题解决方案集锦
- 4k hidpi 黑苹果_黑苹果如何开启HiDPI? 黑苹果一键开启 macOS HiDPI教程
- 2021起重机作业 (Q)模拟考试题库及软件
- 在matlab中的polyval函数,Python/Numpy中三输出等价的Matlab polyval函数
- 使用Kinect测量身高
- EXCEL VBA 二维表转换成一维表
- unity中显示fps
- 热插拔48块硬盘服务器,24块前置热插拔硬盘设计
- php shopex,shopex官网 用PHP为SHOPEX增加日志功能代码
- datatables分页,排序,ajax请求等参数设置
- 计算机专业、软件技术、工程等学编程的同学电脑必配环境
- 思科下一代数据中心Nexus7000优势