ResourceManager中的Scheduler(调度器)和ApplicationManager(应用程序管理器) 还有YARN的执行任务流程 ????...

参考  https://blog.****.net/qq_25948717/article/details/80554809

根据下图讲解

ResourceManager中的Scheduler(调度器)和ApplicationManager(应用程序管理器) 还有YARN的执行任务流程 ????...

首先说两个概念:调度器和应用程序管理器

Hadoop2.x中使用的调度器是Scheduler,它的职能仅仅是根据各个应用程序的资源需求进行资源分配,如下图

ResourceManager中的Scheduler(调度器)和ApplicationManager(应用程序管理器) 还有YARN的执行任务流程 ????...

再下来就是,应用程序管理器Applications Manager,它的职能是负责监控或者跟踪ApplicationMaster的执行状态等,失败恢复

 下面是整个YARN的执行任务流程

1.客户端提交任务,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等

2.NodeManger向大哥ResourceManager汇报自身的状态和各个Container的运行状态,另一方面它接收并处理来自ApplicationMaster的Container启动/停止等各种请求。

3.Applications Manager和Scheduler协商资源以启动ApplicationMaster,信息传递给NodeManger

ApplicationMaster这个进程不会再ResourceManager上启动,他会随机在某一台NodeManger上启动

4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源,资源用Container-容器表示,得到任务之后,再继续拆分,分配给内部任务

这里插一句,Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等

5.一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务

6.NodeManger为任务设置好了运行环境,将任务启动命令写到一个脚本中,并通过脚本启动任务

7.此时会根据资源的大小进行切片,分配给对应的Map Task,然后在写到Reduce Task分区中

8.各个Map Task、Reduce Task通过RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个

任务的运行状态,如果任务失败时向Applications Manager重新申请资源启动任务

9.任务执行成功,ApplicationMaster通过Applications Manager,提交任务

10.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己