文章目录

  • 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任务提交流程相关推荐

  1. Spark 任务提交流程说明

    前言 Spark on Yarn集群管理方式 Yarn-Client 任务提交方式 Yarn-Cluster 任务提交方式 Spark Standalone集群管理方式 Standalone Clie ...

  2. Spark Submit任务提交流程

    1,简介 在上一篇博客中,我们详细介绍了Spark Standalone模式下集群的启动流程.在Spark 集群启动后,我们要想在集群上运行我们自己编写的程序,该如何做呢?本篇博客就主要介绍Spark ...

  3. Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项

    背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...

  4. 【概述】spark(一):spark特点、知识范畴、spark架构、任务提交流程、支持哪些运行环境

    学习或者复习一门技术之前需要认识这个技术:包括这个技术的特点.架构.它是怎么运作的.它能在哪里运行等: 然后可以学习怎么使用它开放的API对一些业务场景进行开发实现: 其次对于某些特定场景我们可能使用 ...

  5. Spark任务提交底层原理

    Driver的任务提交过程 1.Driver程序的代码运行到action操作,触发了SparkContext的runJob方法. 2.SparkContext调用DAGScheduler的runJob ...

  6. Spark任务执行流程

    这是Spark官方给的图,大致意思就是: 四个步骤 1.构建DAG(有向无环图)(调用RDD上的方法) 2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中 ...

  7. Arxiv 论文提交流程——看这篇就够了

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:刘浚嘉 | 来源:知乎 https://zhuanlan.zhihu.com/p/1094051 ...

  8. Spark任务提交源码

    文章目录 一.向Master申请启动Driver 二.启动Driver 三.DriverWrapper向Master申请资源(给Application) 一.向Master申请启动Driver Spa ...

  9. Spark学习(四) -- Spark作业提交

    标签(空格分隔): Spark 作业提交 先回顾一下WordCount的过程: sc.textFile("README.rd").flatMap(line => line.s ...

最新文章

  1. centos java 指令_Centos 命令方式下载JDK1.7
  2. python不能处理excel文件-别以为Python的pandas不能处理非规范Excel数据
  3. Conficker-AE的处理方法
  4. 宏定义对调试代码的作用
  5. [Objective-C语言教程]结构体(17)
  6. 执行Hive语句报错:FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Access denied for user '
  7. 关于线性字符串匹配的算法-----KMP的算法
  8. jQuery 学习笔记 元素操作
  9. Win10安装RabbitMq遇到的问题解决方案集锦
  10. 4k hidpi 黑苹果_黑苹果如何开启HiDPI? 黑苹果一键开启 macOS HiDPI教程
  11. 2021起重机作业 (Q)模拟考试题库及软件
  12. 在matlab中的polyval函数,Python/Numpy中三输出等价的Matlab polyval函数
  13. 使用Kinect测量身高
  14. EXCEL VBA 二维表转换成一维表
  15. unity中显示fps
  16. 热插拔48块硬盘服务器,24块前置热插拔硬盘设计
  17. php shopex,shopex官网 用PHP为SHOPEX增加日志功能代码
  18. datatables分页,排序,ajax请求等参数设置
  19. 计算机专业、软件技术、工程等学编程的同学电脑必配环境
  20. 思科下一代数据中心Nexus7000优势

热门文章

  1. 大脚导入配置选择哪个文件_IntelliJ IDEA 最常用配置(收藏篇)
  2. javascript经典实例_提升JavaScript变量的方法有哪些?
  3. webpack搭建vue项目开发环境【文档向学习】
  4. java中注解的使用与实例 (二)
  5. JavaScript中的递归
  6. 用于HTTP加密浏览的TW2.0插件
  7. JDK、JRE、JVM三者间的关系(有图)
  8. nopi 的使用记录
  9. 洛谷 P1636 Einstein学画画
  10. 《JavaScript高级程序设计》心得笔记-----第四篇章