摘 要: Hadoop分布式文件系統(tǒng)默認(rèn)采用三副本策略實(shí)現(xiàn)較為簡(jiǎn)單,,未對(duì)數(shù)據(jù)節(jié)點(diǎn)負(fù)載進(jìn)行充分考慮。為了改善HDFS中集群負(fù)載的均衡性,,提高數(shù)據(jù)節(jié)點(diǎn)的資源利用率,,提出一種優(yōu)化的副本放置策略。該策略綜合考慮數(shù)據(jù)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載信息和工作進(jìn)程數(shù),,選擇負(fù)載最小的節(jié)點(diǎn)存放數(shù)據(jù),。實(shí)驗(yàn)結(jié)果表明,與默認(rèn)策略相比,,優(yōu)化的Hadoop副本放置策略能使副本分布更加合理,,集群的均衡性更加良好,并能減少數(shù)據(jù)上傳響應(yīng)時(shí)間,。
關(guān)鍵詞: Hadoop,;副本放置;實(shí)時(shí)負(fù)載,;負(fù)載均衡
0 引言
HDFS副本放置策略設(shè)計(jì)是基于節(jié)點(diǎn)硬件性能同構(gòu)的基礎(chǔ)之上,,其采用三副本冗余機(jī)制保證數(shù)據(jù)的安全性。整體的副本存儲(chǔ)策略如圖1所示,。HDFS整體的副本放置策略的原則為:盡最大可能將其中兩個(gè)數(shù)據(jù)塊副本存儲(chǔ)在一個(gè)機(jī)架上,,將另一個(gè)數(shù)據(jù)塊副本存儲(chǔ)在另一個(gè)機(jī)架上,很好地在帶寬資源及可靠性方面做了平衡[1],。然而默認(rèn)副本放置策略具有一定的局限性,,已有不少的研究致力于優(yōu)化Hadoop的數(shù)據(jù)塊副本放置策略。參考文獻(xiàn)[2]從數(shù)據(jù)塊熱度的角度出發(fā),,讓經(jīng)常使用的數(shù)據(jù)塊擁有更多的副本以達(dá)到更高的并行處理效率,。參考文獻(xiàn)[3]將數(shù)據(jù)塊副本更多地放置在性能較好的節(jié)點(diǎn)上,有效提升mapreduce的性能,。參考文獻(xiàn)[4]從節(jié)點(diǎn)的網(wǎng)絡(luò)距離和節(jié)點(diǎn)負(fù)載兩方面進(jìn)行考慮,,為HDFS的遠(yuǎn)程數(shù)據(jù)副本選擇最優(yōu)的存儲(chǔ)位置。參考文獻(xiàn)[5]則優(yōu)先讓使用率低的節(jié)點(diǎn)被選中作為存儲(chǔ)節(jié)點(diǎn),。受這些研究工作的啟發(fā),,本文提出一種優(yōu)化的Hadoop副本放置策略旨在提高集群節(jié)點(diǎn)負(fù)載的均衡性,最終達(dá)到提升數(shù)據(jù)傳輸效率的目的。
1 HDFS副本放置優(yōu)化策略
1.1 HDFS副本放置策略的局限性
默認(rèn)HDFS副本放置策略的局限性主要體現(xiàn)如下:在選取副本存儲(chǔ)節(jié)點(diǎn)時(shí)采用了隨機(jī)方式,,HDFS雖然也考慮了數(shù)據(jù)節(jié)點(diǎn)的工作接連數(shù)的負(fù)載信息,,但相對(duì)簡(jiǎn)單,并且是在隨機(jī)選取存儲(chǔ)節(jié)點(diǎn)之后才做出判斷,。這樣的副本放置方式將導(dǎo)致副本的分布隨意性大,,特別在異構(gòu)環(huán)境中很有可能出現(xiàn)分配較多數(shù)據(jù)副本的節(jié)點(diǎn)是性能較差的節(jié)點(diǎn),這些情況將進(jìn)一步造成有些節(jié)點(diǎn)具有很高的負(fù)載,,有些節(jié)點(diǎn)卻處于空閑狀態(tài)造成數(shù)據(jù)傳輸效率的下降,。
1.2 優(yōu)化HDFS副本放置策略
從1.1節(jié)的分析可以看出,在默認(rèn)策略中,,名字節(jié)點(diǎn)對(duì)于數(shù)據(jù)節(jié)點(diǎn)的狀態(tài)信息缺乏感知,,無(wú)法做出更為精確的副本位置選取工作。為此,,本文的優(yōu)化策略將重點(diǎn)考慮如下兩個(gè)評(píng)價(jià)指標(biāo),,增加名字節(jié)點(diǎn)副本放置節(jié)點(diǎn)選取的準(zhǔn)確性、合理性,。
?。?)節(jié)點(diǎn)實(shí)時(shí)負(fù)載:實(shí)時(shí)負(fù)載W由數(shù)據(jù)節(jié)點(diǎn)的多個(gè)指標(biāo)衡量,分別為磁盤(pán)IO負(fù)載,、內(nèi)存負(fù)載,、CPU負(fù)載、網(wǎng)絡(luò)負(fù)載,。W的計(jì)算公式為:
W=λio×wio+λmem×wmem+λcpu×wcpu+λband×wband
其中,,wio、wmem,、wcpu,、wband分別代表了磁盤(pán)IO負(fù)載、內(nèi)存負(fù)載,、CPU負(fù)載,、網(wǎng)絡(luò)負(fù)載;λio,、λmem,、λcpu、λband則代表了衡量節(jié)點(diǎn)工作負(fù)載時(shí)的節(jié)點(diǎn)磁盤(pán),、內(nèi)存,、CPU、網(wǎng)絡(luò)帶寬所占的比重,,λio+λmem+λcpu+λband=1,,λio,、λmem、λcpu,、λband∈[0,,1]。權(quán)值的選取采用運(yùn)籌學(xué)中的層次分析法(Analytic Hierarchy Process,,AHP)來(lái)確定。該方法適用于難以定量分析的決策性問(wèn)題,。
?。?)HDFS工作進(jìn)程:即數(shù)據(jù)節(jié)點(diǎn)HDFS寫(xiě)入、讀取等工作的連接數(shù),。由于這些負(fù)載都是比值的關(guān)系,,在異構(gòu)環(huán)境下有些節(jié)點(diǎn)可能由于性能較好,其某些實(shí)時(shí)負(fù)載處于較低水平,,在節(jié)點(diǎn)性能嚴(yán)重不均衡時(shí)將導(dǎo)致集群大量副本存儲(chǔ)在個(gè)別高性能節(jié)點(diǎn)上,。該負(fù)載信息能控制一個(gè)數(shù)據(jù)節(jié)點(diǎn)上進(jìn)行的HDFS工作進(jìn)程,抑制某個(gè)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行過(guò)多的HDFS服務(wù),。
依據(jù)上述兩個(gè)指標(biāo),,某數(shù)據(jù)副本放置位置的選取的主要思想是:從指定的機(jī)架位置上隨機(jī)選取一定數(shù)量的數(shù)據(jù)節(jié)點(diǎn)集,然后從該集合中進(jìn)一步選取工作連接數(shù)低于集群平均工作連接數(shù)的數(shù)據(jù)節(jié)點(diǎn)集合,,最后在該集合中選擇實(shí)時(shí)負(fù)載最小的節(jié)點(diǎn)作為副本位置放置節(jié)點(diǎn),。為方便下面的描述,該思想標(biāo)記為算法1,。
整體上副本放置位置的選取依然遵循將副本盡量放在不同機(jī)架上以保證可靠性的原則,,從最常見(jiàn)的3副本方案出發(fā),其整體副本選取方案如下:
While還需選取的副本數(shù)>0
if第一副本選取then
if客戶端節(jié)點(diǎn)是數(shù)據(jù)節(jié)點(diǎn)then
選擇該節(jié)點(diǎn)
else通過(guò)指定所有集群機(jī)架通過(guò)算法1去選取節(jié)點(diǎn)
else if第二副本選取then
指定除去第一副本所在機(jī)架外的所有機(jī)架通過(guò)算法1去選取節(jié)點(diǎn)
else if第三副本選取then
if第一,、二副本所在節(jié)點(diǎn)在同一機(jī)架then
指定除去第二副本所在機(jī)架外的所有機(jī)架通過(guò)算法1去選取節(jié)點(diǎn)
else指定第二副本所在機(jī)架通過(guò)算法1去選取節(jié)點(diǎn)
1.3 層次分析法的權(quán)值確定工作
美國(guó)運(yùn)籌學(xué)家Saaty教授提出的層次分析法是多屬性決策中的重要方法[6],。對(duì)于存在多個(gè)影響指標(biāo)的情況,,評(píng)價(jià)各方案的優(yōu)劣程度的這類問(wèn)題可以使用AHP方法來(lái)解決。AHP方法的思想是把復(fù)雜問(wèn)題中的各種因素進(jìn)行分層,,分層是有次序的,層次之間也是有聯(lián)系的,,將每個(gè)層次的元素兩兩比較,,并定量描述它們的相對(duì)重要性。最后使用數(shù)學(xué)方法計(jì)算權(quán)值,,用權(quán)值反映每一層次元素的相對(duì)重要性次序,。
本文從實(shí)時(shí)負(fù)載的實(shí)際情況出發(fā)進(jìn)行建模,如圖2所示,。
對(duì)準(zhǔn)則層的各個(gè)因素進(jìn)行兩兩對(duì)比,,構(gòu)建判斷矩陣,,如表1所示。
對(duì)表1構(gòu)成的判斷矩陣通過(guò)合法的計(jì)算方式,,求取其最大特征根λmax和歸一化的特征向量W,。得到λmax= 4.119,W=(0153,,0.072,,0.531,0.245)T,,最后進(jìn)行判斷矩陣一致性檢驗(yàn),,發(fā)現(xiàn)其誤差值0.044小于閾值0.10,即通過(guò)判斷矩陣的一致性檢驗(yàn),,因此特征向量W的值是合理的,,最終實(shí)時(shí)負(fù)載的權(quán)值確定為:λcpu=0.153、λmem=0.072,、λio=0.531,、λband=0.245。
2 實(shí)驗(yàn)與分析
優(yōu)化的HDFS副本放置策略的實(shí)驗(yàn)基于Hadoop-1.0.0,。集群中存在兩種性能不同的計(jì)算機(jī)節(jié)點(diǎn),,分別標(biāo)識(shí)為性能A節(jié)點(diǎn)和性能B節(jié)點(diǎn),其中A節(jié)點(diǎn)的主要硬件配置為:3.30 GHz的Inter(R)Core(TM)i3-3220 CPU,, 2 GB DDR3的內(nèi)存,,7 200 rpm的500 GB硬盤(pán);B節(jié)點(diǎn)的主要硬件配置為:2.93 GHz的Inter(R)Core(TM)2Duo(E7500)CPU,,2 GB DDR3的內(nèi)存,,4 500 rpm的500 GB硬盤(pán)。整個(gè)集群由1個(gè)機(jī)架組成,,集群配置成1個(gè)名字節(jié)點(diǎn),、8個(gè)數(shù)據(jù)節(jié)點(diǎn)和1個(gè)客戶端的形式。其中性能A的數(shù)據(jù)節(jié)點(diǎn)編號(hào)為1,、2,、7、8,,性能B的數(shù)據(jù)節(jié)點(diǎn)編號(hào)為3,、4、5,、6,。實(shí)驗(yàn)中涉及的數(shù)據(jù)讀寫(xiě)操作均通過(guò)客戶端發(fā)出。
圖3和圖4分別展示了在默認(rèn)策略和優(yōu)化策略下通過(guò)客戶端寫(xiě)入1 000個(gè)數(shù)據(jù)塊時(shí)的副本分布情況,。從圖3可以看出,,在默認(rèn)策略下,,副本放置位置是通過(guò)隨機(jī)算法獲取的,因此副本的分布顯得較為隨意,,波動(dòng)性也比較大,。副本的分布不具目的性,例如數(shù)據(jù)節(jié)點(diǎn)1和數(shù)據(jù)節(jié)點(diǎn)5,,通過(guò)實(shí)驗(yàn)配置可知數(shù)據(jù)節(jié)點(diǎn)1在性能上比數(shù)據(jù)節(jié)點(diǎn)5要更優(yōu)越,,然而數(shù)據(jù)節(jié)點(diǎn)1卻比數(shù)據(jù)節(jié)點(diǎn)5少存儲(chǔ)了100多個(gè)副本,這樣的分布顯然不太合理,。而優(yōu)化策略下,,副本的分布顯然更具目的性。如圖4所示,,性能更好的1,、2,、7,、8數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)的副本總量要多于性能較差的3、4,、5,、6數(shù)據(jù)節(jié)點(diǎn)。這是由于考慮了實(shí)時(shí)負(fù)載,,性能更好的節(jié)點(diǎn)其負(fù)載程度相對(duì)較輕,,存儲(chǔ)副本的概率較大。然而其總量上的區(qū)別還算合理,,這是因?yàn)楸疚目紤]了另一個(gè)因素HDFS工作進(jìn)程,,它能有效地限制一個(gè)節(jié)點(diǎn)進(jìn)行過(guò)量的操作。而且,,整體的存儲(chǔ)情況是優(yōu)化策略要顯得更加均衡,,這也是因?yàn)榭紤]了實(shí)時(shí)負(fù)載因素在無(wú)形中增加了低負(fù)載節(jié)點(diǎn)的工作量,減小了高負(fù)載節(jié)點(diǎn)的工作量,,最終使優(yōu)化策略的副本分布看起來(lái)更加平衡,。
最后本文通過(guò)客戶端寫(xiě)入200、500,、1 000個(gè)數(shù)據(jù)塊,,對(duì)比數(shù)據(jù)傳輸?shù)臅r(shí)間,結(jié)果如圖5所示,。從圖5可以看出由于優(yōu)化副本策略考慮了節(jié)點(diǎn)的實(shí)時(shí)負(fù)載,,在一定程度上避開(kāi)了實(shí)時(shí)負(fù)載繁忙的節(jié)點(diǎn),有效地均衡了節(jié)點(diǎn)的負(fù)載,,并有目的地適當(dāng)提高了性能較高節(jié)點(diǎn)的使用,,充分發(fā)揮其性能優(yōu)勢(shì),,最終實(shí)現(xiàn)了縮短存儲(chǔ)型數(shù)據(jù)寫(xiě)入時(shí)間的目的。
3 結(jié)論
本文分析了HDFS默認(rèn)副本放置策略的局限性,,并據(jù)此提出了一種優(yōu)化的副本放置策略,,該策略綜合考慮了實(shí)時(shí)負(fù)載和HDFS工作進(jìn)程數(shù),有效提高了副本的合理分布,。通過(guò)實(shí)驗(yàn)表明,,相比于默認(rèn)策略,優(yōu)化的副本放置策略具有更明確的目的性,,盡量選擇了最低實(shí)時(shí)負(fù)載節(jié)點(diǎn),,避開(kāi)了高負(fù)載節(jié)點(diǎn)的存儲(chǔ),最終提升了副本傳輸?shù)臅r(shí)間,。本文還通過(guò)科學(xué)的AHP方法確定了實(shí)時(shí)負(fù)載的權(quán)值,,更加精確了實(shí)時(shí)負(fù)載的評(píng)估準(zhǔn)確性。
參考文獻(xiàn)
[1] WHITE T. Hadoop: The definitive guide[M]. O′Reilly Media,, Inc.,, 2012.
[2] ABAD C L, Lu Yi,, CAMPBELLR H. Dare: adaptive data replication for efficient cluster scheduling[C]. Proceedings of the 2011 IEEE International Conference on Cluster Computing,, USA: IEEE Computer Society, 2011:159-168.
[3] Xie Jiong,, Yin Shu,, Ruan Xiaojun, et al. Improving mapreduce performance through data placement in heterogeneous hadoop clusters[C]. 2010 IEEE International Symposium on Parallel Distributes Processing,, Workshops and Phd Forum(IPDPSW),, Atlanta: IEEE Press, 2010:1-9.
[4] 林偉偉.一種改進(jìn)的Hadoop數(shù)據(jù)放置策略[J].華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版),,2012,,36(1):152-158.
[5] 邵秀麗,王亞光,,李云龍,,等.Hadoop副本放置策略[J].智能系統(tǒng)學(xué)報(bào),2013,,8(6):489-496.
[6] 徐玖平,,吳巍.多屬性決策的理論與方法[M].北京:清華大學(xué)出版社,2006.