yarn浅析

1、yarn架构

YARN是经典的主从(master/slave)结构,大体上看,YARN服务由一个ResourceManager和多个NodeManager构成,ResourceManager为主节点(master),NodeManager为从节点(slave)。

2、组件

1、Application master

1、作用
相当于这个Application的监护人和管理者,负责监控、管理这个Application的所有Attempt在cluster中各个节点上的具体运行,同时负责向ResourceManager申请资源、返还资源等;

2、
Client 向 ResourceManager 提交的每一个应用程序都必须有一个 ApplicationMaster,它经过 ResourceManager 分配资源后,运行于某一个 Slave 节点的 Container 中,具体做事情的 Task,同样也运行与某一个 Slave 节点的
Container 中。

2、Container

Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当 AM 向 RM 申请资源时,RM 为 AM 返回的资源便是用 Container 表示的。YARN 会为每个任务分配一个 Container,且该任务只能使用该 Container 中描述的资源。

3、yarn工作流程

image.png

如图所示:
1、客户端需要先和主的Resource Manager建立连接
2、ResourceManager通过计算联系一个nodeManager,此时发送的消息中是会含有运行app Master的资源要求(比如多少cpu,内存···)的,在nodeManager收到消息之后,会在自己本地创建一个叫做container的容器,有了这个容器之后,在它里面运行着一个app master的进程。
3、app master启动完成后,它会和ResourceManager进行通信,此时ResourceManager又会进行一次计算,然后返回一条消息给app master,通过app master联系其它的nodeManager,因为一个application的运行是通过多个container来共同完成的。创建container容器来执行application
4、这些container在执行任务的时候也会和app master保持通信,当所有任务都执行完成时,app master会将这些容器销毁。

参考资料:https://juejin.im/post/5dd7c099f265da7e117dbff3

4、spark 提交yarn的状态

1、yarn-client模式

本地机器提交Application到ResourceManager,会直接在本地机器启动Driver程序,RM在资源充足的一台NodeManager启动ApplicationMaster,之后AM向RM申请executor,RM根据各个节点的资源情况分配container,并告知AM,各个NodeManager启动executor,启动之后各个NodeManager向Driver反向注册,这时候Driver就知道自己有哪些资源可以使用了,然后就可以执行job、拆分stage等的计算任务了。

感觉ApplicationMaster除了申请executor没有其他作用了。

#######2、yarn-cluster模式
本地机器提交Application(就是自己写的spark的应用程序)到ResourceManager,RM在资源充足的一台NodeManager启动ApplicationMaster,Driver与其一同启动,之后向RM申请executor,RM根据各个节点的资源情况分配container,并告知AM,ApplicationManager向各个NodeManager启动executor,启动之后各个NodeManager向AM反向注册,这时候ApplicationManager(Driver)就知道自己有哪些资源可以使用了,然后就可以执行job、拆分stage等的计算任务了。

你可能感兴趣的:(yarn浅析)