hadoop job 未跑满资源_Hadoop多用户资源管理–Fair Scheduler介绍与配置
關(guān)鍵字:Hadoop 多用戶、資源、fair scheduler
在一個(gè)公司內(nèi)部的Hadoop Yarn集群,肯定會(huì)被多個(gè)業(yè)務(wù)、多個(gè)用戶同時(shí)使用,共享Yarn的資源,如果不做資源的管理與規(guī)劃,那么整個(gè)Yarn的資源很容易被某一個(gè)用戶提交的Application占滿,其它任務(wù)只能等待,這種當(dāng)然很不合理,我們希望每個(gè)業(yè)務(wù)都有屬于自己的特定資源來運(yùn)行MapReduce任務(wù),Hadoop中提供的公平調(diào)度器–Fair Scheduler,就可以滿足這種需求。
Fair Scheduler將整個(gè)Yarn的可用資源劃分成多個(gè)資源池,每個(gè)資源池中可以配置最小和最大的可用資源(內(nèi)存和CPU)、最大可同時(shí)運(yùn)行Application數(shù)量、權(quán)重、以及可以提交和管理Application的用戶等。
根據(jù)用戶名分配資源池
如圖所示,假設(shè)整個(gè)Yarn集群的可用資源為100vCPU,100GB內(nèi)存,現(xiàn)在為3個(gè)業(yè)務(wù)各自規(guī)劃一個(gè)資源池,另外,規(guī)劃一個(gè)default資源池,用于運(yùn)行其他用戶和業(yè)務(wù)提交的任務(wù)。如果沒有在任務(wù)中指定資源池(通過參數(shù)mapreduce.job.queuename),那么可以配置使用用戶名作為資源池名稱來提交任務(wù),即用戶businessA提交的任務(wù)被分配到資源池businessA中,用戶businessC提交的任務(wù)被分配到資源池businessC中。除了配置的固定用戶,其他用戶提交的任務(wù)將會(huì)被分配到資源池default中。
這里的用戶名,就是提交Application所使用的Linux/Unix用戶名。
另外,每個(gè)資源池可以配置允許提交任務(wù)的用戶名,比如,在資源池businessA中配置了允許用戶businessA和用戶lxw1234提交任務(wù),如果使用用戶lxw1234提交任務(wù),并且在任務(wù)中指定了資源池為businessA,那么也可以正常提交到資源池businessA中。
根據(jù)權(quán)重獲得額外的空閑資源
在每個(gè)資源池的配置項(xiàng)中,有個(gè)weight屬性(默認(rèn)為1),標(biāo)記了資源池的權(quán)重,當(dāng)資源池中有任務(wù)等待,并且集群中有空閑資源時(shí)候,每個(gè)資源池可以根據(jù)權(quán)重獲得不同比例的集群空閑資源。
比如,資源池businessA和businessB的權(quán)重分別為2和1,這兩個(gè)資源池中的資源都已經(jīng)跑滿了,并且還有任務(wù)在排隊(duì),此時(shí)集群中有30個(gè)Container的空閑資源,那么,businessA將會(huì)額外獲得20個(gè)Container的資源,businessB會(huì)額外獲得10個(gè)Container的資源。
最小資源保證
在每個(gè)資源池中,允許配置該資源池的最小資源,這是為了防止把空閑資源共享出去還未回收的時(shí)候,該資源池有任務(wù)需要運(yùn)行時(shí)候的資源保證。
比如,資源池businessA中配置了最小資源為(5vCPU,5GB),那么即使沒有任務(wù)運(yùn)行,Yarn也會(huì)為資源池businessA預(yù)留出最小資源,一旦有任務(wù)需要運(yùn)行,而集群中已經(jīng)沒有其他空閑資源的時(shí)候,這個(gè)最小資源也可以保證資源池businessA中的任務(wù)可以先運(yùn)行起來,隨后再從集群中獲取資源。
動(dòng)態(tài)更新資源配額
Fair Scheduler除了需要在yarn-site.xml文件中啟用和配置之外,還需要一個(gè)XML文件來配置資源池以及配額,而該XML中每個(gè)資源池的配額可以動(dòng)態(tài)更新,之后使用命令:yarn rmadmin –refreshQueues 來使得其生效即可,不用重啟Yarn集群。
需要注意的是:動(dòng)態(tài)更新只支持修改資源池配額,如果是新增或減少資源池,則需要重啟Yarn集群。
Fair Scheduler配置示例
以上面圖中所示的業(yè)務(wù)場景為例。
yarn-site.xml中的配置:
yarn.resourcemanager.scheduler.class
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
yarn.scheduler.fair.allocation.file
/etc/hadoop/conf/fair-scheduler.xml
yarn.scheduler.fair.preemption
true
yarn.scheduler.fair.user-as-default-queue
true
default is True
yarn.scheduler.fair.allow-undeclared-pools
false
default is True
yarn.resourcemanager.scheduler.class
配置Yarn使用的調(diào)度器插件類名;
Fair Scheduler對應(yīng)的是:
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
設(shè)置成true,當(dāng)任務(wù)中未指定資源池的時(shí)候,將以用戶名作為資源池名。這個(gè)配置就實(shí)現(xiàn)了根據(jù)用戶名自動(dòng)分配資源池。
yarn.scheduler.fair.allow-undeclared-pools
是否允許創(chuàng)建未定義的資源池。
如果設(shè)置成true,yarn將會(huì)自動(dòng)創(chuàng)建任務(wù)中指定的未定義過的資源池。設(shè)置成false之后,任務(wù)中指定的未定義的資源池將無效,該任務(wù)會(huì)被分配到default資源池中。
fair-scheduler.xml中的配置:
30
51200mb,50vcores
102400mb,100vcores
100
1.0
fair
10240mb,10vcores
30720mb,30vcores
100
fair
1.0
*
5120mb,5vcores
20480mb,20vcores
100
fair
2.0
businessA,lxw1234 group_businessA,group_lxw1234
businessA,hadoop group_businessA,supergroup
5120mb,5vcores
20480mb,20vcores
100
fair
1
businessB group_businessA
businessA,hadoop group_businessA,supergroup
5120mb,5vcores
20480mb,20vcores
100
fair
1.5
businessC group_businessC
businessC,hadoop group_businessC,supergroup
minResources
最小資源
maxResources
最大資源
maxRunningApps
最大同時(shí)運(yùn)行application數(shù)量
weight
資源池權(quán)重
aclSubmitApps
允許提交任務(wù)的用戶名和組;
格式為: 用戶名 用戶組
當(dāng)有多個(gè)用戶時(shí)候,格式為:用戶名1,用戶名2 用戶名1所屬組,用戶名2所屬組
aclAdministerApps
允許管理任務(wù)的用戶名和組;
格式同上。
Fair Scheduer各資源池配置及使用情況,在ResourceManager的WEB監(jiān)控頁面上也可以看到:
您可以關(guān)注 lxw的大數(shù)據(jù)田地 ,或者 加入郵件列表 ,隨時(shí)接收博客更新的通知郵件。
如果覺得本博客對您有幫助,請 贊助作者 。
總結(jié)
以上是生活随笔為你收集整理的hadoop job 未跑满资源_Hadoop多用户资源管理–Fair Scheduler介绍与配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: broker可以禁用吗 time_Run
- 下一篇: springboot事物注解不生效_Sp