Hadoop多使用者資源管理–Fair Scheduler介紹與配置(Yarn)
在一個公司內部的Hadoop Yarn叢集,肯定會被多個業務、多個使用者同時使用,共享Yarn的資源,如果不做資源的管理與規劃,那麼整個Yarn的資源很容易被某一個使用者提交的Application佔滿,其它任務只能等待,這種當然很不合理,我們希望每個業務都有屬於自己的特定資源來執行MapReduce任務,Hadoop中提供的公平排程器–Fair Scheduler,就可以滿足這種需求。
Fair Scheduler將整個Yarn的可用資源劃分成多個資源池,每個資源池中可以配置最小和最大的可用資源(記憶體和CPU)、最大可同時執行Application數量、權重、以及可以提交和管理Application的使用者等。
根據使用者名稱分配資源池
如圖所示,假設整個Yarn叢集的可用資源為100vCPU,100GB記憶體,現在為3個業務各自規劃一個資源池,另外,規劃一個default資源池,用於執行其他使用者和業務提交的任務。如果沒有在任務中指定資源池(透過引數mapreduce.job.queuename),那麼可以配置使用使用者名稱作為資源池名稱來提交任務,即使用者businessA提交的任務被分配到資源池businessA中,使用者businessC提交的任務被分配到資源池businessC中。除了配置的固定使用者,其他使用者提交的任務將會被分配到資源池default中。
這裡的使用者名稱,就是提交Application所使用的Linux/Unix使用者名稱。
另外,每個資源池可以配置允許提交任務的使用者名稱,比如,在資源池businessA中配置了允許使用者businessA和使用者lxw1234提交任務,如果使用使用者lxw1234提交任務,並且在任務中指定了資源池為businessA,那麼也可以正常提交到資源池businessA中。
根據權重獲得額外的空閒資源
在每個資源池的配置項中,有個weight屬性(預設為1),標記了資源池的權重,當資源池中有任務等待,並且叢集中有空閒資源時候,每個資源池可以根據權重獲得不同比例的叢集空閒資源。
比如,資源池businessA和businessB的權重分別為2和1,這兩個資源池中的資源都已經跑滿了,並且還有任務在排隊,此時叢集中有30個Container的空閒資源,那麼,businessA將會額外獲得20個Container的資源,businessB會額外獲得10個Container的資源。
最小資源保證
在每個資源池中,允許配置該資源池的最小資源,這是為了防止把空閒資源共享出去還未回收的時候,該資源池有任務需要執行時候的資源保證。
比如,資源池businessA中配置了最小資源為(5vCPU,5GB),那麼即使沒有任務執行,Yarn也會為資源池businessA預留出最小資源,一旦有任務需要執行,而叢集中已經沒有其他空閒資源的時候,這個最小資源也可以保證資源池businessA中的任務可以先執行起來,隨後再從叢集中獲取資源。
動態更新資源配額
Fair Scheduler除了需要在yarn-site.xml檔案中啟用和配置之外,還需要一個XML檔案來配置資源池以及配額,而該XML中每個資源池的配額可以動態更新,之後使用命令:yarn rmadmin –refreshQueues 來使得其生效即可,不用重啟Yarn叢集。
需要注意的是:動態更新只支援修改資源池配額,如果是新增或減少資源池,則需要重啟Yarn叢集。
Fair Scheduler配置示例
以上面圖中所示的業務場景為例。
yarn-site.xml中的配置:
<!– scheduler start –>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
<name>yarn.scheduler.fair.allocation.file</name>
<value>/etc/hadoop/conf/fair-scheduler.xml</value>
</property>
<property>
<name>yarn.scheduler.fair.preemption</name>
<value>true</value>
</property>
<property>
<name>yarn.scheduler.fair.user-as-default-queue</name>
<value>true</value>
<description>default is True</description>
</property>
<property>
<name>yarn.scheduler.fair.allow-undeclared-pools</name>
<value>false</value>
<description>default is True</description>
</property>
<!– scheduler end –>
- yarn.resourcemanager.scheduler.class
配置Yarn使用的排程器外掛類名;
Fair Scheduler對應的是:
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
- yarn.scheduler.fair.allocation.file
配置資源池以及其屬性配額的XML檔案路徑(本地路徑);
- yarn.scheduler.fair.preemption
開啟資源搶佔。
- yarn.scheduler.fair.user-as-default-queue
設定成true,當任務中未指定資源池的時候,將以使用者名稱作為資源池名。這個配置就實現了根據使用者名稱自動分配資源池。
- yarn.scheduler.fair.allow-undeclared-pools
是否允許建立未定義的資源池。
如果設定成true,yarn將會自動建立任務中指定的未定義過的資源池。設定成false之後,任務中指定的未定義的資源池將無效,該任務會被分配到default資源池中。
fair-scheduler.xml中的配置:
<?xml version=”1.0″?>
<allocations>
<!– users max running apps –>
<userMaxAppsDefault>30</userMaxAppsDefault>
<!– queues –>
<queue name=”root”>
<minResources>51200mb,50vcores</minResources>
<maxResources>102400mb,100vcores</maxResources>
<maxRunningApps>100</maxRunningApps>
<weight>1.0</weight>
<schedulingMode>fair</schedulingMode>
<aclSubmitApps> </aclSubmitApps>
<aclAdministerApps> </aclAdministerApps>
<queue name=”default”>
<minResources>10240mb,10vcores</minResources>
<maxResources>30720mb,30vcores</maxResources>
<maxRunningApps>100</maxRunningApps>
<schedulingMode>fair</schedulingMode>
<weight>1.0</weight>
<aclSubmitApps>*</aclSubmitApps>
</queue>
<queue name=”businessA”>
<minResources>5120mb,5vcores</minResources>
<maxResources>20480mb,20vcores</maxResources>
<maxRunningApps>100</maxRunningApps>
<schedulingMode>fair</schedulingMode>
<weight>2.0</weight>
<aclSubmitApps>businessA,lxw1234 group_businessA,group_lxw1234</aclSubmitApps>
<aclAdministerApps>businessA,hadoop group_businessA,supergroup</aclAdministerApps>
</queue>
<queue name=”businessB”>
<minResources>5120mb,5vcores</minResources>
<maxResources>20480mb,20vcores</maxResources>
<maxRunningApps>100</maxRunningApps>
<schedulingMode>fair</schedulingMode>
<weight>1</weight>
<aclSubmitApps>businessB group_businessA</aclSubmitApps>
<aclAdministerApps>businessA,hadoop group_businessA,supergroup</aclAdministerApps>
</queue>
<queue name=”businessC”>
<minResources>5120mb,5vcores</minResources>
<maxResources>20480mb,20vcores</maxResources>
<maxRunningApps>100</maxRunningApps>
<schedulingMode>fair</schedulingMode>
<weight>1.5</weight>
<aclSubmitApps>businessC group_businessC</aclSubmitApps>
<aclAdministerApps>businessC,hadoop group_businessC,supergroup</aclAdministerApps>
</queue>
</queue>
</allocations>
- minResources
最小資源
- maxResources
最大資源
- maxRunningApps
最大同時執行application數量
- weight
資源池權重
- aclSubmitApps
允許提交任務的使用者名稱和組;
格式為: 使用者名稱 使用者組
當有多個使用者時候,格式為:使用者名稱1,使用者名稱2 使用者名稱1所屬組,使用者名稱2所屬組
- aclAdministerApps
允許管理任務的使用者名稱和組;
格式同上。
Fair Scheduer各資源池配置及使用情況,在ResourceManager的WEB監控頁面上也可以看到:
轉:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2122273/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Fair Scheduler與Capacity Scheduler介紹AI
- 配置hadoop 使用fair scheduler排程器HadoopAI
- CDH5 Fair scheduler 配置H5AI
- Hadoop Yarn Capacity SchedulerHadoopYarn
- hadoop之旅4-centerOS7: hadoop配置yarn資源管理器HadoopROSYarn
- 大資料 Hadoop介紹、配置與使用大資料Hadoop
- 基於hadoop_yarn的資源隔離配置HadoopYarn
- Hadoop 系列(二)—— 叢集資源管理器 YARNHadoopYarn
- Hadoop 三劍客之 —— 叢集資源管理器 YARNHadoopYarn
- 不可不知的資源管理排程器Hadoop YarnHadoopYarn
- Hadoop2原始碼分析-YARN RPC 示例介紹Hadoop原始碼YarnRPC
- hadoop實戰2-更改指定hostname啟動hadoop,jps介紹,yarn部署,yarn上執行程式HadoopYarn行程
- Hadoop介紹Hadoop
- hadoop實戰3(web管理介面介紹及NN,DN,SNN介紹)HadoopWeb
- Oracle 10g Scheduler 全面介紹Oracle 10g
- Hadoop YarnHadoopYarn
- hadoop之 YARN配置引數剖析—RM與NM相關引數HadoopYarn
- Hadoop Hive介紹HadoopHive
- hadoop家族介紹Hadoop
- LVS介紹與配置
- CCAH-CCA-500-5題:How will the Fair Scheduler handle these two jobs?AI
- 大資料和Hadoop平臺介紹大資料Hadoop
- Hadoop Sqoop介紹Hadoop
- hadoop Capacity Scheduler計算能力排程器配置Hadoop
- 多資料來源配置
- Hadoop框架:HDFS簡介與Shell管理命令Hadoop框架
- 企業計算資源管理利器-GridControl介紹
- Hadoop YARN 架構HadoopYarn架構
- hadoop_MapReduce yarnHadoopYarn
- HADOOP-YARN-JDKHadoopYarnJDK
- hadoop YARN配置引數剖析—MapReduce相關引數HadoopYarn
- 運維管理---開源堡壘機介紹運維
- 多專案管理-資源管理(3)專案管理
- 多專案管理-資源管理(2)專案管理
- 多專案管理-資源管理(1)專案管理
- 大資料以及Hadoop相關概念介紹大資料Hadoop
- hadoop匯入資料工具sqoop介紹Hadoop
- Yarn 生產環境多佇列配置Yarn佇列