热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

本地提交spark_Spark的提交方式有哪些?有什么区别?

spark的提交方式总体来说有两种,分别是standalone模式和yarn模式。这两种模式又分别有两种提交方式,分别是:standalo

spark的提交方式总体来说有两种,分别是standalone模式和yarn模式。

这两种模式又分别有两种提交方式,分别是:standalone下的client提交方式。(客户端提交)

standalone下的cluster提交方式。(集群提交)

yarn下的client提交方式。(客户端提交)

yarn下的cluster提交方式。(集群提交)

下面分别来说说这几种提交方式。

Standalone模式下的两种提交方式:

1、standalone-client任务提交方式

执行流程:

1、client模式提交任务后,会在客户端启动Driver。

2、Driver与Master通信,为当前的Application申请资源。

3、资源申请成功。Driver将Task发送到Worker执行。

4、Worker将Task执行情况和执行结果返回给Driver端。

总结:

Standalone-client适合测试使用,不适合生产使用。

Driver进程是在客户端启动的,这里的客户端是指提交任务的那个节点。Driver端可以看到Task执行的情况。

Standalone-client为什么不适合生产环境呢?是因为假如要提交100个Application到集群运行,Driver每次都会在client端启动,会导致客户端100次网卡流量暴增的问题。

2、Standalone-cluster模式提交任务:

执行流程:

1、cluster模式下提交应用程序后,会向Master申请启动Driver。

2、Master接受请求后,随机在一台Worker启动Driver。

3、Driver启动后,向Master申请资源。

4、资源申请成功后,Driver将Task发送到Worker执行。

5、Worker将执行情况和执行结果返回给Driver端。

总结:

Driver进程是在集群中某一台Worker上执行的,客户端无法查看Task执行情况。假如要提交100个应用程序到集群上,每次Driver会随机在集群中某台Worker上执行。

总结Standalone两种方式提交任务,Driver与集群通信包括:

1、申请资源。

2、分发任务。

3、回收结果。

4、监控Task执行情况。

Yarn模式下的两种提交方式:

1、Yarn-clien方式提交任务:

执行流程:

1、客户端提交了一个Application,在客户端启动了一个Driver。

2、应用程序启动后会向ResourceManager(RS)发送请求,请求启动一个ApplicationMaster(AM)资源。

3、RS收到请求,随机在一台NM(NodeManager)启动AM,这里的NM相当于Standalone的Worker节点。

4、AM启动后,会向RS申请一批资源,用于启动Executor。

5、RS收到请求,向AM返回一批NM节点。

6、AM会向NM发送命令启动Executor。

7、Executor启动后会反向注册给Driver,Driver发送Task到Executor执行,并监控执行情况和结果。

总结:

与Standalone-client类似,Yarn-client同样适用于测试环境,因为Driver运行在本地,大量提交Application会导致网卡流量激增问题。

client模式下ApplicationMaster的作用(注意,client模式的AM和cluster的AM作用不同):

1、为Application申请资源。

2、给NM发送消息启动Executor。

注意,这里的AM只用申请资源的功能,没用任务调度的功能。

Yarn-cluster任务提交方式:

执行流程:

1、客户端提交了Application,发送请求到RS,请求启动一个AM。

2、AM收到请求,在集群中随便找个节点启动AM(相当于Driver端)。

3、AM启动后,向RS申请一批资源,用于启动Executor。

4、RS收到请求,向AM返回一批NM节点,用来启动Executor。

5、AM连接到NM,发送命令启动Executor。

6、Executor反向注册到AM所在节点的Driver,Driver发送Task到Executor。

总结:

cluster方式提交任务后,Driver(AM)是分布到集群各个节点的,不会造成网卡流量激增的问题。缺点是任务提交后无法查看日志,只能通过Yarn查看日志。

ApplicationMaster作用:

1、申请资源。

2、给NM发消息启动Executor。

3、任务调度。



推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • MapReduce 切片机制源码分析
     总体来说大概有以下2个大的步骤1.连接集群(yarnrunner或者是localjobrunner)2.submitter.submitJobInternal()在该方法中会创建 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 先看一段错误日志:###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • RDD创建后就可以在RDD上进行数据处理。RDD支持两种操作:1.转换(transformation):即从现有的数据集创建一个新的数据集2.动作&#x ... [详细]
author-avatar
我叫叮当既小号
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有