YARN最主要的思想是分离资源管理和任务调度/监控。
ResourceManager <-------------> ApplicationMaster <--------------->NodeManager
RM与NM之间的交流通过AM进行
Container把NM中的资源和计算分开,所以yarn实现了计算框架可插拔。
job TRacker作用:资源管理和任务调度。
yarn作用:yarn是hadoop通用资源管理平台,为各类计算框架(离线MR,在线storm,内存计算spark)提供统一资源管理和调度。
yarn功能:
1、统一资源管理和调度:集群中所有节点的资源(内存、cup、磁盘、网络)抽象为Container。计算框架需要向yarn申请Container,yarn按策略对资源进行调度与Container分配。
2、资源隔离:yarn使用了轻量级资源隔离机制Cgroup进行资源隔离,避免相互干扰,一旦Container使用资源量超过阈值,即会被干掉。
yarn的部件:
ResourceManager:简称RM,全局管理计算程序的资源分配调度。主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationsManager)
Scheduler:负责根据容量、队列等条件,根据各个应用程序所需将系统中的资源分配给各个应用程序。
ApplicationsManager:简称ASM,负责管理整个系统中所有程序,包括应用程序提交、与调度器协商资源以启动APPlicationMAster,监控APPlicationMAster运行状态并在失败时重启。
NodeManger:简称NM负责各个节点的资源与任务管理,会定时向RM汇报本节点的Container使用与运行情况。同时接收并处理来自AM的Container启动、停止请求。
ApplicationMaster:简称AM,每个提交的程序都有一个AM,它负责从RM获取资源并与NM协同监控执行应用的执行。
Container:Container是yarn中的资源抽象,他封装了节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM返回的资源就是用Container表示的。yarn会为每个任务分配一个Container,且该任务只能使用该Container中的资源。
YARN运行机制:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c0470cd56a47e0176fedd390319399af.png)
1、client向yarn提交应用程序 。
2、ResourceManager分配一个Container,并与对应的NodeManager通信,要求它在这个Container启动应用程序的ApplicationMaster。
3、AM先向RM注册,通过RM可以查看应用程序的运行状态,然后AM将为各个任务申请资源,并监控它的运行状态,直到运行结束 。
4、AM采用轮询的方式通过RPC协议向RM申请和领取资源。
5、AM申请到资源后与对应的NM通信,要求启动任务 。
6、NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后 。将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
7、各个任务通过RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败时重启任务 。
8、应用程序运行完毕后,AM向RM注销并关闭自己,Container资源被释放可以重用。