Yarn是用于进行任务调度和资源管理的框架.
Yarn的组件主要包括:
ResourceManager : 资源管理
Application Master : 任务调度
NodeManager : 节点管理,负责执行任务
Yarn的工作流程如下图所示:![](https://i-blog.csdnimg.cn/blog_migrate/a247ee693ca349a3c7ef4d0eed88c4c1.gif)
1. 用户向Yarn中提交一个MR(MapReduce)任务,由ResourceManager中的Applications Manager接收
2.Applications Manager负责资源的分配, 根据任务计算出所需要的资源,如cpu资源和内存资源,将这些资源封装成Container
3.Applications Manager将任务和Container发送给Resource Scheduler(资源调度器)
4.Resource Scheduler将任务和Container分配给Application Master, 由Application Master进行二次划分, 将任务分解成MapTask和ReduceTask
5.Application Master将MapTask和ReduceTask分配给NodeManager,三个NodeManager随机接收到MapTask或者ReduceTask , 由NodeManager负责任务的执行
6.注意,Application Master会对NodeManager的任务完成情况进行监控, 而Applications Manager会对NodeManager的任务资源使用情况进行监控.
7.如果NodeManager上的任务执行成功,会把成功信息发送给Application Master和Applications Manager, 然后Applications Manager会进行资源的回收.
8.如果NodeManager上的任务执行失败,会把失败信息发送给Application Master和Applications Manager, 然后Applications Manager仍然会进行资源的回收. 此时Application Master会向Applications Manager申请资源, 重新将这个任务分配给这个NodeManager , 循环往复, 直到任务执行成功.