国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

主資源公平調(diào)度算法在YARN中應(yīng)用研究

2016-04-14 11:14陳昕劉朝暉
電腦知識(shí)與技術(shù) 2016年5期

陳昕 劉朝暉

摘要:Apache Hadoop YARN是一種新的通用的Hadoop資源管理器,是在Mapreduce1的基礎(chǔ)上發(fā)展起來(lái)的,該引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來(lái)了巨大好處。為此,文章在分析了Hadoop YARN計(jì)算框架的基本結(jié)構(gòu)和工作流程,重點(diǎn)研究了Hadoop YARN中的多資源分配機(jī)制,尤其是主資源公平調(diào)度算法(Dominant Resource Fairness,DRF)在YARN中的應(yīng)用。

關(guān)鍵詞:Hadoop;YARN;資源調(diào)度器;資源分配算法;DRF

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)05-0173-03

1 YARN的基本結(jié)構(gòu)及工作流程

1.1 YARN 基本架構(gòu)

YARN是Hadoop 2.0中的資源管理系統(tǒng),它是在MapReduce的基礎(chǔ)上發(fā)展起來(lái)的,與MapReduce不同的是,MapReduce有一個(gè)全局的管理器JobTracker,而YARN將JobTracker的功能拆分開(kāi)來(lái),成為了兩個(gè)獨(dú)立的管理器ResourceManager和 ApplicationMaster。ResourceManager負(fù)責(zé)全局的資源管理, ResourceManager負(fù)責(zé)單個(gè)應(yīng)用程序的管理。

1.2 YARN基本組成結(jié)構(gòu)

和MRv1一樣,YARN也是Master/Slave結(jié)構(gòu),不過(guò)在YARN中有一個(gè)ResourceManager作為Master負(fù)責(zé)對(duì)各個(gè)Slave(NodeManager)上的資源進(jìn)行統(tǒng)一的管理和調(diào)度。用戶提交的應(yīng)用程序需要提供一個(gè)ApplicationMaster跟蹤和管理這個(gè)程序,它將向ResourceManager申請(qǐng)資源,之后會(huì)啟動(dòng)NodeManager任務(wù)。本小節(jié)我們將介紹YARN的基本組成結(jié)構(gòu)。

1.2.1 ResourceManager(RM)

ResourceManager作為Hadoop全局的資源管理器,主要是負(fù)責(zé)YARN的資源管理和分配。它由兩個(gè)組件構(gòu)成:調(diào)度器(Scheduler)和應(yīng)用程序管理器(Applications Manager,ASM)。

1)調(diào)度器

調(diào)度器和MRv1的一樣,可以根據(jù)多種限制條件(如容量、隊(duì)列等),將資源分配給系統(tǒng)中各個(gè)正在運(yùn)行的應(yīng)用程序。該調(diào)度器不從事任何與具體應(yīng)用程序相關(guān)的工作(如監(jiān)控或者跟蹤應(yīng)用的執(zhí)行狀態(tài)、重新啟動(dòng)因應(yīng)用執(zhí)行失敗或者硬件故障而產(chǎn)生的失敗任務(wù)),這些都由應(yīng)用程序相關(guān)的ApplicationMaster完成。當(dāng)應(yīng)用程序需求資源時(shí),調(diào)度器會(huì)將資源分配單位被抽象成一個(gè)“資源容器”(Resource Container,簡(jiǎn)稱Container)分配出去。此外,調(diào)度器是可插拔的,同時(shí)用戶只要實(shí)現(xiàn)了Hadoop提供的接口就可以實(shí)現(xiàn)自己的調(diào)度器。YARN也實(shí)現(xiàn)了多種直接可調(diào)用的調(diào)度器,比如公平調(diào)度器(Fair Scheduler)[1]和計(jì)算能力調(diào)度器(Capacity Scheduler)[2]等。

2)應(yīng)用程序管理器(Applications Manager,ASM)

Applications Manager是一個(gè)管理整個(gè)系統(tǒng)中所有應(yīng)用程序的管理器,主要功能包括提交應(yīng)用程序、與調(diào)度器協(xié)商資源以啟動(dòng)ApplicationMaster、監(jiān)控ApplicationMaster等。

1.2.2 ApplicationMaster(AM)

用戶提交的每個(gè)應(yīng)用程序均包含1個(gè)ApplicationMaster,主要負(fù)責(zé):1)與ResourceManager調(diào)度器協(xié)商以獲取資源(用Container表示),2)將任務(wù)分配給內(nèi)部的任務(wù),3)啟動(dòng)/停止任務(wù)、監(jiān)控所有任務(wù)運(yùn)行狀態(tài),若任務(wù)失敗則重啟任務(wù)。

1.2.3 NodeManager(NM)

NodeManager是每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器,主要負(fù)責(zé):1)定時(shí)地通過(guò)心跳的方式向ResourceManager匯報(bào)本節(jié)點(diǎn)上的資源使用情況和各個(gè)Container的運(yùn)行狀態(tài);2)它接收并處理來(lái)自ApplicationMaster的Container啟動(dòng)/停止等各種請(qǐng)求。

1.2.4 Container

YARN中對(duì)資源抽象是用Container表示的,包括內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等多維度的資源都進(jìn)行了封裝,當(dāng)ApplicationMaster向ResourceManager申請(qǐng)資源時(shí),ResourceManager為ApplicationMaster返回的資源便是用 Container表示的。每個(gè)任務(wù)都會(huì)被分配一個(gè)Container,且該任務(wù)只能使用該Container中的資源,與MRv1中的slot不同的是,Container是一個(gè)動(dòng)態(tài)資源劃分單位,可以根據(jù)應(yīng)用程序的需求動(dòng)態(tài)生成的。目前YARN采用了DRF算法支持多維度的調(diào)度,不過(guò)目前僅支持CPU和內(nèi)存兩種資源,同時(shí)使用輕量級(jí)資源隔離機(jī)制進(jìn)行資源隔離。

1.3 YARN工作流程

當(dāng)用戶向YARN中提交一個(gè)應(yīng)用程序后,YARN將分兩個(gè)階段運(yùn)行該應(yīng)用程序:

階段1:?jiǎn)?dòng)ApplicationMaster;

階段2: ApplicationMaster創(chuàng)建應(yīng)用程序,為應(yīng)用程序申請(qǐng)資源,在程序運(yùn)行完成前都監(jiān)控它的整個(gè)運(yùn)行過(guò)程。

步驟1 首先需要用戶向YARN中提交應(yīng)用程序,這個(gè)其中包括了ApplicationMaster程序、ApplicationMaster的啟動(dòng)命令、用戶程序等。

步驟2 ResourceManager為該應(yīng)用程序分配第一個(gè)Container,并與對(duì)應(yīng)的NodeManager通信,要求它在這個(gè)Container中啟動(dòng)應(yīng)用程序的ApplicationMaster。

步驟3 ApplicationMaster啟動(dòng)后,先要向ResourceManager注冊(cè),注冊(cè)成功后用戶可以直接通過(guò)ResourceManager查看應(yīng)用程序的運(yùn)行狀態(tài),然后ResourceManager將為各個(gè)任務(wù)申請(qǐng)資源,并監(jiān)控它的運(yùn)行狀態(tài),直到運(yùn)行結(jié)束,即重復(fù)步驟4~7。

步驟4 在RPC協(xié)議的基礎(chǔ)上,ApplicationMaster采用輪詢的方式向ResourceManager申請(qǐng)和領(lǐng)取資源。

步驟5 ApplicationMaster申請(qǐng)到資源后,便與對(duì)應(yīng)的NodeManager通信,要求它啟動(dòng)任務(wù)。

步驟6 NodeManager為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量、JAR包、二進(jìn)制程序等)后,將任務(wù)啟動(dòng)命令寫到一個(gè)腳本中,并通過(guò)運(yùn)行該腳本啟動(dòng)任務(wù)。

步驟7 各個(gè)任務(wù)通過(guò)RPC協(xié)議向ApplicationMaster匯報(bào)自己的狀態(tài)和進(jìn)度,這樣ApplicationMaster就可以隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài),當(dāng)任務(wù)失敗時(shí)可以重新啟動(dòng)任務(wù)。在應(yīng)用程序運(yùn)行過(guò)程中,用戶也可隨時(shí)通過(guò)RPC向ApplicationMaster查詢應(yīng)用程序的當(dāng)前運(yùn)行狀態(tài)。

步驟8 應(yīng)用程序運(yùn)行完成后,ApplicationMaster向ResourceManager注銷并關(guān)閉自己[3]。

2 YARN的資源分配算法

資源調(diào)度機(jī)制是YARN資源調(diào)度器的核心。YARN資源調(diào)度器采用了多種調(diào)度機(jī)制,主要包括:雙層資源調(diào)度機(jī)制、層級(jí)隊(duì)列管理機(jī)制、資源保證和資源搶占機(jī)制。其中雙層資源調(diào)度機(jī)制是其核心,是YARN進(jìn)行資源分配的總體架構(gòu);層級(jí)隊(duì)列管理機(jī)制是YARN對(duì)上層資源分配隊(duì)列的管理方式;資源保證和資源搶占機(jī)制是YARN保證任務(wù)資源需求的機(jī)制[4]。在為了支持多維度的資源調(diào)度,YARN的資源調(diào)度器采用了主資源公平調(diào)度算法(Dominant Resource Fairness ,DRF)。該算法擴(kuò)展了最大最小公平算法(max-min fairness),使其能夠支持多維資源的調(diào)度。

2.1 最大最小公平策略(max-min fairness)介紹

在共享的計(jì)算機(jī)系統(tǒng)中,資源分配是一個(gè)重要的組成部分。最通用的分配策略是最大最小公平策略(max-min fairness),這種策略會(huì)最大化系統(tǒng)中一個(gè)用戶收到的最小分配,在不考慮權(quán)重的情況下,這種策略每一輪會(huì)給予每個(gè)用戶一份均等的資源。一般意義的max-min fairness是包含權(quán)重的,每一輪用戶可以獲得與它的權(quán)重對(duì)應(yīng)的資源比例。加權(quán)max-min fairness的更具有一般性并且能提供性能隔離的能力。加權(quán)max-min fairness模型也可以支撐許多其他資源分配策略,包括優(yōu)先級(jí)、deadline based allocation等。鑒于這些特征,max-min fairness已經(jīng)被很多算法實(shí)現(xiàn),如round-robin、proportional resource sharing、weighted fair queueing[5]。在不同的場(chǎng)景中,這些算法都被大量的實(shí)現(xiàn),比如鏈路帶寬、CPU、內(nèi)存、存儲(chǔ)等。雖然該策略已經(jīng)被多方面應(yīng)用,但目前為止主要還是集中在單資源類型的場(chǎng)景下。

實(shí)際上,由于一般意義上的max-min fairness是加權(quán)的,所以假設(shè)有A,B,C,D四個(gè)用戶,權(quán)值分別為x,y, z,f。需求分別為a,b,c,d??傎Y源為e。我們可以多輪的分配資源。每一輪給用戶分別分配e*j/(x+y+z+f)單位的資源(j代表用戶相應(yīng)權(quán)值)。若用戶這一輪已經(jīng)超出需求,則下一輪不分配,并且多出的資源留給下一輪作為總資源的一部分。這樣直到所有資源分配完畢。

2.2 DRF算法

DRF是一種通用的多資源的max-min fairness分配策略。在DRF算法中,所需份額最大的資源叫做主資源,然后將max-min fairness應(yīng)用在主資源上,這樣多維度的資源調(diào)度就變?yōu)榱藛我毁Y源的調(diào)度的問(wèn)題,因?yàn)殡S著調(diào)度的進(jìn)行,每個(gè)資源的份額都在變化,選擇的主資源也在變化。舉個(gè)例子,有兩個(gè)用戶A、B,A是計(jì)算密集型的,B是I/O密集型的,DRF在分配資源的時(shí)候會(huì)盡量的使得用戶A的CPU資源份額和用戶B的I/O資源份額比較均衡。

2.3 DRF計(jì)算方式

假設(shè)有兩個(gè)用戶,用戶A、B,系統(tǒng)的CPU和內(nèi)存分別為9、18GB.用戶A每次都請(qǐng)求(1CPU,4GB)資源;用戶B每次都請(qǐng)求(3CPU,4GB)資源。在這種情況下,如何均衡的分配資源?

在這個(gè)例子中,由于用戶A的CPU占總CPU 1/9,RAM占總RAM的 2/9,而用戶B的CPU占1/3,RAM占2/9,所以A的主資源為內(nèi)存,B的主資源為CPU?;谶@點(diǎn),DRF會(huì)最大化A的內(nèi)存的最小化分配,并會(huì)最大化B的CPU的最小分配。這就是DRF的分配策略。

3 結(jié)束語(yǔ)

在Hadoop中,YARN是其核心部分,而在YARN架構(gòu)中,資源調(diào)度又是重中之重?,F(xiàn)今YARN架構(gòu)中實(shí)現(xiàn)的多資源調(diào)度是基于DRF算法的,充分的研究DRF的原理和在YARN實(shí)現(xiàn),有助于我們部署平臺(tái)和性能優(yōu)化,還有助于我們發(fā)現(xiàn)其不足,為今后的多資源調(diào)度研究打下堅(jiān)實(shí)基礎(chǔ)。

參考文獻(xiàn):

[1] Hadoop Capacity Scheduler[EB/OL].(2015-01-07). http://Hadoop.apache.org/commom/docs/r2.2.0/capacity_scheduler.html.

[2] Hadoop Fair Scheduler[EB/OL].(2015-01-07). http://Hadoop.apache.org/commom/docs/r2.2.0/fair_schduler.html.

[3] 董春濤, 李文婷, 沈晴霓, 等. Hadoop YARN大數(shù)據(jù)計(jì)算框架及其資源調(diào)度機(jī)制研究[J]. 信息通信技術(shù), 2015(1): 77-84.

[4] 董西成. Hadoop技術(shù)內(nèi)幕 深入解析YARN架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M]. 北京: 機(jī)械工業(yè)出版社,2014.

[5] Ali Ghodsi, Matei Zaharia, Benjamin Hindman.Dominant Resource Fairness:Fair Allocation of Multiple Resource Types[R]. Technical Report No.UCB/EECS-2011-18, 2011.

高要市| 乐东| 读书| 永仁县| 潜山县| 桑日县| 阜宁县| 江口县| 塔城市| 逊克县| 莱芜市| 旺苍县| 会泽县| 六枝特区| 哈巴河县| 桓仁| 平定县| 故城县| 花莲县| 资中县| 柳河县| 泽州县| 宜川县| 阳山县| 巴林左旗| 高台县| 都匀市| 闵行区| 中江县| 龙井市| 中宁县| 兴城市| 博白县| 民乐县| 嘉义市| 伽师县| 大名县| 商都县| 康马县| 湖北省| 汪清县|