博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Big Data 每日一题20180919】Spark内核分析之spark作业的三种提交方式
阅读量:4217 次
发布时间:2019-05-26

本文共 1394 字,大约阅读时间需要 4 分钟。

最近在研究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任务分配算法等等。欢迎关注。

链接:https://www.jianshu.com/p/4ff64cad1cb8
 

转载地址:http://bfvmi.baihongyu.com/

你可能感兴趣的文章
自动驾驶汽车传感器数字孪生建模(一)
查看>>
CUDA 学习(四)、线程
查看>>
CUDA 学习(五)、线程块
查看>>
CUDA 学习(八)、线程块调度
查看>>
CUDA 学习(九)、CUDA 内存
查看>>
CUDA 学习(十一)、共享内存
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十四章 生化尖兵
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十五章 超级马里奥64
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十六章 Raptor Safari
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十七章 游戏感的原理
查看>>
游戏感:虚拟感觉的游戏设计师指南——第十八章 我想做的游戏
查看>>
游戏设计的艺术:一本透镜的书——第十章 某些元素是游戏机制
查看>>
游戏设计的艺术:一本透镜的书——第十一章 游戏机制必须平衡
查看>>
游戏设计的艺术:一本透镜的书——第十二章 游戏机制支撑谜题
查看>>
游戏设计的艺术:一本透镜的书——第十三章 玩家通过界面玩游戏
查看>>
编写苹果游戏中心应用程序(翻译 1.3 为iOS应用程序设置游戏中心)
查看>>
编写苹果游戏中心应用程序(翻译 1.4 添加游戏工具包框架)
查看>>
编写苹果游戏中心应用程序(翻译 1.5 在游戏中心验证本地玩家)
查看>>
编写苹果游戏中心应用程序(翻译 1.6 获取本地玩家的信息)
查看>>
编写苹果游戏中心应用程序(翻译 1.7 在游戏中心添加朋友)
查看>>