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