spark中local模式与cluster模式使用场景_详细总结spark基于standalone、yarn集群提交作业流程...

最近总结了一些关于spark core的内容,今天先来和大家分享一下spark的运行模式。


spark运行模式

(1)local:在本地eclipse、IDEA中写spark代码运行程序,一般用于测试

(2)standalone:spark自带的资源调度框架,支持分布式集群搭建。Spark可以运行在standalone集群上

(3)Yarn:Hadoop生态圈中的资源调度框架,spark可以基于Yarn运行

(4)Mesos: 资源调度框架 (用的比较少)

下面,来给大家总结一下spark基于standalone和yarn集群上提交作业的流程:

有两种可选的运行方式:

(1)client 一般用于测试环境

(2)cluster 用于实际生产环境

Spark基于standalone集群提交任务的流程

1.Client模式:

1)集群启动后,worker向Master汇报资源(资源指core和内存)

2)Master掌握了集群的资源

3)客户端提交spark任务,首先在客户端启动Driver

4)客户端向Master申请资源

5)Master找到满足资源的worker节点,在worker节点上启动Excutor进程,反向注册给Driver。

6)Driver向Worker发送Task,监控task的执行,回收结果。

流程图示:

v2-662b348672253964c6c380b0dc610dc6_b.jpg

注:(1)Driver在客户端启动

(2)每个SparkApplication有独立的Driver和Excutor

(3)Driver和集群中的worker会有大量的通信,如果有很多的apllication提交,而这种client运行方式中Driver均在客户端启动,就很容易造成客户端节点的网卡流量激增问题。所以这种方式适用于程序测试环境,不适用与生产环境。

(4)在客户端可以查看task执行过程和结果,方便调错。

2.Cluster模式:

spark基于standalone集群的cluster模式的提交任务流程:

1) 集群启动后worker向Master汇报资源

2) Master掌握集群资源

3) 客户端提交sparkApplication,客户端向Master申请启动Driver。

4) Master收到请求后随机找一台节点启动Driver。

5) Driver向Master申请资源用于启动Application

6) Master找到满足资源的worker节点,启动Excutor,反向注册给Driver

7) Driver发送task到worker节点,监控task,回收结果(collect方法)

流程图示:

v2-b3fdf47a81bc00c4bd0e1df23ada6fbb_b.jpg

注:(1)先启动Driver,再启动Application

(2)Driver在随机一台worker节点上启动,当有很多的SparkApplication提交时,这些Application作业的Driver都是分布在集群中不同worker节点上的,解决了client模式中单节点网卡流量激增的问题,适用于生产环境。

(3)在客户端看不到task的执行过程以及运行结果,要在WebUI中查看

Spark基于yarn集群提交任务的流程

1.Client模式:

流程总结:

1) NodeManager向ResourceManager汇报资源

2) ResourceManager掌握集群资源

3) 客户端提交Application,在客户端启动Driver

4) 客户端向ResourceManager申请启动ApplicationMaster。

5) ResourceManager收到请求之后随机找一台NodeManager启动ApplicationMaster

6) ApplicationMaster启动之后向ResourceManager申请资源用于启动Excutor,

7) ResourceManager收到请求后返回一批满足要求的NodeManager节点给AM

8) ApplicationMaster连接NodeManager启动Excutor

9) Excutor反向注册给Driver

10)Driver发送task给NodeManager,监控task执行,并回收结果

流程图示:

v2-c68f3286e520a9aefb027ddb38c9b7ca_b.jpg

2.Cluster模式:

Spark基于Yarn的Cluster提交作业流程总结:

1) 集群启动后,NodeManager向ResourceManager汇报资源

2) ResourceManager掌握了集群资源

3) 客户端提交SparkApplication

4) 客户端向ResourceManager申请启动ApplicationMaster

5) ResourceManager随机找一台NodeManager启动ApplicationMaster(Driver)

6) ApplicationMaster向ResourceManager申请资源用于启动Excutor

7) ResourceManager返回一批满足资源的NodeManager节点给ApplicationMaster

8) ApplicationMaster在这些NodeManager上启动Excutor

9) Excutor反向注册给Driver(ApplicationMaster)

10) ApplicationMaster发送task给NodeManager,监控task执行,回收结果

流程图示:

v2-943b17e02002c47ef064379cd3b51bc1_b.jpg

总结:

v2-8f16ecff44ff0f06cd66286b12785c46_b.jpg

v2-82d0eec8e7067569278834420b286d68_b.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值