重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
最近一周幾乎都在做關于yarn的資源隔離的事情,也重新看了一下以前看過的關于yarn的書,這次就當是寫寫自己的工作總結吧。
之所以要做資源隔離,是因為現在公司內部有很多團隊都在使用yarn來提交各式各樣的任務,例如hive的mapreduce,spark在yarn上的部署,sqoop導數據等等,為了防止單個任務使用過多資源,而導致整個集群的其他任務不可運行,所以就要使用yarn的資源隔離了。
雖然yarn中,有Capacity Scheduler以及Fair Scheduler這兩種方式來實現資源在不同任務(準確的說應該是隊列)之間的調度,但是個人感覺這兩種分配策略在資源隔離上面真的沒有什么太大的區別,因為兩者都可以對各個隊列限制使用的大最小資源;而且也可將現有資源劃分為不同的隊列,每個應用只在特定的隊列提交。當然對于隊列內部任務之間的資源隔離,Fair Scheduler支持的方式多了一種FIFO策略,由于公司使用的hadoop默認使用Fair Scheduler,所以最后還是使用的Fair策略。下面大概講一下自己是怎么做的吧。
step1:針對不同的開發團隊,建立不同的用戶,就比如下面的截圖,針對兩個group分別建立了group1以及group2這兩個用戶:
step2:修改權限
這里的權限包括hadoop權限、hdfs權限,這就要根據自己的實際情況來看了;
step3:修改yarn-site.xml
主要修改了以下幾個參數
yarn.resourcemanager.scheduler.class:配置使用哪種Scheduler,由于使用的是FairScheduler,所以設置為org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
yarn.scheduler.fair.allocation.file:指定分配策略文件路徑
yarn.scheduler.fair.preemption:是否支持隊列之間的資源搶占,雖然設置為false,但是還是多多少少會出現繁忙隊列搶占了一點空閑隊列資源的現象
關于yarn-site的配置參數還有很多,大家可以在網上找找;
step4:編寫fair scheduler的具體配置文件,在自己測試的時候,大概如下面的截圖
首先簡單介紹一下,yarn中資源是按照隊列(或者說是資源池)來分配的,隊列有自己的子隊列,而root隊列就像java中的Object隊列一樣(如果沒有設置,所有應用向root.default隊列提交應用),是所有隊列的父隊列。在上面的配置文件中,這對group1隊列定義了如下規則:
1.group1以及group2這兩個root隊列的子隊列(這里隊列命名跟用戶命名一樣);
2.group1隊列最少保留10G內存、10個cpu內核,最多使用15G內存、15個cpu內核;
3.隊列內的應用才用公平的調度策略分配資源,最多可以在group1內運行50個應用;
4.只有group1以及hadoop用戶可以向group1隊列提交應用;
5.只用hadoop用戶可以管理group1隊列(即只有hadoop可以kill這上面的應用)。
step5:重啟yarn
最后通過spark-shell --master yarn --num-executors --executor-memory --queue測試,發現的確可以做到資源隔離,達到如下效果:
1.group1用戶只能向group1隊列提交應用,而且即使使用資源大于大值,也只是會略微超過一點點,不會超過很多(有興趣的朋友可以自己試試);
2.group1用戶是不能向group2隊列提交任務的;
3.hadoop用戶還是可以向group1、group2、default三個隊列提交任務,這樣可以保證系統有個類似root用戶的角色。
但是發現沒能實現acl的功能,即無論是hadoop、group1、group2還是任何可以執行yarn命令的用戶都可以通過yarn application -kill殺死任何隊列上的程序。多次參考書本以及官網,但是仍然沒有成功,最后不得已,只能說是控制yarn命令的權限為700,只讓hadoop用戶可以執行這個命令,希望以后可以找出更好地解決方案。
2017年1月7日
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。