Spark内核分析之spark作业的三种提交方式

        最近在研究Spark源码,顺便记录一下,供大家学习参考,如有错误,请批评指正。好,废话不多说,这一篇先来讲讲Spark作业提交流程的整体架构。

第一种,基于Standalone的方式,整体架构如下图所示

基于Standalone架构图

1.当向一个Standalone模式集群中提交一个Application的时候,第一步首先通过反射的机制创建一个DriverActor(这里指Driver)进程; 2.接着初始化SparkContext对象出来,在SparkContext初始化的时候创建出了两个很重要的对象,分别为DAGScheduler和TaskScheduler对象; 3.通过Task Scheduler向Spark集群的Master请求注册,Master接收到请求以后,通知Worker启动Executor,Worker节点为Application启动Executor进程; 4.当Executor启动以后,会反向注册到Task Scheduler上面去; 5.DAGScheduler会分配一个Stage(即一个Taskset集合)给TaskScheduler,TaskScheduler把TaskSet集合中的每个task通过task分配算法提交到executor上面去执行; 6.executor接收到一个task任务之后,将其包装成一个TaskRunner对象并调用线程池中的一条线程去执行task;

第二种,基于yarn-cluster模式的架构图,如下图所示;

Yarn-cluster模式

1.Spark提交作业到Yarn集群,向ResourceManager请求启动ApplicationMaster; 2.ResourceManager分配一个Container,然后在Yarn集群中的某个NodeManager中启动ApplicationMaster; 3.ApplicationMaster启动完成以后向ResourceManager请求分配一批Container资源,以运行Spark作业; 4.ResourceManager接收到来自ApplicationMaster的请求以后,开始一批Container资源用于启动executor; 5.当executor启动成功以后,将其信息向ApplicationMaster进行注册;

第三种,Yarn-client模式的模式,如下图所示;

Yarn-client模式

关于Yarn-client与Yarn-cluster两种模式的区别与使用场景;

区别:这两种spark作业提交方式的区别在于Driver所处的位置不同。

使用场景:Yarn-client模式主要用于测试环境,因为使用该模式提交作业的时候,可以在客户端实时观察作业运行产生的日志及作业的运行状况;Yarn-cluster模式用于实际生产环境,因为其运行的作业所产生的日志是在远程的节点上,不方便程序的调试。

总结:以上简单介绍了三种Spark作业的提交方式;上述的三种模式中的每个组件的内部工作原理会在后续的文章一一解答,包括Master资源分配算法,DAGScheduler的stage划分算法,TaskScheduler任务分配算法等等。欢迎关注。

如需转载,请注明:

Spark内核分析之spark作业的三种提交方式

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Albert陈凯

3.2 Spark调度机制

3.2 Spark调度机制 Spark调度机制是保证Spark应用高效执行的关键。本节从Application、job、stage和task的维度,从上层到底层...

36570
来自专栏大数据

Zzreal的大数据笔记-SparkDay03

Spark的运行模式 ? Spark的运行模式多种多样,灵活多变,部署在单机上时,既可以用本地模式运行,也可以用伪分布模式运行,而当以分布式集群的方式部署时,也...

21290
来自专栏算法channel

HDFS|基本概念和读写原理

01 — HDFS设计目的 A distributed file system that provides high-throughput access to ...

39970
来自专栏Albert陈凯

3.1 Spark应用执行机制分析

3.1 Spark应用执行机制分析 下面对Spark Application的基本概念和执行机制进行深入介绍。 3.1.1 Spark应用的基本概念 Spark...

33560
来自专栏Hadoop实操

如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业

继上一章介绍如何使用R连接Hive与Impala后,Fayson接下来讲讲如何在CDH集群中提交R的Spark作业,Spark自带了R语言的支持,在此就不做介绍...

45960
来自专栏python学习指南

Spark中文指南(入门篇)-Spark编程模型(一)

前言 本章将对Spark做一个简单的介绍,更多教程请参考:Spark教程 本章知识点概括 Apache Spark简介 Spark的四种运行模式 Spa...

33690
来自专栏北京马哥教育

Hadoop 2.0中作业日志收集原理以及配置方法

Hadoop 2.0提供了跟1.0类似的作业日志收集组件,从一定程度上可认为直接重用了1.0的代码模块,考虑到YARN已经变为通用资源管理平台,因此,提供一个通...

45760
来自专栏Hadoop实操

如何查看集成Sentry后Hive作业的真实用户

在CDH集群启用Sentry服务后,需要关闭Hive的启用模拟功能,hive.server2.enable.impersonation设为false,这会导致任...

60550
来自专栏云计算

在Hadoop YARN群集之上安装,配置和运行Spark

Spark是一种通用的集群计算系统。它可以在从单个节点到数千个分布式节点的集群上部署和运行并行应用程序。Spark最初设计用于运行Scala应用程序,但也支持J...

66310
来自专栏Hadoop实操

如何在Kerberos环境下使用Spark2通过JDBC访问Impala

34120

扫码关注云+社区

领取腾讯云代金券