学校机构网站建设内容,怎么设计logo用什么软件,洛阳作公司网站,关联词有哪些关系一、Yarn有哪些调度器
在cdh中Yarn组件中查看配置如下#xff1a; 可以看到Yarn有三种调度器#xff0c;分别是FairScheduler、FifoScheduler、CapacityScheduler#xff0c;它们都是Hadoop的一个可插入调度器。
cdh默认的调度器是FairScheduler#xff0c;hadoop默认的调… 一、Yarn有哪些调度器
在cdh中Yarn组件中查看配置如下 可以看到Yarn有三种调度器分别是FairScheduler、FifoScheduler、CapacityScheduler它们都是Hadoop的一个可插入调度器。
cdh默认的调度器是FairSchedulerhadoop默认的调度器是CapacitySchedulerHadoop-Yarn-启动篇 中有源码提到过
此时会感觉FifoScheduler有些孤立Hadoop官网也只有FairScheduler和CapacityScheduler的调度器说明说明FifoScheduler调度器并不被推荐使用到生产环境 FifoScheduler是最简单也是最容易理解的调度器也不需要任何配置见名知意 first input first output 是一个先进先出队列在进行资源分配的时候按照队列中的应用顺序依次分配资源。如果要使用FifoScheduler在yarn-site.xml文件中修改成如下即可 property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler/value /property 二、官方对调度器的说明
1、CapacityScheduler
概述 CapacityScheduler旨在允许共享一个大型集群同时为每个组织提供容量保证。核心思想是Hadoop集群中的可用资源在多个组织之间共享这些组织根据其计算需求共同为集群提供资金。还有一个额外的好处即一个组织可以访问其他组织未使用的任何多余容量。这以成本效益高的方式为各组织提供了弹性。 跨组织共享集群需要对多租户提供强有力的支持因为每个组织都必须有保证的容量和安全保护以确保共享集群不受单个恶意应用程序或用户或其集合的影响。CapacityScheduler提供了一组严格的限制以确保单个应用程序、用户或队列不会消耗集群中不成比例的资源。此外CapacityScheduler对来自单个用户和队列的初始化和挂起的应用程序提供了限制以确保集群的公平性和稳定性。 CapacityScheduler提供的主要抽象是队列的概念。这些队列通常由管理员设置以反映共享集群的经济性。 为了提供对资源共享的进一步控制和可预测性CapacityScheduler支持分层队列以确保在允许其他队列使用空闲资源之前在组织的子队列之间共享资源从而提供在给定组织的应用程序之间共享空闲资源的亲和力。
特征
CapacityScheduler支持以下功能
Hierarchical Queues 队列分层
支持队列层次结构以确保在允许其他队列使用空闲资源之前在组织的子队列之间共享资源从而提供更多的控制和可预测性。
Capacity Guarantees 容量保证
队列被分配为网格容量的一小部分队列自己支配一定容量的资源。提交到队列的所有应用程序都可以访问分配给队列的容量。管理员可以对分配给每个队列的容量配置软限制和可选的硬限制。
Security 安全
每个队列都有严格的ACL用于控制哪些用户可以向各个队列提交应用程序。此外还提供了安全保护以确保用户无法查看和/或修改其他用户的应用程序。
Elasticity 弹性
空闲资源可以分配给超出其容量的任何队列。当在未来某个时间点运行低于容量的队列对这些资源有需求时随着在这些资源上调度的任务完成这些资源将分配给运行低于容量队列上的应用程序也支持抢占。这确保了资源以可预测和弹性的方式可用于队列从而防止集群中人为的资源孤岛。
Multi-tenancy 多租户技术
提供了一组全面的限制以防止单个应用程序、用户和队列独占队列或整个集群的资源从而确保集群不会不堪重负。
Operability 可操作性
Runtime Configuration 运行时配置
管理员可以在运行时以安全的方式更改队列定义和属性如容量、ACL以最大限度地减少对用户的干扰。此外还为用户和管理员提供了一个控制台用于查看系统中各种队列的当前资源分配情况。管理员可以在运行时添加其他队列但除非队列已停止并且没有挂起/正在运行的应用程序否则无法在运行时删除队列。
Drain applications 排出应用
管理员可以在运行时停止队列以确保在现有应用程序运行到完成时不会提交新的应用程序。如果队列处于STOPPED状态则无法向其自身或其任何子队列提交新的应用程序。现有的应用程序继续完成因此队列可以正常地排出。管理员还可以启动停止的队列。
Resource-based Scheduling 基于资源的调度
支持资源密集型应用程序其中应用程序可以选择指定比默认值更高的资源需求从而适应具有不同资源需求的应用程序。目前内存是支持的资源需求。
Queue Mapping Interface based on Default or User Defined Placement Rules 基于默认或用户定义的放置规则的队列映射接口
此功能允许用户根据某些默认放置规则将作业映射到特定队列。例如基于用户和组或应用程序名称。用户还可以定义自己的放置规则。
Priority Scheduling 优先级调度
此功能允许以不同的优先级提交和安排应用程序。整数值越高表示应用程序的优先级越高。目前应用程序优先级仅支持FIFO排序策略。
Absolute Resource Configuration 绝对资源配置
管理员可以为队列指定绝对资源而不是提供基于百分比的值。这为管理员配置给定队列所需的资源量提供了更好的控制。
Dynamic Auto-Creation and Management of Leaf Queues 叶队列的动态自动创建和管理
此功能支持与队列映射一起自动创建叶队列队列映射当前支持应用程序放置到队列的基于用户组的队列映射。调度程序还支持基于在父队列上配置的策略对这些队列进行容量管理。
配置
设置ResourceManager使用CapacityScheduler
Hadoop的默认配置在yarn-site.xml为 property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler/value /property 设置队列
etc/hadoop/capacity-scheduler.xml 是CapacityScheduler的配置文件
CapacityScheduler有一个名为root的预定义队列。系统中的所有队列都是root队列的子队列。
可以通过使用逗号分隔的子队列列表配置yarn.scheduler.ccapacity.roots.queues来设置更多的队列。
CapacityScheduler的配置使用一个称为队列路径的概念来配置队列的层次结构。队列路径是队列层次结构的完整路径从根开始使用.点作为分隔符。
以下是一个示例其中包含三个顶级子队列a、b和c以及a和b的一些子队列 property nameyarn.scheduler.capacity.root.queues/name valuea,b,c/value /property property nameyarn.scheduler.capacity.root.a.queues/name valuea1,a2/value /property property nameyarn.scheduler.capacity.root.b.queues/name valueb1,b2,b3/value /property 队列属性 资源分配 yarn.scheduler.capacity.queue-path.capacity yarn.scheduler.capacity.queue-path.maximum-capacity yarn.scheduler.capacity.queue-path.minimum-user-limit-percent yarn.scheduler.capacity.queue-path.user-limit-factor yarn.scheduler.capacity.queue-path.maximum-allocation-mb yarn.scheduler.capacity.queue-path.maximum-allocation-vcores yarn.scheduler.capacity.queue-path.user-settings.user-name.weight 使用绝对资源配置的资源分配 CapacityScheduler支持配置绝对资源而不是以百分比形式提供队列容量。管理员可以指定一个绝对资源值如[memory10240vcores12]。这是一个有效的配置表示10GB内存和12个VCores。 正在运行和挂起的应用程序限制 CapacityScheduler支持以下参数来控制正在运行和挂起的应用程序 yarn.scheduler.capacity.maximum-applications / yarn.scheduler.capacity.queue-path.maximum-applications yarn.scheduler.capacity.maximum-am-resource-percent / yarn.scheduler.capacity.queue-path.maximum-am-resource-percent yarn.scheduler.capacity.max-parallel-apps / yarn.scheduler.capacity.queue-path.max-parallel-apps 您还可以根据每个用户限制并行应用程序的数量。 yarn.scheduler.capacity.user.max-parallel-apps yarn.scheduler.capacity.user.username.max-parallel-apps 这些限值的评估按以下顺序进行 1、最大应用程序检查-如果超过限制提交将立即被拒绝。 2、最大并行应用程序检查-接受提交但应用程序不会转换到RUNNING状态。它将保持在ACCEPTED接受状态直到满足队列/用户限制为止。 3、最大am资源百分比检查-如果运行的应用程序主机太多则应用程序将保持在ACCEPTED状态直到有足够的空间为止。 队列管理和权限 CapacityScheduler支持以下参数来管理队列 yarn.scheduler.capacity.queue-path.state yarn.scheduler.capacity.root.queue-path.acl_submit_applications yarn.scheduler.capacity.root.queue-path.acl_administer_queue 注意ACL的形式为user1user2 space group1group2。*的特殊值意味着任何人。空间的特殊价值并不意味着任何人。如果未指定则根队列的默认值为*。 基于用户或组、应用程序名称或用户定义的放置规则的队列映射 CapacityScheduler支持以下参数以根据用户或组、用户和组或应用程序名称配置队列映射。用户还可以定义自己的放置规则 yarn.scheduler.capacity.queue-mappings yarn.scheduler.queue-placement-rules.app-name yarn.scheduler.capacity.queue-mappings-override.enable 应用程序的队列生存期 CapacityScheduler支持以下应用程序寿命参数 yarn.scheduler.capacity.queue-path.maximum-application-lifetime yarn.scheduler.capacity.root.queue-path.default-application-lifetime
应用程序优先级的设置
应用程序优先级仅适用于FIFO排序策略。默认订购策略为FIFO
应用程序的默认优先级可以是集群级别和队列级别 集群级优先级 任何提交的优先级高于集群最高优先级的应用程序的优先级都将重置为集群最高优先级 可在yarn-site.xml中配置yarn.cluster.max-application-priority 叶队列级别优先级 每个叶队列都由管理员提供默认优先级。队列的默认优先级将用于任何提交的没有指定优先级的应用程序 可以在$HADOOP_HOME/etc/HADOOP/caccepty-scheduler.xml中配置以下属性 yarn.scheduler.capacity.root.leaf-queue-path.default-application-priority
容器抢占
CapacityScheduler支持从资源使用量超过其保证容量的队列中抢占容器。为了支持应用程序容器的抢占需要在yarn-site.xml中启用以下配置参数
yarn.resourcemanager.scheduler.monitor.enable
yarn.resourcemanager.scheduler.monitor.policies
CapacityScheduler.xml中以下配置可以控制提交到队列的应用程序容器的抢占。
yarn.scheduler.capacity.queue-path.disable_preemption
yarn.scheduler.capacity.queue-path.intra-queue-preemption.disable_preemption
预订属性
CapacityScheduler支持以下参数来控制预订的创建、删除、更新和列出。请注意任何用户都可以更新、删除或列出自己的预订。
如果已启用但未定义保留ACL则每个人都可以访问。
相关属性如下queue是队列名称 yarn.scheduler.capacity.root.queue.acl_administer_reservations
yarn.scheduler.capacity.root.queue.acl_list_reservations
yarn.scheduler.capacity.root.queue.acl_submit_reservations
配置ReserveSystem
CapacityScheduler支持预留系统允许用户提前预留资源。应用程序可以在运行时通过在提交过程中指定reservationId来请求保留的资源。
叶队列的动态自动创建和管理
CapacityScheduler支持在已配置为启用此功能的父队列下自动创建叶队列并可以为自动创建的队列管理安排编辑策略配置。
其他特性
资源计算器
yarn.scheduler.capacity.resource-calculator
解释用于比较调度程序中的资源的ResourceCalculator实现。默认值即org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator 仅使用内存而显性资源计算器使用显性资源来比较内存、CPU等多维资源。需要Java资源计算器类名。
数据局部性
Capacity Scheduler利用Delay Scheduling来满足任务位置限制。局部约束有三个级别节点局部、机架局部和关闭开关。
当不能满足局部性时调度器统计错过的机会的数量并等待该计数达到阈值然后将局部性约束放宽到下一级别。可以在以下属性中配置阈值
yarn.scheduler.capacity.node-locality-delay
解释CapacityScheduler尝试调度机架本地容器后错过的调度机会数。通常这应该设置为集群中的节点数。默认情况下在一个机架中设置大约40个节点。应为正整数值。
yarn.scheduler.capacity.rack-locality-additional-delay
解释与节点位置延迟相比额外错过的调度机会的数量之后CapacityScheduler尝试调度交换机外的容器。默认情况下此值设置为-1在这种情况下分配断开容器的错过机会的数量是基于公式L*C/N计算的其中 L是资源请求中指定的位置节点或机架的数量 C是请求的容器的数量 N是集群的大小
请注意如果YARN与文件系统分开部署则应禁用此功能因为位置性毫无意义。这可以通过将yarn.sscheduler.capacity.node-locality-deplay设置为-1来完成在这种情况下将忽略请求的局部性约束。
每个NodeManager心跳的容器分配
CapacityScheduler支持以下参数来控制每个NodeManager心跳中可以分配多少容器。这些参数可通过yarn rmadmin-refreshQueues进行刷新。
yarn.scheduler.capacity.per-node-heartbeat.multiple-assignments-enabled
解释是否允许在一个NodeManager检测信号中分配多个容器。默认为true。
yarn.scheduler.capacity.per-node-heartbeat.maximum-container-assignments
解释如果启用了多个分配则为一个NodeManager检测信号中可以分配的容器的最大数量。默认值为100将此值设置为-1将禁用此限制。
yarn.scheduler.capacity.per-node-heartbeat.maximum-offswitch-assignments
解释如果启用了多个分配则为一个NodeManager检测信号中可以分配的最大断开容器数。默认值为1表示在一个检测信号中只允许一个关闭开关分配。
查看CapacityScheduler的配置
以正常方式启动YARN集群打开ResourceManager web UI会显示各个队列的资源使用情况
更改队列配置
更改队列/调度程序属性和添加/删除队列可以通过两种方式完成即文件或API。
可以通过yarn-site.xml中的yarn.scheduler.configuration.store.class进行设置默认file
解释用于计划程序配置的配置存储的类型。默认值为“file”它使用基于文件的capacity-shuler.xml来检索和更改调度器配置。要启用基于API的调度程序配置请使用“内存”在内存存储中在重新启动时没有持久性、“leveldb”基于leveldb的存储或“zk”基于zookeeper的存储。只有当使用支持可变配置的调度程序时基于API的配置才有用。目前只有容量调度程序支持此功能。
文件
要按文件进行编辑需要编辑conf/capacityscheduler.xml并运行yarn rmadmin-refreshQueues
$ vi $HADOOP_CONF_DIR/capacity-scheduler.xml
$ $HADOOP_YARN_HOME/bin/yarn rmadmin -refreshQueues
通过文件删除队列
1、停止队列
在删除叶队列之前叶队列不应具有任何正在运行/挂起的应用程序并且必须通过更改yarn.scheduler.caccept.queue-path.state来停止。在删除父队列之前其所有子队列不应具有任何正在运行/挂起的应用程序并且必须停止。父队列也需要停止。
2、删除队列
从文件中删除队列配置并运行刷新
API
此功能处于Alpha阶段可能会发生更改
补充 Alpha 主要是以实现软件功能为主超多bug Beta消除严重bug但是还有缺陷而且会有新功能加入 RC(release.candidate):发行候选版,几乎就不会加入新的功能了而是着重于除错 Stable版稳定版
2、FairScheduler
介绍
公平调度是一种将资源分配给应用程序的方法使所有应用程序在一段时间内平均获得相等的资源份额。
默认情况下“公平调度程序”仅根据内存进行调度公平性决策。可以使用Ghodsi等人开发的显性资源公平概念将其配置为同时使用内存和CPU进行调度。
当有一个应用程序运行时该应用程序将使用整个集群。当提交其他应用程序时释放的资源会分配给新的应用程序这样每个应用程序最终都会获得大致相同的资源量。
与默认的Hadoop调度程序不同它形成了一个应用程序队列这可以让短应用程序在合理的时间内完成而不会让长寿命的应用程序挨饿。这也是在多个用户之间共享集群的合理方式。
也可以与应用程序优先级一起使用优先级被用作权重以确定每个应用程序应该获得的总资源的比例。
调度器将应用程序进一步组织成“队列”并在这些队列之间公平地共享资源。默认情况下所有用户共享一个名为“default”的队列。如果应用程序在容器资源请求中专门列出了一个队列则该请求会提交到该队列。还可以通过配置根据请求中包含的用户名分配队列。
在每个队列中调度策略用于在运行的应用程序之间共享资源。默认为基于内存的公平共享但也可以配置FIFO和具有主导资源公平性的多资源。队列可以按层次结构排列以划分资源并配置权重以按特定比例共享集群。
除了提供公平共享外fair Scheduler还允许为队列分配有保证的最小共享这有助于确保某些用户、组或生产应用程序始终获得足够的资源。
当队列包含应用程序时它至少会获得其最小共享但当队列不需要其完全保证的共享时多余的部分会在其他运行的应用程序之间分配。这使调度程序能够保证队列的容量同时在队列不包含应用程序时有效地利用资源。
Fair Scheduler默认情况下允许所有应用程序运行但也可以通过配置文件限制每个用户和每个队列运行的应用程序的数量。当用户必须同时提交数百个应用程序时这可能很有用或者如果一次运行太多应用程序会导致创建太多中间数据或切换太多上下文这通常会提高性能。限制应用程序不会导致任何后续提交的应用程序失败只会在调度程序的队列中等待直到用户的一些早期应用程序完成。
使用
要使用Fair Scheduler请首先在yarn-site.xml中分配适当的调度器类 property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler/value /property 可插入策略的分层队列
公平调度程序支持分层队列。所有队列都是从一个名为“root”的队列派生而来的。可用资源以典型的公平调度方式分布在root队列的子队列中。然后子队列以同样的方式将他们的资源分配给子队列。应用程序只能在叶队列上进行调度。通过将队列作为其父队列的子元素放置在公平调度程序分配文件中可以将队列指定为其他队列的子队列。
队列的名称以其父队列的名称开头以句点作为分隔符。因此根队列下的名为“queue1”的队列将被称为“root.queue1”而名为“parent1”的队列下的“queue2”队列将被称作“root.parent1.queue2”。当提及队列时名称的根部分是可选的因此queue1可以被称为仅“queue1“而queue2可以被称作仅“parent1.queue2”。
此外公平调度程序允许为每个队列设置不同的自定义策略以允许以用户想要的任何方式共享队列的资源。可以通过扩展org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.SchedulingPolicy来构建自定义策略。FifoPolicy、FairSharePolicy默认和 DominantResourceFairnessPolicy 是内置的可以直接使用。
自动将应用程序放入队列
Fair Scheduler允许管理员配置策略自动将提交的应用程序放入适当的队列中。放置可能取决于提交者的用户和组以及应用程序传递的请求队列。策略由一组规则组成这些规则按顺序应用以对传入的应用程序进行分类。每个规则要么将应用程序放入队列要么拒绝它要么继续执行下一个规则。
配置
自定义Fair Scheduler通常需要更改两个文件即yarn-site.xml文件和自定义分配文件
yarn-site.xml
yarn.scheduler.fair.allocation.file
解释分配文件的路径。分配文件是描述队列及其属性以及某些策略默认值的XML清单。此文件必须采用下一节中描述的XML格式。如果给定了相对路径则会在类路径通常包括Hadoop conf目录上搜索该文件。默认为fair-scheduler.xml。
yarn.scheduler.fair.user-as-default-queue
解释如果未指定队列名称是否使用与分配关联的用户名作为默认队列名称。如果设置为“false”或未设置则所有作业都有一个名为“default”的共享默认队列。默认为true。如果在分配文件中给定了队列放置策略则会忽略此属性。
yarn.scheduler.fair.preemption
解释是否使用抢占。默认为false。
yarn.scheduler.fair.preemption.cluster-utilization-threshold
解释抢占开始后的利用率阈值。利用率计算为所有资源中使用率与容量的最大比率。默认值为0.8f。
yarn.scheduler.fair.sizebasedweight
解释是否根据应用程序的大小为其分配共享而不是为所有应用程序提供平等的共享无论大小。当设置为true时应用程序的权重为1的自然对数加上应用程序请求的总内存再除以2的自然对数。默认为false。
yarn.scheduler.fair.assignmultiple
解释是否允许在一个检测信号中分配多个容器。默认为false。
yarn.scheduler.fair.dynamic.max.assign
解释如果 assignmultiple 为true则是否动态确定一个检测信号中可以分配的资源量。启用后节点上大约一半未分配的资源在一个心跳中分配给容器。默认为true。
yarn.scheduler.fair.max.assign
解释如果 assignmultiple 为truedynamic.max.assign 为false则表示一个检测信号中可以分配的容器的最大数量。默认值为-1不设限制。
yarn.scheduler.fair.locality.threshold.node
解释对于在特定节点上请求容器的应用程序指自上次容器分配以来在接受另一个节点上的放置之前等待的调度机会数。表示为0和1之间的浮动这是集群大小的一小部分是要错过的调度机会的数量。默认值-1.0表示不要错过任何日程安排机会。
yarn.scheduler.fair.locality.threshold.rack
解释对于请求在特定机架上放置容器的应用程序指自上次容器分配以来在接受另一个机架上的放置之前等待的调度机会的数量。表示为0和1之间的浮动这是集群大小的一小部分是要错过的调度机会的数量。默认值-1.0表示不要错过任何日程安排机会。
yarn.scheduler.fair.allow-undeclared-pools
解释如果是true则可以在应用程序提交时创建新队列无论是因为提交者将它们指定为应用程序的队列还是因为用户将它们作为默认队列属性放置在那里。如果这是false则任何时候应用程序都会被放置在分配文件中未指定的队列中而是被放置在“默认”队列中。默认为true。如果在分配文件中给定了队列放置策略则会忽略此属性。
yarn.scheduler.fair.update-interval-ms
解释锁定调度程序并重新计算公平份额、重新计算需求以及检查是否有应优先购买的内容的间隔。默认为500毫秒。
yarn.resource-types.memory-mb.increment-allocation
解释公平调度程序以该值为增量授予内存。如果您提交的任务的资源请求不是memory-mb.increment-allocation的倍数则该请求将四舍五入到最接近的增量。默认值为1024 MB。
yarn.resource-types.vcores.increment-allocation
解释fairscheduler以该值为增量授予vcore。如果您提交的任务的资源请求不是vcores.increment-allocation的倍数则该请求将四舍五入到最接近的增量。默认值为1。
yarn.resource-types.resource.increment-allocation
解释fairscheduler以该值的增量授予resource。如果您提交的任务的资源请求不是resource.inrement分配的倍数则该请求将四舍五入到最接近的增量。如果未为资源指定此属性则不会应用增量四舍五入。如果未指定单位则假定为资源的默认单位。
yarn.scheduler.increment-allocation-mb
解释内存的分配增量。不再是首选。请改用yarn.resource-types.memory-mb.increment-allocation。默认值为1024 MB。
yarn.scheduler.increment-allocation-vcores
解释CPU vcores的分配增量。不再是首选。请改用yarn.resource-types.vcores.crement-allocation。默认值为1。
自定义分配文件
分配文件必须为XML格式。请注意为了与原始FairScheduler向后兼容“队列”元素可以改为命名为“池”元素。
队列访问控制列表
队列访问控制列表ACL允许管理员控制谁可以对特定队列执行操作。它们使用aclSubmitApps和aclAdministratorApps属性进行配置这些属性可以按队列设置。目前唯一支持的管理操作是终止应用程序。
管理员也可以向其提交应用程序。这些属性的值的格式类似于“user1,user2 group1,group2” or group1,group2。分隔符是一个空格字符
如果用户/组是队列ACL的成员或队列的任何祖先的队列ACL的一员则允许对该队列执行操作。因此如果queue2在queue1内user1在queue1的ACL中user2在queue2的ACL中时那么两个用户都可以提交给queue2。
默认情况下root 队列的ACL是“*”因为ACL是向下传递的这意味着每个人都可以向每个队列提交并终止应用程序。要开始限制访问请将根队列的ACL更改为“*”以外的内容。
预订访问控制列表
保留访问控制列表ACL允许管理员控制谁可以对特定队列执行保留操作。它们配置有aclAdministrativeReservations、aclListReservation和aclSubmitReserves属性这些属性可以按队列设置。目前支持的管理操作是更新和删除预订。
管理员还可以提交并列出队列中的所有预订。这些属性的值的格式类似于“user1,user2 group1,group2” or group1,group2。如果用户/组是保留ACL的成员则允许对队列执行操作。请注意任何用户都可以更新、删除或列出自己的预订。如果已启用但未定义保留ACL则每个人都可以访问。
配置ReserveSystem
Fair Scheduler支持ReservationSystem该系统允许用户提前预订资源。应用程序可以在运行时通过在提交过程中指定reservationId来请求保留资源。可以在ReserveSystem的yarn-site.xml中配置以下配置参数。
yarn.resourcemanager.reservation-system.enable
解释必选参数启用ResourceManager中的ReserveSystem。应为布尔值。默认值为false即默认情况下未启用ReserveSystem。
yarn.resourcemanager.reservation-system.class
解释可选参数ReserveSystem的类名。默认值是根据配置的Scheduler选择的即如果配置了FairScheduler则为 FairReserveSystem。
yarn.resourcemanager.reservation-system.plan.follower
解释可选参数PlanFollower 的类名它在计时器上运行并将FairScheduler与Plan同步反之亦然。默认值是根据配置的Scheduler选择的即如果配置了FairScheduler则它是 FairSchedulerPlanFollower。
yarn.resourcemanager.reservation-system.planfollower.time-step
解释可选参数PlanFollower计时器的频率以毫秒为单位。应为长值。默认值为1000。
管理
运行时修改配置
通过编辑分配文件可以在运行时修改最小共享、限制、权重、抢占超时和队列调度策略。调度程序将在看到该文件被修改后10-15秒重新加载该文件。
web UI监控
当前的应用程序、队列和公平共享可以通过ResourceManager的web界面进行检查
队列之间移动应用程序
Fair Scheduler支持将正在运行的应用程序移动到其他队列。这对于将重要的应用程序移动到优先级较高的队列或将不重要的应用软件移动到优先级较低的队列非常有用。可以通过运行yarn application-movetoqueue appID-queue targetQueueName来移动应用程序。
当应用程序移动到队列时为了确定公平性它的现有分配将与新队列的分配一起计算而不是与旧队列的分配。如果将应用程序的资源添加到队列中会违反其maxRunningApps或maxResources约束则将应用程序移动到队列的尝试将失败。
转储 Fair Scheduler 状态
Fair Scheduler能够定期转储其状态。默认情况下它处于禁用状态。管理员可以通过将org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.statedump日志记录级别设置为DEBUG来启用它。
Fair Scheduler日志默认情况下会转到Resource Manager日志文件。Fair Scheduler状态转储可能会生成大量日志数据。
取消注释log4j.properties中的“Fair scheduler state dump”部分将状态转储到一个单独的文件中。