YARN (主从) 资源+作业调度管理
Yarn:一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享方面带来了巨大的好处。
ResourceManager(RM):主要接收客户端任务请求,接收和监控NM的资源情况汇报,负责资源的分配与调度,启动和监控ApplicationMaster(AM)
ApplicationManager(作业):应用程序管理,他负责系统中所有的job,包括job的提交与调度器协商资源来启动ApplicationMaster(AM)和监控AM的运行状态,并且失败的时候能够重新启动它,更新分配一个新的Container容器的进度或者状态,除了资源它不管,它就负责job
Scheduler(调度器): 分配计算资源给应用程序的策略
yarn的内置调度器:
1.FIFO调度器,先进先出,适合任务量不多的低负载集群
谁先提交,谁先完成。1和2都提交,2要等1跑完了,才能运行。
2.计算调度 capacity scheduler
给不同队列(用户或用户组)分配一个预期最小容量,在每个队列内部用层次化的FIFO来调度多个应用程序。
适用于集群,引入了队列的概念,先占下一个队列的位置。1先提交,2后提交,但两个任务可以同时运行,互不干扰。
3. 公平调度 fair scheduler
针对不同的应用(可以是针对不同的用户或用户组),每个应用属于一个队列,主旨是让每个应用分配的资源大体相当。(也可以自己设置权重)。若是只有一个应用,那集群所有的资源都是它的。使用情况:共享大集群、队列之间有较大差别。(生产使用)
task任务完成后会释放资源,job1资源释放后,job2马上会使用释放后的资源,job2小任务完成资源后,1可以接着使用2释放的资源,不会造成资源浪费。
capacity调度器的启用:
在ResourceManager节点上的yarn-site.xml设置
Property===>yarn.resourcemanager.scheduler.class
Value=====>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.Cap