陳林
(四川大學(xué)計算機學(xué)院,成都 610065)
Hadoop是一個開源的分布式處理系統(tǒng),當(dāng)用戶提交一個作業(yè)后,Hadoop會將該作業(yè)分成若干個task任務(wù),然后分配到多個節(jié)點并行執(zhí)行,最后返回結(jié)果。
在Hadoop集群中,移動數(shù)據(jù)塊的性能消耗要高于移動計算任務(wù)的性能消耗,數(shù)據(jù)負載均衡可以提高本地化的task任務(wù)次數(shù),從而可以減少集群中的數(shù)據(jù)傳輸,從而提高集群性能。
HDFS默認的負載均衡算法是基于同構(gòu)的集群環(huán)境,該算法的目標(biāo)是把各個節(jié)點的存儲空間利用率盡量保持在同一水平。當(dāng)機器中的某個或者某幾個節(jié)點空間利用率過高時,那么我們可以通過執(zhí)行start-balancer.sh來啟動負載均衡程序。Balancer負載均衡器是根據(jù)用戶給定的閾值threshold,以及平均空間利用率avg來把節(jié)點分為四組:overUtilizedDatanodes、bove-AvgUtilizedDatanodes、belowAvgUtilizedDatanodes、underUtilizedDatanodes,分組過程是通過 avg+threshold、avg、avg-threshold這三個值來進行劃分的。分好組后,就進行移動數(shù)據(jù),不停地將前兩組過載節(jié)點的數(shù)據(jù)移動到后兩組節(jié)點中,直到所有節(jié)點與avg的差值不超過threshold閾值。
配置的存儲空間(Sconf(i)):節(jié)點i分配給hdfs使用的磁盤空間容量。
已用空間(Sused(i)):節(jié)點i中hdfs已經(jīng)使用的磁盤空間容量。
節(jié)點i的CPU性能(Fcpu(i)):對于多核CPU的情況,每個核的性能為單核的 0.8~0.9,這里我們?nèi)?=0.85,該節(jié)點的CPU性能為:
其中?表示轉(zhuǎn)化率,f(i)表示CPU頻率(GHz),n是核數(shù)。
節(jié)點內(nèi)存性能(Fmem(i)):內(nèi)存性能的度量是使用該節(jié)點內(nèi)存的大小。
節(jié)點剩余空間(Sremain(i)):節(jié)點i中hdfs剩余的空間容量大小。
定義1節(jié)點相對性能:
其中α,β,δ表示CPU相對性能以及內(nèi)存相對性能和節(jié)點相對剩余空間大小的權(quán)重,由于節(jié)點剩余空間有可能在均衡的過程中動態(tài)變化,從而影響迭代的收斂,所以對于剩余空間的權(quán)重設(shè)置相對要小一點。所有結(jié)點相對性能之和為性能總和:
定義2集群的平均空間利用率:
定義3各個結(jié)點基于性能和剩余空間容量的理論空間使用量和空間使用率:
定義4每個節(jié)點的最大空間負載:
因為在異構(gòu)集群環(huán)境中每個結(jié)點的磁盤空間是不同的,因此計算出來的每個結(jié)點的理論使用空間量可能會大于該結(jié)點的最大負載量,這個時候我們需要將多余出來的部分占用空間分給其他結(jié)點,這里我們提出了一個迭代算法,計算理想均衡狀態(tài)。
金,因為品質(zhì)而尊貴;夢,因為絢麗而多彩。這座北方小城,正一步步踐行著自己的“黃金夢”,正用自己手中的顏色描繪著未來的美好藍圖。
該算法的詳細步驟如下:
(1)通過計算CPU、內(nèi)存、以及剩余空間大小來計算節(jié)點的相對性能F(i),集群總的性能F以及集群空間的平均使用率Ravg;
(2)然后通過每個結(jié)點的性能占總性能F的百分比來計算出理論空間使用量,進而計算出理論空間使用率,每個結(jié)點計算出的理論空間使用率組合成一個“理論的負載均衡理想狀態(tài)”數(shù)組;
(3)計算各個結(jié)點最大的空間負載率,并由此找出理論空間使用量超過最大負載量的結(jié)點,計算超出量,并將超出空間分別放置為超出的結(jié)點上,每個結(jié)點放置的存儲空間占用量為:
其中Sconf(i)和Rtheory(i)為被放置結(jié)點的分配的空間和理論空間使用率,當(dāng)這樣放置后,多余的空間被分配完,那么迭代結(jié)束,否則繼續(xù)迭代計算,最終得到一個理想的均衡狀態(tài)數(shù)組,里面存放了各個結(jié)點的不大于最大空間負載率Rm的理想空間占用率:
(4)進行分組,其中 R(i)表示結(jié)點 i存儲空間使用率:
表1
(5)計算各個結(jié)點需要移動的數(shù)據(jù)量然后進行移動數(shù)據(jù)。
實驗環(huán)境由五臺臺式機組成,分別通過一個路由器連接成一個局域網(wǎng),網(wǎng)絡(luò)拓撲圖如下:
圖1 網(wǎng)絡(luò)拓撲圖
表2
為了對比本文提出的算法和hdfs默認的負載均衡算法,我們做如下操作來導(dǎo)致集群出現(xiàn)負載不均衡現(xiàn)象:
(1)將所有文件的副本數(shù)設(shè)為2;
(2)將其中某幾臺作為客戶端進行上傳文件;
(3)添加一臺新結(jié)點,然后再上傳文件;
然后分別運行默認的負載均衡算法和本文提出的負載均衡算法,對比均衡效果,其中閾值threshold我們設(shè)置為6%,實驗的對比結(jié)果如下:
表3
由上面的結(jié)果對比,可以知道:對于CPU和內(nèi)存性能高的并且剩余容量多的主機,通過本文負載均衡算法后可以存儲更多的數(shù)據(jù),而默認負載均衡算法,只是讓每個節(jié)點的占用比盡量趨近于一致。
參考文獻:
[1]張松.Hadoop異構(gòu)環(huán)境中數(shù)據(jù)副本動態(tài)管理研究[D].南京航空航天大學(xué),2015.
[2]武娟,黃海,錢鋒,李擁軍,壽質(zhì)彬.基于多變量動態(tài)算法的Hadoop負載均衡優(yōu)化與實現(xiàn)[J].電信科學(xué),2012,28(12):83-87.
[3]劉琨.云計算負載均衡策略的研究[D].吉林大學(xué),2016.
[4]劉琨,肖琳,趙海燕.Hadoop中云數(shù)據(jù)負載均衡算法的研究及優(yōu)化[J].微電子學(xué)與計算機,2012,29(09):18-22.
[5]康承昆,劉曉潔.一種基于多衡量指標(biāo)的HDFS負載均衡算法[J].四川大學(xué)學(xué)報(自然科學(xué)版),2014,51(06):1163-1169.
[6]Kun Liu,Gaochao Xu,Jun'e Yuan.An Improved Hadoop Data Load Balancing Algorithm[J].Journal of Networks,2013,8(12).