hadoop fair scheduler配置和使用

时间:2021-11-09 14:38:02
1,配置准备
     hadoop-yarn-server-resourcemanager-2.6.0.jar
2,属性说明
     2.1 可放置在yarn-site.xml中的属性

* yarn.scheduler.fair.allocation.file

* 路径配置文件。分配文件是一个XML清单描述队列和它们的属性,除了某些政策的默认值。此文件必须在下一节中描述的XML格式。如果使用相对路径,则该程序文件中搜索的类路径(这通常包括Hadoop的conf目录下)。默认为公平scheduler.xml。

* yarn.scheduler.fair.user-as-default-queue

* 是否使用与分配作为默认队列名称关联的用户名,在未指定队列名称的事件。如果设置为“false”或取消,所有工作都具有共享的缺省队列,命名为“默认”。默认为true。如果队列放置策略中给出了配置文件,则忽略此属性。

* yarn.scheduler.fair.preemption

* 是否使用抢占。需要注意的是抢占实验是在当前版本中。默认为false。

* yarn.scheduler.fair.sizebasedweight

* 是否将股份分配给基于其规模的个体应用,而不是提供一个平等的份额,所有的应用程序无论大小。如果设置为true,应用程序是由一加应用程序的总内存要求的自然对数,以2。默认值的自然对数除以假加权。

* yarn.scheduler.fair.assignmultiple

* 是否允许多个容器分配在一个心跳。默认为false。

* yarn.scheduler.fair.max.assign

* 如果assignmultiple是true,容器可以在一个心跳被分配的最大金额。默认为-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,新的队列可以在提交申请时被创建,无论是因为它们是由提交者指定为应用程序的队列中,或者因为它们是由用户的默认队列属性放在那里。如果此为假,任何时间的应用程序将被放置在一个未在该分配文件中指定一个队列,它被放置在“默认”的队列来代替。默认为true。如果队列放置策略中给出了配置文件,则忽略此属性。


     2.2 fair scheduler.xml 文件。包含五种元素的格式:
         2.2.1队列元素:队列元素可以用一个可选属性“类型”,当设置为“父”使它父母队列。这是有用的,当我们想创建一个父队列没有配置任何叶队列。每个队列元素可能包含以下属性:
        minResources
            最小资源队列有权,表单中的“X mb,Y vcores”。单资源公平政策,vcores值将被忽略。如果一个队列的最低份额是不满意,这将是前提供的可用资源其他队列在同一个父元素。在单资源公平政策,一个队列是不满意的,如果内存使用量低于其最小内存共享。下占主导地位的资源公平,队列是不满意如果使用其占主导地位的资源对集群能力低于其最小共享资源。如果不满足在这种情况下,多个队列的队列资源去相关资源使用和最小最小的比率。注意,有可能是一个队列,低于其最低可能不会立刻起床最低提交应用程序时,因为正在运行的工作可能会使用这些资源。
        maxResources
            最大允许资源队列,“X mb,Y vcores”。单资源公平政策,vcores值将被忽略。队列不会被分配一个容器将其聚合使用超过这个极限。
        maxRunningApps
            限制应用程序的数量从队列中运行
        maxAMShare
            限制队列的公平份额的部分,可用于运行应用程序的主人。这个属性只能用于叶队列。例如,如果设置为1.0度,然后在叶AMs队列可以采取多达100%的内存和CPU的公平份额。-1.0 f的值将禁用这个特性和amShare不会检查。默认值是0.5。
        weight
            共享集群非均衡与其他队列。权值默认为1,一个队列2重量应该得到大约两倍的资源作为队列使用默认的重量。
        schedulingPolicy
            设置任何队列的调度策略。允许的值是“先进先出”/“公平”/“drf”或任何类org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.SchedulingPolicy延伸。默认为“公平”。如果“先进先出”,应用与早些时候提交时间给定偏好容器,但应用程序提交后可能同时运行在集群上如果有剩余的空间满足后早期应用程序的请求。
        aclSubmitApps
            用户和/或组的列表,可以提交应用程序的队列。更多信息请参考下面的acl部分在这个列表的格式和队列acl是如何工作的。
        aclAdministerApps
            用户和/或组的列表,可以管理一个队列。目前唯一的行政行为是杀死一个应用程序。
        minSharePreemptionTimeout
            队列的秒数下的最低份额之前将试图抢占容器资源从其他队列。如果没有设置,那么队列从母公司将继承值队列。
        fairSharePreemptionTimeout
            队列是在其公平份额的秒数阈值之前将试图抢占容器资源从其他队列。如果没有设置,那么队列从母公司将继承值队列。
        fairSharePreemptionThreshold
            公平份额的抢占阈值的队列。如果队列等待fairSharePreemptionTimeout没有收到fairSharePreemptionThreshold * fairShare资源,允许抢占容器资源从其他队列。如果没有设置,那么队列从母公司将继承值队列。
    2.2.2用户元素:代表设置管理个人用户的行为。他们可以包含一个属性:maxRunningApps,限制特定用户运行的应用程序的数量。
        userMaxAppsDefault element
            设置默认运行应用程序限制对任何用户的限制不是另有规定。
        defaultFairSharePreemptionTimeout element
            设置公平份额抢占根队列超时;被fairSharePreemptionTimeout元素根队列。
        defaultMinSharePreemptionTimeout element
            设置分钟分享抢占根队列超时;被minSharePreemptionTimeout元素根队列。
        defaultFairSharePreemptionThreshold element
            设置公平份额的抢占阈值为根队列;被fairSharePreemptionThreshold元素根队列。
        queueMaxAppsDefault element
            设置默认运行应用程序队列限制;maxRunningApps元素在每个队列。
        queueMaxAMShareDefault element
            设置默认队列资源限制,重载maxAMShare元素在每个队列。
        defaultQueueSchedulingPolicy element
            设置默认队列调度策略;schedulingPolicy元素的每个队列如果指定。默认为“公平”。
        queuePlacementPolicy element
            它包含的规则元素列表告诉调度程序如何将传入应用程序放入队列。应用规则的顺序列出。规则可能需要参数。所有规则接受“创造”的论点,这表明规则是否可以创建一个新队列。“创造”默认值为true;如果设置为false,规则将应用程序队列,没有在配置文件中配置,我们继续下一条规则。最后一个规则必须是一个永远无法继续。有效的规则是:

        specified
            指定应用程序放入队列请求。如果应用程序请求队列,即它指定的“默认”,我们继续。如果应用程序请求队列名称开始或结束时间,即名字像”。q1”或“q1。“将被拒绝。
        user
            应用程序放入一个队列,用户提交的名称。时间在用户名替换为“_dot_”,即为用户“第一队列名称。是“first_dot_last”。
        primaryGroup
            应用程序放入一个队列的名称主要组的用户提交它。组名的时期将被替换为“_dot_”,即为集团“一个队列名称。两个“是”one_dot_two”。
        secondaryGroupExistingQueue
            应用程序放入一个队列的名称相匹配的次要组的用户提交它。第二级组匹配的队列配置将被选中。时期组名称将被替换为“_dot_”,即一个用户”。两个”作为他们的一个二次组会放在“one_dot_two”队列,如果存在这样一个队列。
        nestedUserQueue
            应用程序放入一个队列的名称下的用户队列建议的嵌套规则。这是类似于规则,区别在“nestedUserQueue”规则,用户可以创建队列在任何父队列,而“用户”统治下创建用户队列只根队列。注意,nestedUserQueue规则只适用于如果嵌套规则返回父队列。父母可以配置一个队列,队列的“类型”属性设置为“父”或通过配置至少一个叶下队列使其父母。示例配置给出了一个示例用例。
        default
            应用程序放入队列“队列”属性中指定的默认规则。如果没有指定“队列”属性,应用被放入的根。默认的队列。
        reject
            应用被拒绝。
3.配置步骤
     3.1将hadoop-yarn-server-resourcemanager-2.6.0.jar放在hadoop根目录lib下
     3.2修改yarn-site.xml文件,添加以下配置(以上介绍属性也可自定义添加)
hadoop fair scheduler配置和使用
     3.3配置队列
          创建fair-scheduler.xml,并修改(属性根据需要添加)
    hadoop fair scheduler配置和使用    
     4.重启yarn服务,执行MR任务 hadoop jar mr.jar  wordcount  /input/abc.xml  /output
hadoop fair scheduler配置和使用
5.完成配置

2 个解决方案

#1


学习。。。。。。。。。。

#2


收藏,学习 hadoop fair scheduler配置和使用

#1


学习。。。。。。。。。。

#2


收藏,学习 hadoop fair scheduler配置和使用