摘 要: Hadoop分布式文件系統(tǒng)默認(rèn)采用三副本策略實(shí)現(xiàn)較為簡單,未對數(shù)據(jù)節(jié)點(diǎn)負(fù)載進(jìn)行充分考慮。為了改善HDFS中集群負(fù)載的均衡性,提高數(shù)據(jù)節(jié)點(diǎn)的資源利用率,提出一種優(yōu)化的副本放置策略。該策略綜合考慮數(shù)據(jù)節(jié)點(diǎn)的實(shí)時負(fù)載信息和工作進(jìn)程數(shù),選擇負(fù)載最小的節(jié)點(diǎn)存放數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明,與默認(rèn)策略相比,優(yōu)化的Hadoop副本放置策略能使副本分布更加合理,集群的均衡性更加良好,并能減少數(shù)據(jù)上傳響應(yīng)時間。
關(guān)鍵詞: Hadoop;副本放置;實(shí)時負(fù)載;負(fù)載均衡
0 引言
HDFS副本放置策略設(shè)計是基于節(jié)點(diǎn)硬件性能同構(gòu)的基礎(chǔ)之上,其采用三副本冗余機(jī)制保證數(shù)據(jù)的安全性。整體的副本存儲策略如圖1所示。HDFS整體的副本放置策略的原則為:盡最大可能將其中兩個數(shù)據(jù)塊副本存儲在一個機(jī)架上,將另一個數(shù)據(jù)塊副本存儲在另一個機(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)的存儲位置。參考文獻(xiàn)[5]則優(yōu)先讓使用率低的節(jié)點(diǎn)被選中作為存儲節(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)如下:在選取副本存儲節(jié)點(diǎn)時采用了隨機(jī)方式,HDFS雖然也考慮了數(shù)據(jù)節(jié)點(diǎn)的工作接連數(shù)的負(fù)載信息,但相對簡單,并且是在隨機(jī)選取存儲節(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)對于數(shù)據(jù)節(jié)點(diǎn)的狀態(tài)信息缺乏感知,無法做出更為精確的副本位置選取工作。為此,本文的優(yōu)化策略將重點(diǎn)考慮如下兩個評價指標(biāo),增加名字節(jié)點(diǎn)副本放置節(jié)點(diǎn)選取的準(zhǔn)確性、合理性。
(1)節(jié)點(diǎn)實(shí)時負(fù)載:實(shí)時負(fù)載W由數(shù)據(jù)節(jié)點(diǎn)的多個指標(biāo)衡量,分別為磁盤IO負(fù)載、內(nèi)存負(fù)載、CPU負(fù)載、網(wǎng)絡(luò)負(fù)載。W的計算公式為:
W=λio×wio+λmem×wmem+λcpu×wcpu+λband×wband
其中,wio、wmem、wcpu、wband分別代表了磁盤IO負(fù)載、內(nèi)存負(fù)載、CPU負(fù)載、網(wǎng)絡(luò)負(fù)載;λio、λmem、λcpu、λband則代表了衡量節(jié)點(diǎn)工作負(fù)載時的節(jié)點(diǎ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)來確定。該方法適用于難以定量分析的決策性問題。
(2)HDFS工作進(jìn)程:即數(shù)據(jù)節(jié)點(diǎn)HDFS寫入、讀取等工作的連接數(shù)。由于這些負(fù)載都是比值的關(guān)系,在異構(gòu)環(huán)境下有些節(jié)點(diǎn)可能由于性能較好,其某些實(shí)時負(fù)載處于較低水平,在節(jié)點(diǎn)性能嚴(yán)重不均衡時將導(dǎo)致集群大量副本存儲在個別高性能節(jié)點(diǎn)上。該負(fù)載信息能控制一個數(shù)據(jù)節(jié)點(diǎn)上進(jìn)行的HDFS工作進(jìn)程,抑制某個數(shù)據(jù)節(jié)點(diǎn)進(jìn)行過多的HDFS服務(wù)。
依據(jù)上述兩個指標(biāo),某數(shù)據(jù)副本放置位置的選取的主要思想是:從指定的機(jī)架位置上隨機(jī)選取一定數(shù)量的數(shù)據(jù)節(jié)點(diǎn)集,然后從該集合中進(jìn)一步選取工作連接數(shù)低于集群平均工作連接數(shù)的數(shù)據(jù)節(jié)點(diǎn)集合,最后在該集合中選擇實(shí)時負(fù)載最小的節(jié)點(diǎn)作為副本位置放置節(jié)點(diǎn)。為方便下面的描述,該思想標(biāo)記為算法1。
整體上副本放置位置的選取依然遵循將副本盡量放在不同機(jī)架上以保證可靠性的原則,從最常見的3副本方案出發(fā),其整體副本選取方案如下:
While還需選取的副本數(shù)>0
if第一副本選取then
if客戶端節(jié)點(diǎn)是數(shù)據(jù)節(jié)點(diǎn)then
選擇該節(jié)點(diǎn)
else通過指定所有集群機(jī)架通過算法1去選取節(jié)點(diǎn)
else if第二副本選取then
指定除去第一副本所在機(jī)架外的所有機(jī)架通過算法1去選取節(jié)點(diǎn)
else if第三副本選取then
if第一、二副本所在節(jié)點(diǎn)在同一機(jī)架then
指定除去第二副本所在機(jī)架外的所有機(jī)架通過算法1去選取節(jié)點(diǎn)
else指定第二副本所在機(jī)架通過算法1去選取節(jié)點(diǎn)
1.3 層次分析法的權(quán)值確定工作
美國運(yùn)籌學(xué)家Saaty教授提出的層次分析法是多屬性決策中的重要方法[6]。對于存在多個影響指標(biāo)的情況,評價各方案的優(yōu)劣程度的這類問題可以使用AHP方法來解決。AHP方法的思想是把復(fù)雜問題中的各種因素進(jìn)行分層,分層是有次序的,層次之間也是有聯(lián)系的,將每個層次的元素兩兩比較,并定量描述它們的相對重要性。最后使用數(shù)學(xué)方法計算權(quán)值,用權(quán)值反映每一層次元素的相對重要性次序。
本文從實(shí)時負(fù)載的實(shí)際情況出發(fā)進(jìn)行建模,如圖2所示。
對準(zhǔn)則層的各個因素進(jìn)行兩兩對比,構(gòu)建判斷矩陣,如表1所示。
對表1構(gòu)成的判斷矩陣通過合法的計算方式,求取其最大特征根λ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,即通過判斷矩陣的一致性檢驗(yàn),因此特征向量W的值是合理的,最終實(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ī)節(jié)點(diǎn),分別標(biāo)識為性能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硬盤;B節(jié)點(diǎn)的主要硬件配置為:2.93 GHz的Inter(R)Core(TM)2Duo(E7500)CPU,2 GB DDR3的內(nèi)存,4 500 rpm的500 GB硬盤。整個集群由1個機(jī)架組成,集群配置成1個名字節(jié)點(diǎn)、8個數(shù)據(jù)節(jié)點(diǎn)和1個客戶端的形式。其中性能A的數(shù)據(jù)節(jié)點(diǎn)編號為1、2、7、8,性能B的數(shù)據(jù)節(jié)點(diǎn)編號為3、4、5、6。實(shí)驗(yàn)中涉及的數(shù)據(jù)讀寫操作均通過客戶端發(fā)出。
圖3和圖4分別展示了在默認(rèn)策略和優(yōu)化策略下通過客戶端寫入1 000個數(shù)據(jù)塊時的副本分布情況。從圖3可以看出,在默認(rèn)策略下,副本放置位置是通過隨機(jī)算法獲取的,因此副本的分布顯得較為隨意,波動性也比較大。副本的分布不具目的性,例如數(shù)據(jù)節(jié)點(diǎn)1和數(shù)據(jù)節(jié)點(diǎn)5,通過實(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少存儲了100多個副本,這樣的分布顯然不太合理。而優(yōu)化策略下,副本的分布顯然更具目的性。如圖4所示,性能更好的1、2、7、8數(shù)據(jù)節(jié)點(diǎn)存儲的副本總量要多于性能較差的3、4、5、6數(shù)據(jù)節(jié)點(diǎn)。這是由于考慮了實(shí)時負(fù)載,性能更好的節(jié)點(diǎn)其負(fù)載程度相對較輕,存儲副本的概率較大。然而其總量上的區(qū)別還算合理,這是因?yàn)楸疚目紤]了另一個因素HDFS工作進(jìn)程,它能有效地限制一個節(jié)點(diǎn)進(jìn)行過量的操作。而且,整體的存儲情況是優(yōu)化策略要顯得更加均衡,這也是因?yàn)榭紤]了實(shí)時負(fù)載因素在無形中增加了低負(fù)載節(jié)點(diǎn)的工作量,減小了高負(fù)載節(jié)點(diǎn)的工作量,最終使優(yōu)化策略的副本分布看起來更加平衡。
最后本文通過客戶端寫入200、500、1 000個數(shù)據(jù)塊,對比數(shù)據(jù)傳輸?shù)臅r間,結(jié)果如圖5所示。從圖5可以看出由于優(yōu)化副本策略考慮了節(jié)點(diǎn)的實(shí)時負(fù)載,在一定程度上避開了實(shí)時負(fù)載繁忙的節(jié)點(diǎn),有效地均衡了節(jié)點(diǎn)的負(fù)載,并有目的地適當(dāng)提高了性能較高節(jié)點(diǎn)的使用,充分發(fā)揮其性能優(yōu)勢,最終實(shí)現(xiàn)了縮短存儲型數(shù)據(jù)寫入時間的目的。
3 結(jié)論
本文分析了HDFS默認(rèn)副本放置策略的局限性,并據(jù)此提出了一種優(yōu)化的副本放置策略,該策略綜合考慮了實(shí)時負(fù)載和HDFS工作進(jìn)程數(shù),有效提高了副本的合理分布。通過實(shí)驗(yàn)表明,相比于默認(rèn)策略,優(yōu)化的副本放置策略具有更明確的目的性,盡量選擇了最低實(shí)時負(fù)載節(jié)點(diǎn),避開了高負(fù)載節(jié)點(diǎn)的存儲,最終提升了副本傳輸?shù)臅r間。本文還通過科學(xué)的AHP方法確定了實(shí)時負(fù)載的權(quán)值,更加精確了實(shí)時負(fù)載的評估準(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é)報(自然科學(xué)版),2012,36(1):152-158.
[5] 邵秀麗,王亞光,李云龍,等.Hadoop副本放置策略[J].智能系統(tǒng)學(xué)報,2013,8(6):489-496.
[6] 徐玖平,吳巍.多屬性決策的理論與方法[M].北京:清華大學(xué)出版社,2006.