为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Spark

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

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

webp

基于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模式的架构图,如下图所示;

webp

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模式的模式,如下图所示;

webp

Yarn-client模式

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

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

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

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

如需转载,请注明:

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



作者:z小赵
链接:https://www.jianshu.com/p/4ff64cad1cb8


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
50
获赞与收藏
175

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消