yarn的作用
在大数据生态环境中,yarn主要有两个作用:资源管理和程序调度
Yarn的组成
ResourceManager作用:
1)处理客户端请求;2)监控NodeManager,对各个NodeManager上的资源进行统一管理和调度;3)给ApplicationMaster分配空闲的Container运行并监控其运行状态(Scheduler来完成);
NodeManager作用:
1)负责管理单个节点上的资源;2)定时的向RM汇报本节点上的资源使用情况和Container的运行状态。
ApplicationMaster作用:
1)负责整个任务执行的监控,可以向RM汇报任务执行的状态,重启失败任务等;2)向RM为应用程序申请资源并分配给内部的任务。
Container
可以理解为Yarn 中的资源抽象,封装了某个节点上的多维度资源,如内存、cpu、硬盘、网络等,AM向RM申请资源时,RM返回的资源就是用Container表示的。
yarn资源调度流程
- 客户端将它的程序提交给Yarn,RM会给客户端返回一个jobid以及一个路径。
- 客户端会将对应的程序信息(jar包、切片信息、序列化文件)提交到对应的路径下。提交完以后给RM返回一个确认消息。
- RM就会在存放提交信息的那台NodeManager上创建出来一个容器。启动我们的ApplicationMaster。
- ApplicationMaster会跟提交的切片信息和程序向RM注册,并申请容器。
- RM收到资源请求后,就去跟NM通信,NM就会在自身的节点上创建出需要的容器数量。
- ApplicationMaster就将相应的任务信息,发送到对应的NM节点上,并使用创建出来的container去运行Task。
- 等所有的Task都执行完以后,ApplicationMaster就向RM进行注销,RM就会回收资源。