| | | |
| | | |
| 是否支持多队列的资源管理,支持队列的树状结构以及子队列 | 支持 都可以配置多个父队列,每个父队列下多个子队列 同一个父队列下的子队列资源分配值加起来可以不等于父队列,这样有利于提高父队列的资源利用率。但是实际使用最大小值会受父类的限制。 | 支持 都可以配置多个父队列,每个父队列下多个子队列 同一个父队列下的同一级别的子队列Capacity之和必须为100,比较麻烦。 |
| | 支持 可以配置队列的最小资源,旧的格式支持固定值,新的配置格式支持百分比;vcores = X,memory-mb = Y”或“ vcores = X%,memory-mb = Y%。 同一级别的容量之和加起来可以超过100% 分配文件必须为XML格式
<queue name =“ root”> <minResources> 10000 mb,0vcores </ minResources> <maxResources> 90000 mb,0vcores </ maxResources> <maxRunningApps> 50 </ maxRunningApps> <maxAMShare> 0.1 </ maxAMShare> <weight> 2.0 </ weight>
| 支持, 默认配置百分比值或者小数 同一级别队列的容量总和必须100或者100% 比如30,表示占父队列的资源总和的30%。 尖叫提示: 不管是Fair Scheduler和Capacity Scheduler,如果当前队列没有任务提交时,是不会分配最小资源的,这个时候不保障最小资源,都是0。 如果该队列有任务提交时,需要等待当前集群释放资源时,才会分配满足最小资源的保证。也就说只有有任务跑时才会满足最小资源。 注意:当一个队列多个用户提交使用时,只保证整个队列的最小资源使用,不保证每个用户是否能有最小资源保证 默认资源分配都是以内存为调度单位的,但都支持CPU+内存 |
| | 支持 配置格式同上,最小资源保障的配置。 尖叫提示:不管是Fair Scheduler和Capacity Scheduler队列的最大资源限制是队列可以使用的资源最大值,无论如何都不会超过这个值。 同样,如果父队列有最大值的限制,则子队列使用的资源总和不会超过父队列的最大值。也说明了每个用户的最大资源使用是有限制的。 | 支持, 默认配置百分比值或者小数 同一级别队列的容量总和必须100或者100% 比如30,表示占父队列的资源总和的30%。 |
| | 支持 当集群中有队列资源空闲时,其他供其他队列抢占使用,这是FS的重要特质 | 支持 当集群中有队列资源空闲时,其他供其他队列抢占使用,CP的抢占管理更加精细化,相比配置也更加麻烦。 |
| | 支持 默认是基于内存的Fair share,也支持FIFO,以及多资源调度策略 | |
| | 不支持 尖叫提示: Capacity Scheduler支持限制队列中每个用户可以使用多少资源。这样可以避免一个用户接管集群中的所有资源。 | 支持 可以通过配置参数,限制单个用户使用队列最大资源的百分比,防止单个用户独占整个队列资源 |
| | 支持 Fair Schedule的负载均衡机制会将集群中的任务尽可能的分配到各个节点上 | |
| | | |
| | 支持 FS的抢占比较简单,直接计算权重比,所以可以任意配置整数权重值。 | |
| | | 支持
尖叫提示:均可以设置队列的使用提交人员ACL,但一个用户可以配置使用多个队列 |
| 限制队列或集群的最大并发Appplication的个数 | | 支持 yarn.scheduler.capacity.root.yarn_mobdi_prd.maximum-applications 尖叫提示:区别是Fair Scheduler调度,超出最大并发数比如40后,其他任务处理等待状态;而Capacity Scheduler超出后任务直,拒绝申请,抛出异常超出最大application的限制 |
| 限制基于用户的最大并发Appplication的个数 | | |
| | | 支持 尖叫提示:这个限制的好处是防止集群中运行了很多APPMaster,也就是初始化了很多任务,因为本质上APPMaster就是一个container。进而没有资源给真正的计算任务运行,造成大量任务处于饥饿状态。 |
| | | 支持 尖叫提示:刷新资源配置文件后,如增加队列,调整资源分配,比重,无需重启,一般10s后自动加载生效 |
| | | 支持 尖叫提示:Node Label节点分区是一种基于硬件/用途将大型群集划分为几个较小的群集的方法。容量和ACL可以添加到分区。 |
| | | 支持 yarn.resourcemanager.auto-update.containers默认值是false,应用程序可以根据工作负载的变化来更新其正在运行的容器的大小。不会杀死任务。 尖叫提示:敲黑板!单个container使用的最大资源不会超过机器分配NM的最大值 |
| | 支持,FS内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则YARN会将其大小改为最小可申请量;如果应用程序申请的资源量大于最大可申请资源量,则会抛出异常,无法申请成功;yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores 比如:YARN的container最小资源内存量为3G,规整因子是512Mb,如果一个应用程序申请3.2G内存,则会得到3.5内存。 | 不支持, 动态规划因子。比如:YARN的container最小资源内存量为3G,规整因子是512Mb,如果一个应用程序申请3.5G内存,则会得到6G内存。Fair Scheduler的资源增加是最小资源的整数倍。相比FS更加可以提高资源的利用率。 |
| | Fair Scheduler使用嵌套的xml配置来模仿队列的层次结构,比传统的Hadoop风格的配置更加直观 | 通过.的形式配置a.b.c 尖叫提示:相比后者,Fair Scheduler使用的配置更加方便,直观,好吧就是简单。 |
| | 支持 数据本地计算策略的百分比 yarn.scheduler.fair.locality.threshold.node yarn.scheduler.fair.locality.threshold.rack 默认值是-1,0表示不放弃任何调度机会。正常值配置在0-1之间。 | 支持 Capacity Scheduler利用“延迟调度”来遵守任务局部性约束。有3个级别的位置限制:节点本地,机架本地和关闭交换机。当无法满足地点要求时,调度程序会计算错过的机会的数量,并等待此计数达到阈值,然后再将地点约束放宽到下一个级别 尖叫提示:这个对于任务本地化的控制有用,尤其对于带宽紧张的集群。 |