关于Spark的部署yarn模式

一、Yarn Client的工作流程图

  1. Spark Yarn Client向Yarn的ResourceManager申请启动ApplicationMaster。同时在SparkContext初始化将DAGSecheduler和TaskScheduler等组件,由于我们选择yarn-client模式,程序回选择YarnClientClustserSchelder和YarnClientSchedulerBackend。

  2. ResourceManager收到请求之后,在集群中选择某一个NodeManager作为该应用程序分配第一个Contaier,要求在这个Container启动一个ApplicationMaster。与Yarn-cluser模式区别是在ApplicationMaster中不运行SparkContext,只与SparkContext进行联系进行资源分配。

  3. Client中的SparkContext在初始化完毕之后,与ApplicationMaster只建立通讯。向ResurceManager注册,根据任务信息向ResourceManager申请资源。

  4. 一旦在ApplicationMaster中申请到了资源,便与对应NodeManager通信,要求它在活得的Container中启动CoarseGrainedExecutorBackend,这个组件在启动后向Client中的SparkContext注册并申请Task。

  5. client中的SparkContext分配Task给CoarseGrainedExecutorBackend执行并且向Driver汇报运行的状态和进度。

  6. 当整个应用程序完成之后,client的SparkContext向ResourceManager申请注销并关闭自己

二、Yarn Cluster工作流程图

小结:cluster和client模式的区别

首先你要清楚一个概念:ApplicationMaster。在Yarn总,每个Application实例(Flink Application、Spark Application、Mapreduce Application...)都有ApplicationMaster进程,它是Application启动的时候产生的第一个容器。它负责和ResaurceManager打交道并请求资源,获取资源之后告诉NodeManager为其启动Container。从深层次将yarn-cluser和yarn-client模式的区别其实就是ApplicationMaster进程的区别。

​ Yarn-cluster模式下,Driver运行在ApplicationMaster中,它负责向Yarn申请资源,并监督job运行状况。用户提交job之后,client就可以关掉了,但是job会继续在yarn上运行。

​ yarn-client模式,ApplicationMaster仅仅向yarn请求executor,client会和请求的container通信来调度他们的工作,所以说client会不会关掉?答案肯定是不能。

得出一个结论:

​ - driver会和executor进行通信,所以yarn-cluster在提交app之后可以关闭client,但是yarn-client不可以

​ - yarn-cluster适合生产环境中使用,yarn-client适合在测试的交互环境中使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值