YARN的产生背景(通俗讲就是需要在不同时间使用不同的工具来处理数据,需要一个工具来调度,这个工具就是yarn):
YARN的架构:
重要的组件介绍:
1)resource manager(RM):
整个集群同一时间提供服务的RM只有一个(公司中会有一个备用的),负责集群资源的统一管理
处理客户端(client)的请求:提交一个作业、杀死一个作业
监控NM,一旦NM节点挂掉,上面运行的任务如何处理要告诉AM来如何进行处理
2)nodermanager(NM):
整个集群中有多个,负责单节点的资源管理和使用
定时的向RM汇报本节点的资源使用情况
接受并处理来自RM的各种命令:启动container(跑任务的工具)
处理AM的命令
自己节点的资源管理
3)applicationmaster(AM):
每个应用程序对应一个:如MR、Spark,负责应用程序的管理
为应用程序向RM申请资源(core、memory),分配给内部的task
需要与NM通信:启动/停止task,task运行在container中,AM也运行在container中
4)container:
封装了CPU、内存等资源的一个容器
是一个任务运行环境的抽象
5)client:
提交作业、查看作业的运行进度、杀死作业
1.客户端提交一个任务给RM
2.RM先通信给一个NM
3.启动container用来运行AM
4.AM运行后注册到RM上申请资源,(客户端可以通过RM看到任务,然后将整个作业需要的资源发送给AM)
5.AM将资源信息发送给对应的NM,然后启动相应的container
6.将相应的task启动在相应的container上