队列原理

官网:

https://hadoop.apache.org/docs/r2.8.5/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

参数:

https://hadoop.apache.org/docs/r2.8.5/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

#设置scheduler类型:
yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

分配文件必须为XML格式。该格式包含五种类型的元素:

队列元素:代表队列。队列元素可以采用可选属性'type',将其设置为'parent'使其成为父队列。当我们要创建父队列而不配置任何叶队列时,这很有用。每个队列元素可能包含以下属性:

minResources:队列有权使用的最小资源,形式为“ X mb,Y vcores”。对于单一资源公平性策略,将忽略vcores值。如果不满足队列的最小份额,将在同一父项下的任何其他队列之前为它提供可用资源。根据单资源公平性策略,如果队列的内存使用率低于其最小内存份额,则认为该队列不满意。在主导资源公平的情况下,如果队列相对于集群容量而言对主导资源的使用低于该资源的最小份额,则认为该队列不满意。如果在这种情况下无法满足多个队列,则资源以相关资源使用率与最小值之间的最小比率进入队列。
maxResources:允许队列使用的最大资源,格式为“ X mb,Y vcores”。对于单一资源公平性策略,将忽略vcores值。永远不会为队列分配一个容器,该容器的总使用量将超过此限制。
maxRunningApps:限制队列中一次运行的应用程序数量
maxAMShare:限制可用于运行应用程序主服务器的队列公平份额的比例。此属性只能用于叶队列。例如,如果设置为1.0f,则叶队列中的AM最多可以占用100%的内存和CPU公平份额。-1.0f的值将禁用此功能,并且不会检查amShare。默认值为0.5f。
权重:与其他队列不成比例地共享集群。权重默认为1,权重为2的队列所接收的资源大约是权重为默认队列的两倍。
schedulePolicy:设置任何队列的调度策略。允许的值为“ fifo” /“ fair” /“ drf”或任何扩展org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.SchedulingPolicy的类。默认为“公平”。如果为“ fifo”,则优先考虑具有较早提交时间的应用程序的容器,但是如果满足较早应用程序的请求后群集上仍有剩余空间,则较晚提交的应用程序可以并发运行。
aclSubmitApps:可以将应用程序提交到队列的用户和/或组的列表。有关此列表的格式以及队列ACL如何工作的更多信息,请参考下面的ACL部分。
aclAdministerApps:可以管理队列的用户和/或组的列表。当前,唯一的管理操作是杀死应用程序。有关此列表的格式以及队列ACL如何工作的更多信息,请参考下面的ACL部分。
minSharePreemptionTimeout:在队列试图抢占容器以从其他队列中获取资源之前,队列处于其最小份额之下的秒数。如果未设置,则队列将从其父队列继承值。
fairSharePreemptionTimeout:队列在尝试抢占容器以从其他队列中获取资源之前,处于其公平份额阈值以下的秒数。如果未设置,则队列将从其父队列继承值。
fairSharePreemptionThreshold:队列的公平份额抢占阈值。如果队列在等待fairSharePreemptionTimeout而不接收fairSharePreemptionThreshold * fairShare资源,则允许抢占容器以从其他队列中获取资源。如果未设置,则队列将从其父队列继承值。
用户元素:代表用于控制单个用户行为的设置。它们可以包含一个属性:maxRunningApps,对特定用户正在运行的应用程序数量的限制。

userMaxAppsDefault元素:可以为未指定限制的所有用户设置默认的运行应用程序限制。

defaultFairSharePreemptionTimeout元素:设置根队列的公平抢占超时。被根队列中的fairSharePreemptionTimeout元素覆盖。

defaultMinSharePreemptionTimeout元素:设置根队列的最小共享抢占超时;由根队列中的minSharePreemptionTimeout元素覆盖。

defaultFairSharePreemptionThreshold元素:设置根队列的公平份额抢占阈值;被根队列中的fairSharePreemptionThreshold元素覆盖。

queueMaxAppsDefault元素:设置队列的默认运行应用程序限制;每个队列中的maxRunningApps元素覆盖。

queueMaxResourcesDefault元素:设置队列的默认最大资源限制;在每个队列中被maxResources元素覆盖。

queueMaxAMShareDefault元素:设置队列的默认AM资源限制。在每个队列中被maxAMShare元素覆盖。

defaultQueueSchedulingPolicy元素:设置队列的默认调度策略。如果指定,则由每个队列中的schedulePolicy元素覆盖。默认为“公平”。

queuePlacementPolicy元素:包含一个规则元素列表,这些规则元素告诉调度程序如何将传入的应用程序放入队列中。规则以列出顺序应用。规则可能会引起争论。所有规则都接受“创建”参数,该参数指示规则是否可以创建新队列。“创建”默认为true;如果设置为false并且规则会将应用程序放置在分配文件中未配置的队列中,则我们继续执行下一条规则。最后一条规则必须是永远不能发出继续的规则。有效规则是:

指定:将应用放入请求的队列中。如果应用程序没有请求队列,即指定了“默认”,则我们继续。如果应用程序请求的队列名称以句点开头或结尾,即“ .q1”或“ q1。”之类的名称将被拒绝。
用户:应用程序以提交用户的名称放置在队列中。用户名中的句点将被替换为“ _dot_”,即用户“ first.last”的队列名称为“ first_dot_last”。
primaryGroup:将应用程序放入队列中,队列中包含提交该应用程序的用户的主要组的名称。组名中的句点将被替换为“ _dot_”,即组“ one.two”的队列名称为“ one_dot_two”。
secondaryGroupExistingQueue:将应用程序放入一个队列中,该队列的名称与提交该应用程序的用户的次要组相匹配。将选择与已配置队列匹配的第一个辅助组。组名中的句点将被替换为“ _dot_”,即,如果存在这样的队列,则以“ one.two”作为其次要组之一的用户将被放入“ one_dot_two”队列中。
nestedUserQueue:将应用程序放入用户队列中,并将用户名放在嵌套规则建议的队列下。这类似于“ user”规则,区别在于“ nestedUserQueue”规则,可以在任何父队列下创建用户队列,而“ user”规则仅在根队列下创建用户队列。请注意,只有在嵌套规则返回父队列时才应用nestedUserQueue规则。可以通过将队列的'type'属性设置为'parent'或通过在该队列下配置至少一个叶子来配置父队列来配置父队列。父母 有关示例用例,请参见分配示例。
默认值:将应用程序放入默认规则的'queue'属性中指定的队列中。如果未指定'queue'属性,则将应用程序放置在'root.default'队列中。
拒绝:该应用被拒绝。

猜你喜欢

转载自www.cnblogs.com/hongfeng2019/p/12103395.html