0%

Yarn

Yarn

Yarn是Hadoop的资源调度部分,作用主要是进行资源调度,相当于一个分布式的操作系统平台,MapReduce相当于运行在操作系统的应用程序,所以内部存在了一个ResourceManager(RM)来进行资源的管理

结构

ResourceManager(RM)

主要是用来进行处理客户端请求、监控NodeManager、启动或监控ApplicationMaster、资源的分配与调度

资源调度器

在yarn-site.xml中

1
2
3
4
5
<!-- 资源调度器配置 有三种FIFO、CapacityScheduler和FairScheduler 默认CapacityScheduler-->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
FIFO调度器(先进先出调度器)

按照到达时间排序,先到先服务

CapacityScheduler调度器(容量调度器))

按照到达时间排序,先到先服务

  • 支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略
  • 为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定
  • 计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列——最闲的
  • 按照作业优先级和提交时间顺序,同时考虑用户资源量限制和内存限制对队列内任务排序
FairScheduler(公平调度器)

按照缺额排序,缺额大者优先

支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源,每个队列中的job按照优先级分配资源,优先级越高分配的资源越多

在资源有限的情况下,每个job理想情况下获得的计算资源与实际获得的计算资源存在一种差距,这个差距就叫做缺额,在同一个队列中,job的资源缺额越大,越先获得资源优先执行

NodeManager(NM)

管理节点,主要作用是管理单个节点上的资源、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令

ApplicationMaster(AM)

管理Job,主要作用是负责数据的切分、为应用程序申请资源并分配给内部的任务、任务的监控与容错

Container

是Yarn中资源抽象,封装了某个节点上的多维度资源,如内存、CPU/磁盘、网络等