YARN 作用 :资源调度分配
比 开启hdfs多两个进程 ResourceManager NodeManager 这两个进程
主要的模块
1.ResourceManager (RM)
yarn的资源控制框架的中心模块,负责集群中的所有的资源的统一管理和分配。
RM里面: 调度器 应用管理器
2.调度器(ResourceScheduler)
根据各个应用程序的资源需求,进行分配
3.应用管理器(Applications Manager)
负责监控和跟踪AM的执行状态
4.NodeManager(NM)
是ResourceManager每台机器上的代理,负责容器的管理,并监控他们的资源使用情况(CPU,内存,磁盘,网络等等),以及向RM进行这些资源的汇报
5.ApplicationMaster(AM)
yarn中每个应用都会启动一个AM,负责向RM去申请资源,请求NM启动Container,并告诉container去做什么
6.Container
这是一个虚拟的一个概念
yarn中所有应用都是再container上运行的,包括(AM)
1.container是yarn中资源的抽象(申请到的资源),它封装了某个节点上的一定资源
(cpu,磁盘,内存,网络等等)
2.container由AM向RM申请,由RM中的ResourceScheduler分配给AM
container 分类
1.运行AM的container
2.运行各类任务的container,由AM向RM申请的
MapReduce on yarn
下图就是 MapReduce on yarn
1Cilent向RM提交应用程序,其中包括AM主程序,启动AM的命令,用户的程序(wordcount)
2.RM为该应用分配第一个Container,并于NM通信,要求NM在这个Container启动AM
3.AM首先向RM注册,这样用户可以直接通过RM来查看程序的运行状态 (9527?8088端口可以看到)
4.AM通过RPC协议向ResourceScheduler申领资源
5.一旦申领到资源,与NM通信,要求NM启动任务
6.NM为任务设置好运行环境(环境变量 , hadoop jar包 hadoop.env),将任务的启动命令写到一个脚本中,并通过脚本触发启动任务。(hadoop jar share/....... wc.sh)
7.各个Container的Task(Map Task,Reduce Task),通过RPC向AM进行进度和状态的汇报,以便AM可以随时掌握任务的运行状态,失败的时候也会重启container任务
8.应用程序运行完成后,AM会向RM申请注销和关闭
总结
1-4 启动ApplicationMaster 领取资源
5-9 启动任务直到任务结束