YARN的基本想法是从资源管理和job的监控调度中分离出来(也就是从mapreduce中分离出来)。有一个全局的资源管理器(ReourceManager,RM)和每个应用一个的应用主程序(ApplicationMaster AM)。应用可以是一个job也可是一个job的有向无环图。
YARN还有个Federation功能,可以多个独立的集群联合成一个巨大的集群,运行超大的任务。
1 ResourceManager
对资源有绝对的控制权,分配资源到各个应用。有2个重要的组件:调度器和应用管理器
1.1 调度器
是一个可拔插的策略,用来从容器中分配资源。资源通过虚拟化的资源container来分配。Container包含内存,cpu等信息,任务在Container中运行。
1.2 应用管理器
负责接收提交的job,并且通过第一个容器来启动ApplicationMaster,提供重启服务
2 NodeManger
管理容器,监控资源使用,并报告到调度器
3 ApplicationMaster
由应用管理器通过第一个容器执行,并提供ApplicationMaster的重启服务。用来通过从资源管理器分配来的资源(容器)和nodemanager一起执行和监控任务。