簡(jiǎn)巖 楊道平
摘 要:文章詳細(xì)介紹了Hadoop Yarn框架及Hadoop調(diào)度,并分析了Yarn框架下的標(biāo)簽調(diào)度(Label based scheduling)策略,以實(shí)例方式詳細(xì)介紹了標(biāo)簽調(diào)度的應(yīng)用場(chǎng)合和使用方法。該文的方法對(duì)基于Hadoop Yarn框架下的大數(shù)據(jù)處理平臺(tái)配置,特別是異構(gòu)環(huán)境中的平臺(tái)優(yōu)化有一定的參考意義。
關(guān)鍵詞:大數(shù)據(jù);框架;標(biāo)簽調(diào)度
中圖分類(lèi)號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2015)15-0072-01
1 概 述
在Hadoop0.20版本推出之后,Hadoop開(kāi)源社區(qū)開(kāi)始設(shè)計(jì)全新構(gòu)架的新一代Hadoop系統(tǒng),該版本后演化為Hadoop2.0版本,即新一代的Hadoop系統(tǒng)YARN。
YARN構(gòu)架將主控節(jié)點(diǎn)的資源管理和作業(yè)管理功能分離設(shè)置,引入了全局資源管理器(Resource Manager)和針對(duì)每個(gè)作業(yè)的應(yīng)用主控管理器(Application Master)。在最新的Hadoop 2.6.0版本中,YARN引入了一種新的調(diào)度策略:基于標(biāo)簽的調(diào)度機(jī)制。該機(jī)制的主要引入動(dòng)機(jī)是更好地讓YARN運(yùn)行在異構(gòu)集群中,進(jìn)而更好地管理和調(diào)度混合類(lèi)型的應(yīng)用程序,本文即嘗試如何使用標(biāo)簽調(diào)度展開(kāi)討論。
2 Hadoop Yarn框架介紹
新的Hadoop MapReduce框架命名為MapReduceV2或者叫 Yarn。重構(gòu)根本的思想是將JobTracker兩個(gè)主要的功能分離成單獨(dú)的組件,這兩個(gè)功能是資源管理和任務(wù)調(diào)度/監(jiān)控。新的資源管理器全局管理所有應(yīng)用程序計(jì)算資源的分配,每一個(gè)應(yīng)用的ApplicationMaster負(fù)責(zé)相應(yīng)的調(diào)度和協(xié)調(diào)。一個(gè)應(yīng)用程序無(wú)非是一個(gè)單獨(dú)的傳統(tǒng)的MapReduce任務(wù)或者是一個(gè)DAG(有向無(wú)環(huán)圖)任務(wù)。ResourceManager和每一臺(tái)機(jī)器的節(jié)點(diǎn)管理服務(wù)器能夠管理用戶在那臺(tái)機(jī)器上的進(jìn)程并能對(duì)計(jì)算進(jìn)行組織。每一個(gè)應(yīng)用的ApplicationMaster的職責(zé)有:向調(diào)度器索要適當(dāng)?shù)馁Y源容器運(yùn)行任務(wù),跟蹤應(yīng)用程序的狀態(tài)和監(jiān)控它們的進(jìn)程,處理任務(wù)的失敗原因。
3 Hadoop常用調(diào)度器
為了更好地理解標(biāo)簽調(diào)度技術(shù),有必要回顧一下Hadoop常用的調(diào)度器。
3.1 默認(rèn)的調(diào)度器FIFO
最早的Hadoop Map/Reduce 計(jì)算架構(gòu)中,JobTracker 在進(jìn)行作業(yè)調(diào)度時(shí)使用的FIFO(First In First Out)算法,其優(yōu)點(diǎn)是調(diào)度算法簡(jiǎn)單明了,JobTracker工作負(fù)擔(dān)輕。
3.2 公平份額調(diào)度算法(Fair Scheduler)
Fair Scheduler是由Facebook公司提出的,設(shè)計(jì)思想是,盡可能保證所有的作業(yè)都能夠獲得等量的資源份額,F(xiàn)air Scheduler考慮了作業(yè)用戶的“公平性”。
3.3 計(jì)算能力調(diào)度器(Capacity Scheduler)
Capacity Scheduler能有效的對(duì)hadoop集群的內(nèi)存資源進(jìn)行管理,以支持內(nèi)存密集型應(yīng)用。作業(yè)對(duì)內(nèi)存資源需求高時(shí),調(diào)度算法將把該作業(yè)的相關(guān)任務(wù)分配到內(nèi)存資源充足的節(jié)點(diǎn)上。在hadoop自帶的調(diào)度器中,Capacity Scheduler支持標(biāo)簽調(diào)度,F(xiàn)IFO Scheduler和Fair Scheduler尚不支持。
4 Label based scheduling應(yīng)用
Label based scheduling是一種調(diào)度策略,就像priority-based scheduling一樣,是調(diào)度器調(diào)度眾多調(diào)度策略中的一種,可以跟其他調(diào)度策略混合使用,下面以實(shí)例說(shuō)明。
不失一般性,假設(shè)有30個(gè)以上的節(jié)點(diǎn),各節(jié)點(diǎn)硬件配置和網(wǎng)絡(luò)部署如表一所示,其中:HighCPU組10個(gè)節(jié)點(diǎn),各節(jié)點(diǎn)CPU運(yùn)算能力較強(qiáng),適合計(jì)算密集型任務(wù);HighMEM組10個(gè)節(jié)點(diǎn),計(jì)算能力普通,但各節(jié)點(diǎn)內(nèi)存較高,適合內(nèi)存密集型任務(wù);HighIO組10個(gè)節(jié)點(diǎn),計(jì)算能力和內(nèi)存配置普通,但使用了IB高性能網(wǎng)絡(luò),網(wǎng)絡(luò)交換能力較強(qiáng),適合IO密集型任務(wù)。
假設(shè)公司運(yùn)行的任務(wù)類(lèi)型有三類(lèi),一類(lèi)是普通的Hadoop應(yīng)用,一類(lèi)是運(yùn)行高內(nèi)存需求應(yīng)用,一類(lèi)是高IO的應(yīng)用。
首先,用Normal、HighgCPU、Highmem、HighIO表示分配標(biāo)簽名,需要為三類(lèi)節(jié)點(diǎn)創(chuàng)建相應(yīng)的標(biāo)簽,方法如下:
修改capacity scheduler相關(guān)配置,設(shè)置每個(gè)隊(duì)列對(duì)應(yīng)的label,以及每中l(wèi)abel的資源上下限。根據(jù)規(guī)劃,應(yīng)創(chuàng)建四個(gè)隊(duì)列,假設(shè)為queue1、queue2、queue3、queue4,其中queue1隊(duì)列可使用的標(biāo)簽是Normal和HighgCPU、Highmem、HighIO,queue2隊(duì)列可使用的標(biāo)簽是HighCPU,queue3隊(duì)列可使用的標(biāo)簽是HighMEM,queue4隊(duì)列可使用的標(biāo)簽是HighIO,并配置四個(gè)隊(duì)列的capacity和maxcapacity。
之后按照以下步驟操作:
步驟1:添加系統(tǒng)級(jí)別的label(相當(dāng)于所有l(wèi)abel的全集),注意各個(gè)節(jié)點(diǎn)上的label必須都在系統(tǒng)級(jí)別的label中。
yarn rmadmin-addToClusterNodeLabels Normal,HighCPU,HighMeM,HighIO
步驟2:為各個(gè)節(jié)點(diǎn)分別添加label(可動(dòng)態(tài)修改)。
yarn rmadmin -replaceLabelsOnNode“nodeId,Normal,High-
CPU,HighMeM,HighIO”
注意,nodeId是nodemanager的唯一標(biāo)示,注意一個(gè)節(jié)點(diǎn)上可以有多個(gè)nodemanager,每個(gè)nodemanager的nodeid可以在ResourceManager界面上看到,通常有host和PRC port拼接而成,默認(rèn)情況下,各個(gè)nodemanager的RPC port是隨機(jī)選取的,你可以將所有的nodemanager配置成一樣的,便于管理:
步驟3:配置label重啟恢復(fù)功能。這樣,label信息會(huì)保存到hdfs上(默認(rèn)是保存在內(nèi)存中的),之后Yarn重新啟動(dòng),可以自動(dòng)恢復(fù)所有l(wèi)abel信息:
nodelabels.RMNodeLabelsManager
5 結(jié) 語(yǔ)
本文詳細(xì)介紹本文詳細(xì)介紹了Hadoop Yarn框架下的標(biāo)簽調(diào)度(Label based scheduling)策略,并介紹了使用方法,但對(duì)異構(gòu)環(huán)境中的資源類(lèi)別劃分、任務(wù)類(lèi)別劃分等沒(méi)有作深入的討論,用戶在使用標(biāo)簽調(diào)度時(shí),應(yīng)根據(jù)平臺(tái)的實(shí)際資源狀況作出比較詳細(xì)的分類(lèi),然后根據(jù)各任務(wù)的資源需求建立相對(duì)合理的配置規(guī)劃,只有這樣,才能充分發(fā)揮標(biāo)簽調(diào)度的作用。
參考文獻(xiàn):
[1] 鄧傳華,范通讓?zhuān)叻?Hadoop下基于統(tǒng)計(jì)最優(yōu)的資源調(diào)度算法[J].計(jì)算機(jī)應(yīng)用研究,2013,(2).
[2] 土峰.Hadoop集群作業(yè)的調(diào)度算法[J].程序員,2009,(12).
[3] 高源.云計(jì)算Hadoop平臺(tái)調(diào)度策略研究[J].科海故事博覽,2011,(2).