1. 程式人生 > 其它 >HADOOP YARN(4):YARN案例實操(2)

HADOOP YARN(4):YARN案例實操(2)

3 公平排程器案例

3.1 需求

建立兩個佇列,分別是testatguigu(以使用者所屬組命名)。期望實現以下效果:若使用者提交任務時指定佇列,則任務提交到指定佇列執行;若未指定佇列test使用者提交的任務到root.group.test佇列執行atguigu提交的任務到root.group.atguigu佇列執行(注:group為使用者所屬組)。

公平排程器的配置涉及到兩個檔案,一個是yarn-site.xml,另一個是公平排程器佇列分配檔案fair-scheduler.xml(檔名可自定義)。

1)配置檔案參考資料:

https://hadoop.apache.org/docs/r3.1.3

/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

2)任務佇列放置規則參考資料:

https://blog.cloudera.com/untangling-apache-hadoop-yarn-part-4-fair-scheduler-queue-basics/

3.2 配置多佇列的公平排程器

1)修改yarn-site.xml檔案,加入以下引數

<property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
    <description>配置使用公平排程器</description>
</property>

<property>
    <name>yarn.scheduler.fair.allocation.file</name>
    <value>/opt/module/hadoop-3.1
.3/etc/hadoop/fair-scheduler.xml</value> <description>指明公平排程器佇列分配配置檔案</description> </property> <property> <name>yarn.scheduler.fair.preemption</name> <value>false</value> <description>禁止佇列間資源搶佔</description> </property>

2

)配置fair-scheduler.xml

<?xml version="1.0"?>
<allocations>
  <!-- 單個佇列中Application Master佔用資源的最大比例,取值0-1 ,企業一般配置0.1 -->
  <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
  <!-- 單個佇列最大資源的預設值 test atguigu default -->
  <queueMaxResourcesDefault>4096mb,4vcores</queueMaxResourcesDefault>

  <!-- 增加一個佇列test -->
  <queue name="test">
    <!-- 佇列最小資源 -->
    <minResources>2048mb,2vcores</minResources>
    <!-- 佇列最大資源 -->
    <maxResources>4096mb,4vcores</maxResources>
    <!-- 佇列中最多同時執行的應用數,預設50,根據執行緒數配置 -->
    <maxRunningApps>4</maxRunningApps>
    <!-- 佇列中Application Master佔用資源的最大比例 -->
    <maxAMShare>0.5</maxAMShare>
    <!-- 該佇列資源權重,預設值為1.0 -->
    <weight>1.0</weight>
    <!-- 佇列內部的資源分配策略 -->
    <schedulingPolicy>fair</schedulingPolicy>
  </queue>
  <!-- 增加一個佇列atguigu -->
  <queue name="atguigu" type="parent">
    <!-- 佇列最小資源 -->
    <minResources>2048mb,2vcores</minResources>
    <!-- 佇列最大資源 -->
    <maxResources>4096mb,4vcores</maxResources>
    <!-- 佇列中最多同時執行的應用數,預設50,根據執行緒數配置 -->
    <maxRunningApps>4</maxRunningApps>
    <!-- 佇列中Application Master佔用資源的最大比例 -->
    <maxAMShare>0.5</maxAMShare>
    <!-- 該佇列資源權重,預設值為1.0 -->
    <weight>1.0</weight>
    <!-- 佇列內部的資源分配策略 -->
    <schedulingPolicy>fair</schedulingPolicy>
  </queue>

  <!-- 任務佇列分配策略,可配置多層規則,從第一個規則開始匹配,直到匹配成功 -->
  <queuePlacementPolicy>
    <!-- 提交任務時指定佇列,如未指定提交佇列,則繼續匹配下一個規則; false表示:如果指定佇列不存在,不允許自動建立-->
    <rule name="specified" create="false"/>
    <!-- 提交到root.group.username佇列,若root.group不存在,不允許自動建立;若root.group.user不存在,允許自動建立 -->
    <rule name="nestedUserQueue" create="true">
        <rule name="primaryGroup" create="false"/>
    </rule>
    <!-- 最後一個規則必須為reject或者default。Reject表示拒絕建立提交失敗,default表示把任務提交到default佇列 -->
    <rule name="reject" />
  </queuePlacementPolicy>
</allocations>

3)分發配置並重啟Yarn

[atguigu@hadoop102 hadoop]$ xsync yarn-site.xml
[atguigu@hadoop102 hadoop]$ xsync fair-scheduler.xml

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/stop-yarn.sh
[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

3.3測試提交任務

1)提交任務時指定佇列,按照配置規則,任務會到指定的root.test佇列

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi -Dmapreduce.job.queuename=root.test 1 1

2)提交任務時不指定佇列,按照配置規則,任務會到root.atguigu.atguigu佇列

[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1

本文來自部落格園,作者:秋華,轉載請註明原文連結:https://www.cnblogs.com/qiu-hua/p/15229185.html