Hadoop资源调度器

目前,Hadoop作业调度器主要有三种:FIFOCapacity SchedulerFair SchedulerHadoop3.1.3默认的资源调度器是Capacity Scheduler

具体设置详见:yarn-default.xml文件

<property>
    <description>The class to use as the resource scheduler.</description>
    <name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

1)先进先出调度器(FIFO

 2)容量调度器(Capacity Scheduler

3)公平调度器(Fair Scheduler

4)三种调度器对比

名词解释:
是否支持动态加载配置文件:2种调度器的配置文件修改后是否能够动态生效。
 
是否支持负载均衡:fair schedler提供了一个基于任务数目的负载均衡机制,改机制尽可能将系统中的任务均匀分配到各个节点上,此外用户也可以根据自己的需要设计负载均衡策略。
 
是否支持资源抢占:每个队列可以设置一个最小资源量和最大资源量。为了提高资源利用率,资源调度器会将负载较轻的队列的资源暂时分配给负载较重的队列,仅当负载较轻的队列突然收到需要资源请求时,调度器才进一步将本属于该队列的资源分配给他,因为这个时候资源可能正在被别的队列使用,所以调度器要等那个队列释放资源释放资源才能将资源归还,这通常需要一段不确定的等待时间,为了防止应用程序等待时间太长,调度器等待一段时间后,发现资源并为得到释放,则进行资源抢占。
 
fifo:按照优先级高低调度,如果优先级相同,则按照提交时间先后顺序调度,如果提交时间也相同,则按照(队列或者应用程序)名称大小(字符串比较)调度。
 
fair:按照内存资源使用量比率调度,即按照used_memory/minshare大小调度(核心思想是按照该调度算法决定调度顺序。)如果一个队列中有2个应用程序同时运行,则每个得到1/2的资源,如果是3个则是1/3.
 
drf:按照主资源公平调度算法进行调度,drf被证明非常适合应用于多资源和复杂需求的环境中,因此被越来越多的系统采用,包括apache mesos。在drf算法中,将所需份额(资源比例)最大的资源成为主资源,而drf的基本设计思想则是将最大最小公平算法应用于主资源上。即drf总是最大化所有主资源中最小的。
假设系统中共有9个cpu和18gb ram,有2个用户分别运行了2种任务,分别需要的资源量为a:<1cpu,4gb>,b:<3cpu,1gb>对于用户a,每个任务要消耗总cpu的1/9和总内存的2.9,a的主资源为内存;b的主资源为cpu。
所以最终a的资源分配为:<3cpu,12gb>可以运行3个任务,b的资源分配为<6cpu,2gb>可运行2个任务。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值