Yarn组成架构

ResourceManager:全局资源管理器。
·
ApplicationMaster:就是一个java程序,类名叫MRAppMaster,所以进程名叫做MRAppMaster。负责监控Map任务和Reduce任务,client提交的
每个mr程序都会产生一个MRAppMaster,负责整个程序的管理。

NodeManager:单个节点上的资源管理器。

Container(资源池):节点上的资源抽象,封装了多维度资源,如内存、CPU、磁盘、网络等,与虚拟机原理一致。

Job提交的处理流程

1)Client向ResourceManage发出job提交请求,ResourceManage返回hdfs上的提交临时路径。

2)Client把应用程序的jar包、切片信息、配置信息提交成功后,向ResourceManage申请执行ApplicationMaster。

3)ResourceManager把job请求放到执行队列里。当执行到job请求时并且yarn集群中存在空闲的节点,job请求就会被对应的NodeManager领取,NodeManager分配资源池执行ApplicationMaster。

4)ApplicationMaster到hdfs上的临时目录中读取客户端提交的信息,根据信息向ResourceManager提交执行请求,ResourceManager把请求分发给集群中的NodeManager,NodeManager分配执行所需要的资源池。

5)ApplicationMaster先启动MapTask,执行完再启动ReduceTask。

6)ReduceTask结束后,ResourceManager结束ApplicationMaster进程。释放执行此job需要的所有资源。

yarn 提交任务个数参数 yarn的job提交流程_yarn 提交任务个数参数

Yarn的3种资源调度器

1.FIFO:只有一个队列,先来先服务,同一时间只能执行一个任务。
2.容量调度器:多队列,每个队列当中,同一时间只能有一个任务执行。并发度=队列数。
3.公平调度器:多队列,每个队列中,同一时间有多个任务执行。执行原则:缺额越大,越先执行。并发度>=队列数。
每个队列中的job按照优先级分配资源,优先级越高分配的资源越多,但是每个job都会分配到资源以确保公平。在资源有限的情况下,每个job理想情况下获得的计算资源与实际获得的计算资源存在一种差距,这个差距就叫做缺额。在同一个队列中,job的资源缺额越大,越先获得资源优先执行。