一、概述
1. 产生原因:
a. 内因:Hadoop1.0中,JobTracker既要负责任务调度和监控还要负责集群的资源管理,任务比较多,就导致任务量增多的时候效率成倍下降甚至崩溃、
b. 外因:随着Hadoop以及分布式的发展,产生了越来越多的计算框架,这些框架之间的资源分配容易产生冲突,所以需要提供一套统一的资源分配的框架
2. YARN - Yet Another Resource Negotiator— 迄今另一个资源调度器
3. Yarn负责资源管理和任务调度
a. ResourceManager:资源管理
b. ApplicationMaster:任务管理
c. NodeManager:执行任务
二、Job的执行流程
1. 客户端将Job提交给ResourceManager
2. ResourceManager在收到Job任务之后会等待NodeManager的心跳
3. 在ResourceManager收到NodeManager的心跳之后会将Job交给这个NodeManager,同时在这个NodeManager上开启一个ApplicationMaster,将Job分配给这个ApplicationMaster - 在Yarn中,每一个Job任务会对应一个单独的ApplicationMaster
4. ApplicationMaster收到Job之后会对这个Job进行划分,划分好之后会向ResourceManager请求执行资源。请求的资源数量要考虑副本数量。例如,如果一个任务划分成5个MapTask以及2个ReduceTask,那么默认情况下在申请资源的时候会申请17份资源,但是注意ResourceManager会只返回7份资源<