Spark的Yarn Cluster部署模式的工作流程

YARN Cluster

由于YARN Cluster模式在企业中应用较为常见,所以重点学习下。

工作流程中各个组件的作用

想要了解YARN Cluster模式提交任务后的具体执行流程,就必须先熟悉流程中所涉及的对象主要是干什么工作的:

  1. ResourceManager(RM) :是Yarn集群的主控节点,负责协调和管理整个集群(所有NodeManager)的资源;
  2. NodeManager(NM):NM管理一个Yarn集群中的每一个节点。比如节点健康;
  3. ApplicationMaster(AM):先简单了解下AM的工作流程:我们向YARN集群提交应用程序时:(包含ApplicationMaster程序,ApplicationMaster启动命令,我们自己的程序)后,ApplicationMaster会向资源调度器(RM)申请执行任务的资源容器Container,运行用户自己的程序任务job(我们可以用浏览器看yarn里的job进展),监控整个任务的执行,跟踪整个任务的状态,处理失败任务的异常情况;
  4. Driver:
    注意在本文的模式中,Driver是运行在AM中的, 所以以下的功能也是属于AM的。
    1)将我们自己的程序转为任务;
    2)跟踪Executor的运行情况;
    3)为执行器节点(Executor)调度任务;
    4)将程序的运行情况展示到UI;
  5. Executor:
    1)负责运行组成spark应用的任务,并将结果返回给驱动器进程;
    2)它们还可以为用户程序中要求缓存的RDD提供内存式存储。
  6. Container:这是一个抽象概念,它代表所分配的“资源”,作为一个抽象容器,它将内存、CPU、磁盘、网络等资源封装在一起,这样可以起到限定资源边界的作用。

工作流程图

Spark的Yarn Cluster部署模式的工作流程

文字说明

  1. Spark Yarn Client向YARN中提交程序,包括包含ApplicationMaster程序,ApplicationMaster启动命令,我们自己的程序。
  2. ResourceManager收到请求后,在集群中选择一个NodeManager,为改应用程序分配第一个Container,分配完成之后,启动ApplicationMaster。
  3. ApplicationMaster向ResourceManager注册,并申请启动Executor的资源。
  4. ApplicationMaster申请到RM分配的资源后,便选择一个NodeManager,要求其在获取的Container中启动Executor。
  5. ApplicationMaster分配task给Executor执行,并监控任务执行的状态。
  6. 应用 程序执行完毕之后,Application向ResourceManager申请注销并关闭自己。

YARN-Cluster 与YARN-Client的不同之处

YARN-Cluster YARN-Client
Driver运行在NodeManager节点上 Driver运行在本地机器上
没有网卡流量激增的问题 由于Driver在本地机器上,所以大量负责spark任务的调度都集中在这台机器上,导致网卡流量激增
Yarn与driver在同一个机房,在性能上会更好一点 通常来说,本地机器不会与Yarn集群在同一个机房,所以性能不会很好

总结

以上是YARN-Cluster部署模式的大体工作流程,如果想要印象深刻一点,推荐大家先记住所涉及的组件名称,然后自己画三遍流程图,画图的时候记得留意每个组件的作用,把整个流程串起来。如果想要更深入的学习,还需要结合网上的资料去研究源码。若发现不足之处,请大佬务必指出来,想要进步,就离不开各位帅气老师的反馈。