Spark 部署模式
- YARN Cluster
- 工作流程中各个组件的作用
- 工作流程图
- 文字说明
- YARN-Cluster 与YARN-Client的不同之处
- 总结
YARN Cluster
由于YARN Cluster模式在企业中应用较为常见,所以重点学习下。
工作流程中各个组件的作用
想要了解YARN Cluster模式提交任务后的具体执行流程,就必须先熟悉流程中所涉及的对象主要是干什么工作的:
- ResourceManager(RM) :是Yarn集群的主控节点,负责协调和管理整个集群(所有NodeManager)的资源;
- NodeManager(NM):NM管理一个Yarn集群中的每一个节点。比如节点健康;
- ApplicationMaster(AM):先简单了解下AM的工作流程:我们向YARN集群提交应用程序时:(包含ApplicationMaster程序,ApplicationMaster启动命令,我们自己的程序)后,ApplicationMaster会向资源调度器(RM)申请执行任务的资源容器Container,运行用户自己的程序任务job(我们可以用浏览器看yarn里的job进展),监控整个任务的执行,跟踪整个任务的状态,处理失败任务的异常情况;
- Driver:
注意在本文的模式中,Driver是运行在AM中的, 所以以下的功能也是属于AM的。
1)将我们自己的程序转为任务;
2)跟踪Executor的运行情况;
3)为执行器节点(Executor)调度任务;
4)将程序的运行情况展示到UI; - Executor:
1)负责运行组成spark应用的任务,并将结果返回给驱动器进程;
2)它们还可以为用户程序中要求缓存的RDD提供内存式存储。 - Container:这是一个抽象概念,它代表所分配的“资源”,作为一个抽象容器,它将内存、CPU、磁盘、网络等资源封装在一起,这样可以起到限定资源边界的作用。
工作流程图
文字说明
- Spark Yarn Client向YARN中提交程序,包括包含ApplicationMaster程序,ApplicationMaster启动命令,我们自己的程序。
- ResourceManager收到请求后,在集群中选择一个NodeManager,为改应用程序分配第一个Container,分配完成之后,启动ApplicationMaster。
- ApplicationMaster向ResourceManager注册,并申请启动Executor的资源。
- ApplicationMaster申请到RM分配的资源后,便选择一个NodeManager,要求其在获取的Container中启动Executor。
- ApplicationMaster分配task给Executor执行,并监控任务执行的状态。
- 应用 程序执行完毕之后,Application向ResourceManager申请注销并关闭自己。
YARN-Cluster 与YARN-Client的不同之处
YARN-Cluster | YARN-Client |
Driver运行在NodeManager节点上 | Driver运行在本地机器上 |
没有网卡流量激增的问题 | 由于Driver在本地机器上,所以大量负责spark任务的调度都集中在这台机器上,导致网卡流量激增 |
Yarn与driver在同一个机房,在性能上会更好一点 | 通常来说,本地机器不会与Yarn集群在同一个机房,所以性能不会很好 |
总结
以上是YARN-Cluster部署模式的大体工作流程,如果想要印象深刻一点,推荐大家先记住所涉及的组件名称,然后自己画三遍流程图,画图的时候记得留意每个组件的作用,把整个流程串起来。如果想要更深入的学习,还需要结合网上的资料去研究源码。若发现不足之处,请大佬务必指出来,想要进步,就离不开各位帅气老师的反馈。