Yarn经过两个 守护线程提供核心服务:ResourceManager,管理集群全部资源的切分以及做业的调度与监控;NodeManager,运行在集群全部节点上,启动并监控容器的运行情况,并负责向ResourceManager汇报。linux
在linux上,hadoop是经过cgroup技术实现container资源隔离的。app
下面有两张图,都是一个做业在yarn中运行流程,不过 我以为第二张图更加清晰易懂,第一张图来自于hadoop权威指南。分布式
、oop
根据这两张图来讲明下一个做业在yarn中运行流转过程。spa
在yarn上运行一个application:线程
1. client首先会链接RM,请求运行一个AM(ApplicationMaster负责单个应用程序的管理,监控task的执行) .blog
2. RM会寻找一个能够运行 AM的 容器的节点,并启动AM。hadoop
3. AM经过heartbeat向RM 申请资源。严格的讲,一个application只会运行一次AM。它能够在container简单的运行一个计算,也能够向RM申请更多的资源,运行分布式的计算。资源
4. 当AM申请到更多的资源时,便会与对应的NM通讯,要求其启动任务。io
5. 各个任务经过RPC协议向AM汇报本身的状态和进度。当程序运行完毕后,AM向RM注销并关闭本身。