Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于有一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
1)ResourceManager(RM):整个集群资源(内存、CPU等)的老大【资源的调度】
- 处理客户端请求
- 监控NodeManager
- 启动或监控Application Master
- 资源的分配与调度
2)NodeManager(NM):单个节点服务器资源老大
- 管理单个节点上的资源
- 处理来自ResourceManager的命令
- 处理来自Application Master的命令
3)ApplicationMaster(AM):单个(作业)任务运行的老大【任务的计算】
- 为应用程序申请资源并分配给内部的任务
- 任务的监控与容错
4)Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。
- Container是Yarn中的资源的抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
说明1:客户端可以有多个
说明2:集群上可以运行多个ApplicationMaster(相当于Hadoop并行运算)
说明3:每个NodeManager上可以有多个Container
说明4:每个Container默认的内存是1-8G,每个Container最少有一个CPU
客户端提交作业就会在节点上产生ApplicationMaster,并在Container容器里运行,ApplicationMaster向ResourceManager申请资源,ResourceManager会分配给对应的节点来运行任务。
ApplicationMaster申请资源给要运行对应的MapTask,ResourceManager就会在当前节点上开辟资源,然后运行MapTask。如果当前服务器运行资源不够,还有后续的任务,后续的任务会通知ApplicationMaster会申请另一台服务器要运行的任务。
可以有多个任务再同一个节点上执行。
把ApplicationMaster放在 容器里,任务运行完了可以自动释放。
网友评论