纱资源调度策略调度器之能力

  

,,,,

背景

纱默认使用的是最简单的FIFO调度器,即一个默认队列,所有用户共享,分配资源也是先到先得,没有优先级之分。有时一两个任务就把资源全占了,其他任务吃不到资源造成饥饿,显然这样的资源分配是不合理的(在当今社会主义之中,我们要共同富裕啊).yarn还有两种资源调度器,产能计划和公平的安排,本文主要研究下容量计划。

什么是容量计划

能力计划调度器以队列为单位划分资源。简单通俗点来说,就是一个个队列有独立的资源,队列的结构和资源是可以进行配置的,如下图:
纱资源调度策略之能力调度器”> </p> <p>默认队列占30%资源,分析师和dev分别占40%和30%资源;类似的,分析师和开发各有两个子队列,子队列在父队列的基础上再分配资源。</p> <p>队列以分层方式组织资源,设计了多层级别的资源限制条件以更好的让多用户共享一个Hadoop集群,比如队列资源限制,用户资源限制,用户应用程序数目限制。队列里的应用以FIFO方式调度,每个队列可设定一定比例的资源最低保证和使用上限,同时,每个用户也可以设定一定的资源使用上限以防止资源滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。</p> <h3>特性</h3> <p>能力调度器具有以下的几个特性:<br/>●层次化的队列设计,这种层次化的队列设计保证了子队列可以使用父队列设置的全部资源。这样通过层次化的管理,更容易合理分配和限制资源的使用。<br/>●容量保证,队列上都会设置一个资源的占比,这样可以保证每个队列都不会占用整个集群的资源。<br/>●安全,每个队列又严格的访问控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其他队列的任务。<br/>●弹性分配,空闲的资源可以被分配给任何队列。当多个队列出现争用的时候,则会按照比例进行平衡。<br/>●多租户租用,通过队列的容量限制,多个用户就可以共享同一个集群,同时保证每个队列分配到自己的容量,提高利用率。<br/>●操作性,纱支持动态修改调整容量,权限等的分配,可以在运行时直接修改。还提供给管理员界面,来显示当前的队列状况。管理员可以在运行时,添加一个队列;但是不能删除一个队列。管理员还可以在运行时暂停某个队列,这样可以保证当前的队列在执行过程中,集群不会接收其他的任务。如果一个队列被设置成了停了下来,那么就不能向他或者子队列上提交任务了。<br/>●基于资源的调度,协调不同资源需求的应用程序,比如内存,CPU、磁盘等等。</p> <h3>配置</h3> <h4>开启调度器</h4> <p>在ResourceManager中配置它要使用的调度器,配置方式是修改conf/yarn-site。xml,设置属性:</p> <pre类= & lt; property>   ,,,& lt; name> yarn.resourcemanager.scheduler.class,,,   ,,,& lt; value> org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler & lt;/property>

配置队列

调度器的核心就是队列的分配和使用了,修改conf/capacity-scheduler。xml可以配置队列。
能力调度器默认有一个预定义的队列根,所有的队列都是它的子队列。队列的分配支持层次化的配置,使用。来进行分割,比如yarn.scheduler.capacity。<代码> & lt; queue-path>>

下面是配置的样例,比如根下面有三个子队列:

& lt; property>   & lt;才能name> yarn.scheduler.capacity.root.queues</name>   & lt;才能value> a, b, c   & lt;才能description>从而queues  at 从而却;能够level  (root  is 从而root 队列)。   & lt;才能/description> & lt;/property> & lt; property>   & lt;才能name> yarn.scheduler.capacity.root.a.queues</name>   & lt;才能value> a1, a2   & lt;才能description>从而queues  at 从而却;能够level  (root  is 从而root 队列)。   & lt;才能/description> & lt;/property> & lt; property>   & lt;才能name> yarn.scheduler.capacity.root.b.queues</name>   & lt;才能value> b1, b2, b3   & lt;才能description>从而queues  at 从而却;能够level  (root  is 从而root 队列)。   & lt;才能/description> & lt;/property>

队列属性

 yarn.scheduler.capacity灵活;queue-path>。能力

它是队列的资源容量占比(百分比)。系统繁忙时,每个队列都应该得到设置的量的资源,当系统空闲时,该队列的资源则可以被其他的队列使用。同一层的所有队列加起来必须是100%。

纱资源调度策略调度器之能力