笨鸟的平凡之路-浅谈spark集群运行的两种模式

spark集群运行的两种模式:yarn-cluster和yarn-client

在说yarn-cluster和yarn-client之前,首先大家得知道不管是哪种模式,都是基于yarn来的.在hadoop2.X版本引进yarn之后,为了减轻了在1.X版本的JobTrack和TaskTrack的压力,增加了ResourceManager和NodeManager的概念.JobTracker中的资源管理和作业控制功能被分开,分别由组件ResourceManager和ApplicationMaster实现,其中ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序.在All Applications中会有多个ApplicationID,比如:application_1559097770726_0001.一个应用程序就对应有一个ApplicationMaster,但是只有一个ResourceManager节点负责所以的资源分配.
对于一个Application程序来说,与之对应的ApplicationMaster相当于主管,ResourceManager比作经理,其中ApplicationMaster是活动在某个NodeManager中的,其余的NodeManager在这次应用Application中相当于分主管,执行被分配属于自己的工作.给我们的感觉是由:
客户端client提交任务->ResourceManager(经理接收了来自客户端的很多任务Applications)->NodeManager中的ApplicationMaster(主管从经理手中被分配很多任务中的一个Application)->其余的NodeManager(分主管被主管分配属于自己的任务)

yarn的架构图:
在这里插入图片描述

ok,yarn简单介绍如上.下面比较yarn-client和yarn-cluster
首先我们知道一个Spark的任务需要Driver端和Executor端.
Driver:
运行应用程序的main函数
创建spark的上下文,程序的停止 sc.stop
划分RDD并生成有向无环图(DAGScheduler)
与spark中的其他组进行协调,协调资源等等(SchedulerBackend)
生成并发送task到executor(taskScheduler)

Executor:
接受Driver端发送来的Task,然后执行任务.当然,Executor不是直接接受Task的,会再内部进行一些转换,这里就不再细说.可以查看:https://www.cnblogs.com/haoyy/p/6177974.html
Executor和container的关系如下:
AM启动一个container -> executorlauncher,executorlauncher启动一个container -> CoarseGraineExecutorBackend

在yarn-client和yarn-cluster有一点很重要的就是Driver的位置:

yarn-client:client模式下,程序在哪台节点提交,哪台机器就是Driver端.先有driver再有AM(ApplicationMaster),此时driver负责RDD生成、task生成和分发,向AM申请资源等 ,AM负责向RM(ResourceManager)申请资源

yarn-cluster:Cluster模式下,Driver的位置和ApplicationMaster相关.哪台机器注册了AM,就说明Driver在哪台机器上.可以通过日志查看.比如:
在这里插入图片描述

说明Driver注册在192.***.***.161这台机器上.如果还不确定,我们可以去Spark的日志查看:
在这里插入图片描述

yarn-client和yarn-cluster的不同还体现在客户端的依赖性

yarn-client:日志会在控制台直接输出,便于调试.当关闭Client客户端如:ctrl+C,Spark程序会立即停止.原因:Application Master仅仅向YARN请求启动executor.client会和请求的container通信来调度他们工作,所以client不能离开.

yarn-cluster:日志是被收集在UI界面19888/jobhistory中.并且关闭Client,程序并不会停止,依然存活在yarn上,只有通过命令:
yarn application -kill application_ID 才能终止程序.原因:driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client.

网卡流量对比:
yarn-client:因为Driver运行在本地Client,Driver会与yarn集群中的Executor进行大量的通信,会造成客户机网卡流量的大量增加.

yarn-cluster:因为Driver运行在Yarn集群的某一台nodeManager中,每次提交任务Driver所在的机器都是随机的,不会产生某一台机器网卡流量激增的现象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值