HADOOP YARN(4):YARN案例實操(2)
阿新 • • 發佈:2021-09-05
3 公平排程器案例
3.1 需求
建立兩個佇列,分別是test和atguigu(以使用者所屬組命名)。期望實現以下效果:若使用者提交任務時指定佇列,則任務提交到指定佇列執行;若未指定佇列,test使用者提交的任務到root.group.test佇列執行,atguigu提交的任務到root.group.atguigu佇列執行(注:group為使用者所屬組)。
公平排程器的配置涉及到兩個檔案,一個是yarn-site.xml,另一個是公平排程器佇列分配檔案fair-scheduler.xml(檔名可自定義)。
(1)配置檔案參考資料:
https://hadoop.apache.org/docs/r3.1.3
(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
<?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