首先先从Yarn 开始讲起,Yarn 是Hadoop架构的资源管理器 ,可以管理 mapreduce程序的资源分配 和任务调度。
Yarn 主要有ResourceManager 、NodeManage 、ApplicationMaster ,Container
ResourceMange 负责管理全局的资源
NodeManage(NM)负责管理单节点 的资源和监控任务 ,或者处理 ResourceMange的命令,
Applicationmaster 负责用户提交一个任务程序中的一个管理者 ,负责向RM申请 程序运行的资源 ,然后向NodeManage提交需要运行的程序。然后Container是集群资源的抽象,比如内存、CPU。
当客户端提交一个任务 ,YarnRunner 会在某个NM 创建一个AM ,然后AM 将程序运行资源复制到本地节点中。
AM 再根据程序需要运行的Task任务 ,向RM申请资源 ,然后AM将Task分配给NM,NM创建对应的容器,然后最终输出分区文件 ,在TASK运行过程中,NM会向AM汇报任务运行状态,然后AM还会根据MapTask运行的情况,提前申请 运行ReduceTask资源,然后整个程序运行完,AM关闭退出
如果有多个任务 队列,Yarn 还会有自己的资源分配器