6.capacity scheduler
1.先决条件
要使用yarn的capcitiy调度器,必须开启yarn的ACLs,否则队列ACLs设置不生效
开启yarn ACLs:
# hadoop: core-site.xml
hadoop.security.authorization=true #开启服务级别验证,否则hadoop组件的acl设置不生效
# yarn: yarn-site.xml
yarn.acl.enable=true
yarn.admin.acl=admin
2.容量调试器
2.1 特性
- 分层的队列
- 队列资源控制
每个队列的容量\app数\memory&core数.目前仅能限制内存而不能限制CPU - 队列权限控制
每个队列可以设置 Submit 和admin用户(组),只有这个些用户和组才能 提交和管理队列 - 资源共享
队列可以获得超过其容易的资源 如果一个队列容量为70%,但最大容量为100%,则在其它队列空闲的情况下可以使用100%的资源 - 多租户
可以限制单个用户和使用资源情况 如限制hive用户只能使用队列资源的20% - 动态刷新队列
可以在运行时停止\启动队列,以及重启分配队列的资源及ACL等,但不能在运行时删除队列. 当停止一个队列后,队列中已经运行的程序会继续运行,新的程序将不会提交到队列中. - 支持组映射
可以将特定的用户、组映射到某个队列中
2.2 配置
2.2.1.启用capacity
yarn-site.xml
yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
2.2.2.配置capactiy
配置队列:
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>a,b,c</value>
<description>The queues at the this level (root is the root queue).
</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.a.queues</name>
<value>a1,a2</value>
<description>The queues at the this level (root is the root queue).
</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.b.queues</name>
<value>b1,b2,b3</value>
<description>The queues at the this level (root is the root queue).
</description>
</property>
root队列下有三个子队列 a b c ,a队列又有两个子队列a1 a2 ,b队列有三个子队列b1 b2 b3
2.2.3 队列属性
k | v | note |
---|---|---|
yarn.scheduler.capacity..capacity | 队列的容量,百分比,如50%,默认容量. 各队列的默认容量加起来要等于100% | |
yarn.scheduler.capacity..maximum-capacity | 最大容量,如100%,表示队列在其它队列空闲时可以使用的最大容量(可以占用其它队列的容量)。默认其它为-1,表示不限制 | |
yarn.scheduler.capacity..minimum-user-limit-percent | 每个用户可以使用的最小资源百分比。如果设置为25,则一个用户时,最小可以使用25%,最大100%。两个用户:25% 50%,三个25% 33%。4个,25% 25%。 5个,则有一个要等待资源,剩下4个25% 25% | |
yarn.scheduler.capacity..user-limit-factor | 单个用户使用的资源因子,浮点数,默认为1,表示用户只能使用队列配置的容量的1倍。 | 如果队列容量为30%,因子为1,即使集群很闲时,单个用户也只能使用整个集群的30%。配置为3则可以使用整个集群 |
yarn.scheduler.capacity..maximum-allocation-mb | 队列中,每个container可以申请的最大内存,覆盖yarn的设置yarn.scheduler.maximum-allocation-mb | 要注意啊 |
yarn.scheduler.capacity..maximum-allocation-vcores | 同上,覆盖yarn.scheduler.maximum-allocation-vcores | 要注意啊 |
yarn.scheduler.capacity..user-settings..weight | 用户可以使用的资源权限。有abc三个用户,权限默认为1,如果a设置为1.5,那么a可以使用的资源是bc的1.5 | 结合上面第二个参数来看 |
2.2.4 队列中可执行和等的任务数设置
| k | v | note |
| ------------ | ------------ | ------------ |
|yarn.scheduler.capacity.maximum-applications / yarn.scheduler.capacity..maximum-applications |队列允许提交和等待的任务数,默认是10000.同时提交和执行的任务总数超过这个后,新提交的任务会被拒绝。前面的设置所有的队列,后面的设置特定队列 | |
|yarn.scheduler.capacity.maximum-am-resource-percent / yarn.scheduler.capacity..maximum-am-resource-percent |appmaster可以使用的集群资源百分比,默认0.1,当有大量小任务时可以改大一点 | |
2.2.5 队列管理和权限
k | v | note |
---|---|---|
yarn.scheduler.capacity..state | 队列的状态,可以是RUNNING或者STOPPED。如果状态是STOPPED的,那么应用不能提交到该队列及其子队列。当队列被改为STOPPED后,会等待其中运行的任务结束再关闭 | 父队列STOPPED了子队列也不能用了 |
yarn.scheduler.capacity.root..acl_submit_applications | 哪些用户和组有权限提交任务到队列中。子队列会继承父队列的权限。 | 在父队列有权限的话,就能在子队列提交任务 |
yarn.scheduler.capacity.root..acl_administer_queue | 同上,这个是管理队列的,了队列也会继续父队列权限 |
用户格式:* 表示任何用户。 user1,user2 group2,group2
2.2.6 用户和组映射到队列中
设置用户和组提交到什么队列
| k | v | note |
| ------------ | ------------ | ------------ |
|yarn.scheduler.capacity.queue-mappings |用户组与队列的映射关系,格式为[u or g]:[name]:[queue_name][,next_mapping]*。如果用户名与队列名一致时,可以使用user%代替。当用户的组与队列各一致时,可以使用%primary_group | |
|yarn.scheduler.capacity.queue-mappings-override.enable |客户端是否可以修改组映射关系,默认是false | |
示例:
<property>
<name>yarn.scheduler.capacity.queue-mappings</name>
<value>u:user1:queue1,g:group1:queue2,u:%user:%user,u:user2:%primary_group</value>
<description>
Here, <user1> is mapped to <queue1>, <group1> is mapped to <queue2>,
maps users to queues with the same name as user, <user2> is mapped
to queue name same as <primary group> respectively. The mappings will be
evaluated from left to right, and the first valid mapping will be used.
</description>
</property>
2.2.6 应用程序的队列生命周期
k | v | note |
---|---|---|
yarn.scheduler.capacity..maximum-application-lifetime | 应用程序提交到队列后允许在队列内的时间,单位是秒,设置小于等于0禁用此功能。超过这个时间将被kill掉。客户端设置的参数装会被服务端覆盖。注意不能设置的过。对sprak streaming这种错误也有影响吧。该参数只在队列有效 | |
yarn.scheduler.capacity.root..default-application-lifetime | 默认值,要小于上面的最大值,也是只对子叶节点有效 |
3.设置队列优先级
略
4.刷新队列
$ vi $HADOOP_CONF_DIR/capacity-scheduler.xml
$ $HADOOP_YARN_HOME/bin/yarn rmadmin -refreshQueues
6.capacity scheduler的更多相关文章
- Hadoop Capacity Scheduler源码实现剖析
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/09/13/had ...
- Capacity Scheduler 队列设置
先附一个官网地址 Capacity Scheduler是YARN中默认的资源调度器. 相关参数配置: 资源分配相关参数 ``` (1) capacity:队列的资源容量(百分比). 当系统非常繁忙时, ...
- MapReduce多用户任务调度器——容量调度器(Capacity Scheduler)原理和源码研究
前言:为了研究需要,将Capacity Scheduler和Fair Scheduler的原理和代码进行学习,用两篇文章作为记录.如有理解错误之处,欢迎批评指正. 容量调度器(Capacity Sch ...
- 利用yarn capacity scheduler在EMR集群上实现大集群的多租户的集群资源隔离和quota限制
转自:https://m.aliyun.com/yunqi/articles/79700 背景 使用过hadoop的人基本都会考虑集群里面资源的调度和优先级的问题,假设你现在所在的公司有一个大hado ...
- <Yarn> <Capacity Scheduler> <Source Code>
Yarn capacity scheduler 首先要知道, [Attention: RM有两个组件,其中Scheduler完全就只是负责资源的分配:ApplicationsManager则负责接受a ...
- YARN的Fair Scheduler和Capacity Scheduler
关于Scheduler YARN有四种调度机制:Fair Schedule,Capacity Schedule,FIFO以及Priority: 其中Fair Scheduler是资源池机制,进入到里面 ...
- 二 Capacity Scheduler 计算能力调度器
官网的写的太难懂,参考:http://www.360doc.com/content/14/0603/14/14935022_383254798.shtml Capacity Scheduler 一种可 ...
- Hadoop的三种调度器FIFO、Capacity Scheduler、Fair Scheduler(转载)
目前Hadoop有三种比较流行的资源调度器:FIFO .Capacity Scheduler.Fair Scheduler.目前Hadoop2.7默认使用的是Capacity Scheduler容量调 ...
- YARN资源调度策略之Capacity Scheduler
背景 yarn默认使用的是最简单的FIFO调度器,即一个default队列,所有用户共享,分配资源也是先到先得,没有优先级之分.有时一两个任务就把资源全占了,其他任务吃不到资源造成饥饿,显然这样的资源 ...
随机推荐
- 代码中会话同步(同步redis)导致的异常问题
背景: 第一天拷贝了一份tomcat(配置了redis会话同步),部署了erp-rocketmq应用(用作给顾客发送消息). 第二天早晨,整个erp系统出现异常情况: 1> ...
- linux 修改时间永久
date -s "20190421 16:36:20" &&hwclock --systohc
- 通过ReentrantLock简单了解下并发包中的锁
ReentrantLock在进行实例化时,可以通过构造函数的参数选择是否使用公平锁FairSync或者非公平锁NonfairSync,两者的区别比较简单,如果是公平锁则新来的线程会先检测同步队列中是否 ...
- 利用Dropbox中转自己的C2
利用Dropbox中转自己的C2 0x00 前言 本来的目的呢,是利用dropbox中转自己的c2达到免杀的效果,然后可能是看了文章太久没抓住机会复现,到最后发现已经失效了,会被360拦截,所以好像也 ...
- 20145234黄斐《Java程序设计》第十周
网络编程 网络概述 概述 网络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用. 计算机网络概述 IP地址: 为了能够 ...
- WPF设置全局字体和字体嵌入
原文:WPF设置全局字体和字体嵌入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CLeopard/article/details/40590373 ...
- CF 1138 E. Museums Tour
E. Museums Tour 链接 分析: 按时间建出分层图,每个点形如(u,t),表示u在在t个时刻的点,tarjan缩点.每个强连通分量中的点都能经过,然后DAG上dp. 代码: #includ ...
- vue中使用定时器时this指向问题
在写一个很小的demo时,用的普通函数写法,没有用es6箭头函数,发现this变化了,后来查找到了问题所在: 箭头函数中的this指向是固定不变(定义函数时的指向),在vue中指向vue 普通函数中的 ...
- BZOJ 2818 GCD 素数筛+欧拉函数+前缀和
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...
- sprinboot之mongodb
一.MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当 ...