zoukankan      html  css  js  c++  java
  • CH4 Fair Schedule

    目的

    文档主要描述了FairScheduler,一个可拔插的调度去,允许YARN应用公平共享集群上的资源。

    概述

    公平调度是分配资源的一种方式,公平的,平均的给所有应用分配资源。下一代Hadoop,可以调度多种资源类型,默认公平调度是在内存上的。也可以配置调度cpu和内存。当只有一个app运行的时候app会使用整个集群的资源。当其他app提交,资源会被释放分配给新的app。所以每个app本质上是粗略的平均分配了资源。公平风险也可以有app优先级,优先级决定了每个app获取资源的比重。
    调度器把app放入队列,队列之间功能的分享资源,默认所有的app都会被提交到default的队列。如果app的容器特别列出队列,请求会被提交到这个队列。也可以根据用户名指定队列,可以使用配置实现。在队列中,调度策略用来在运行的app之间分配资源。默认是基于内存公平的。FIFO和多类型资源也可以通过配置Dominant Resource Fairness实现。队列可以是分成的来分割资源并且配置权重来共享资源。
    另外,公平调度器可以配置最低共享资源。用来保证必要的资源。当队列包含app,就会分配最小共享资源。但是当队列不需要完全保证共享,那么多余的部分会被分配到其他app。特别是队列没有app时,可以用来提高资源的利用率。
    默认所有的app在default中运行。但是可以限制运行app数量

    可拔插策略的分层队列

    公平调度器支持分层队列。所有的队列都是root队列的子队列。可用资源以公平的方式分配给下面的子队列。子队列也以一样公平的方式分配给他们的子队列。app只能被提交在叶队列。app以队列的子元素的方式配置在队列下面。
    队列以父队列名字开头,如root.parent1.queue2
    每个队列都可以自己的公平调度策略。

    自动提交应用到队列

    公平调度器允许管理员配置自动提交到队列。可以根据用户,组,策略是由一条条的规则组成,如果满足就分配到这个队列中,如果不满足就下一条规则。

    安装

    公平调度器在yarn-site.xml中设置

    <property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    </property>
    
    配置

    公平调度器通常需要修改2个文件。1.调度器的配置在yarn-site.xml 2.用户会创建一个分配文件列出了队列,权重和容量。分配文件每10秒会重新加载一次。

    Yarn-site.xml的属性
    属性
    yarn.scheduler.fair.allocation.file 分配文件路径,默认是fair-scheduler.xml
    yarn.scheduler.fair.user-as-default-queue 用户是否被放入默认队列,false不设置,所有的job都有一个共享队列default,默认为true。如果队列有策略配置会忽略
    yarn.scheduler.fair.preemption 是否使用抢占式,默认false
    yarn.scheduler.fair.preemption.cluster-utilization-threshold 开启抢占式的资源利用率阈值
    yarn.scheduler.fair.sizebasedweight 是否根据app大小开分配
    yarn.scheduler.fair.assignmultiple 是否允许多个容器被分配在一个心跳中
    yarn.scheduler.fair.dynamic.max.assign 如果上面为true,是否允许动态的在一个心跳上分配资源
    yarn.scheduler.fair.max.assign 如果assignmultiple为true,dynamic.max.assign为false最大的容器可以配分配在一个心跳中
    yarn.scheduler.fair.locality.threshold.node 对于app调度机会超过阈值被分配到其他node
    yarn.scheduler.fair.locality.threshold.rack 调度超过阈值被分配到其他rack
    yarn.scheduler.fair.allow-undeclared-pools 新队列可以在应用提交的时候创建,或者通过应用提交者提交或者通过用户定义队列属性指定
    yarn.scheduler.fair.update-interval-ms 锁定调度器并重新计算公平共享的时间间隔
    yarn.resource-types.memory-mb.increment-allocation 内存的增加值
    yarn.resource-types.vcores.increment-allocation core增加值
    yarn.resource-types..increment-allocation 增加值
    yarn.scheduler.increment-allocation-mb 内存分配的增加值
    yarn.scheduler.increment-allocation-vcores core分配的增加值
    分配文件格式

    分配文件是xml格式的,有5个主要的元素

    1. Queue元素:表示队列。队列元素可以获取可选的类型,如果为parent则为父队列。可以指定父队列,不需要配置页队列。每个队列元素可以包含以下元素:
      1. minResources:最小资源
      2. maxResources: 最大资源
      3. maxContainerAllocation:队列中单个容器最大的资源
      4. maxChildResources:子队列的最大资源
      5. maxRunningApps:每个队列一次性可运行的app数
      6. maxAMShare:允许运行application masters的资源限制。
      7. weight:权重
      8. schedulingPolicy:设置调度策略
      9. aclSubmitApps:可以在这个队列提交的用户和组列表
      10. aclAdministerApps:可以管理队列的用户和组列表
      11. minSharePreemptionTimeout:在最小共享之前几秒开始抢占其他队列的资源
      12. fairSharePreemptionTimeout:在公平共享的阈值之前几秒进入抢占模式。
      13. fairSharePreemptionThreshold:公平共享抢占阈值。
      14. allowPreemptionFrom:决定调度器是否允许从队列抢占资源。
      15. reservation:指定ReservationSystem,队列资源允许用户保留
    2. User元素:对于每个用户的管理。
    3. A userMaxAppsDefault element:userMaxApps的默认值。
    4. A defaultFairSharePreemptionTimeout element
    5. A defaultMinSharePreemptionTimeout element
    6. A defaultFairSharePreemptionThreshold element
    7. A queueMaxAppsDefault element
    8. A queueMaxResourcesDefault element
    9. A queueMaxAMShareDefault element
    10. A defaultQueueSchedulingPolicy element
    11. A reservation-agent element:ReservationAgent的类名默认为:org.apache.hadoop.yarn.server.resourcemanager.reservation.planning.AlignedPlannerWithGreedy.
    12. A reservation-policy element:SharingPolicy类名
    13. A reservation-planner element:Planner的类名
    14. A queuePlacementPolicy element:队列放置策略
    队列访问控制列表

    队列的管理控制谁能在特定的队列操作。

    保留访问控制列表

    保留控制权限列表允许管理员控制谁能保留。

    配置ReservationSystem

    公平调度器支持ReservationSystem允许用户预先保留。可通过reservationid保留资源。

    属性
    yarn.resourcemanager.reservation-system.enable 启动ReservationSystem
    yarn.resourcemanager.reservation-system.class ReservationSystem类名
    yarn.resourcemanager.reservation-system.plan.follower PlanFollower类名,在定时器上运行
    FairSchedulerPlanFollower.yarn.resourcemanager.reservation-system.planfollower.time-step 定时器的时间
    管理

    公平调度器支持在运行是修改配置

    运行时修改配置

    通过修改配置文件可以修改,然后调度器10-15秒会重新加载

    通过WebUI监控

    http://ResourceManager URL/cluster/scheduler.访问

    在队列之间移动app

    公平调度器支持在队列之间移动app。移动之后已分配的资源会被计算到新的队列中。如果超过最大并发app个数就会失败

    dump Fair Scheduler状态

    公平调度器可以定时dump。默认是关闭的。管理员可以修改启动,把.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler设置为DEBUG
    公平调度器日志被记录在Resources Manager日志文件中。

  • 相关阅读:
    codna的安装与使用
    ubuntu 下修改MySQL 的root用户密码
    python中的排序
    CF 543C Remembering Strings
    CF 1119C Ramesses and Corner Inversion
    HihoCoder 1384 Genius ACM
    BZOJ3032 七夕祭
    Vjudge Code
    CF51C Three Base Stations
    Sumdiv POJ 1845
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/14943653.html
Copyright © 2011-2022 走看看