- YARN是资源协调者(主管cup、内存)
- Application Master:单个任务的管理者
- Container:储存容器,相当于一台独立的服务器,里面装了任务运行所需要的资源,如内存,cpu,磁盘,网络。(任务申请到资源后在NM上启动的进程称为Container。比如Mapreduce中可以是Mapper或者Reduce,在Spark中可以是Driver或者Executor)
- 客户端可以多个;集群上可以运行多个AM;
每个Node Manager上可以有多个Container.
6、RM负责接收客户端提出的申请,并决定分配多少和调度到哪个Node Manager去执行;
NM是真正执行任务的节点,周期性的向RM汇报自己资源使用情况并再次接受资源配,负责启动和停止相关的进程等工作(每个NM向RM汇报自己有多少vcore和内存可用)
7、计算机每个进程都会占用一定的CPU和内存,则需要向RM申请到资源才能获准在NM上启动自己的进程。
8、RM将整个资源分队列,并限制每个队列大小,防止某个用户将占满整个集群。
9、工作流程:
客户端发出申请(用户程序、相关文件、启动ApplicationMaster命令、ApplicationMaster程序);AM先向RM注册那么客户端可以直接通过RM看到程序运行状态;AM采用轮询方式通过RPC协议向RM申请和资源领取;RM为该应用分配第一个Container,并要求该NM启动应用程序;任务启动后,NM为启动任务配置好运行环境,包括环境变量、JAR包、二进制程序等,并且将启动命令写在一个脚本里,通过脚本运行任务;各个任务通过RPC协议向其对应的AM汇报自己的运行状态和进度,让AM随时知道运行状态,从而任务失败后重启任务;应用程序运行完毕后,去对应的AM会向RM通信,要求注销和关闭自己。