吳譽蘭,舒建文
(1. 南昌航空大學科技學院,江西 南昌 332020;2. 南昌航空大學信息工程學院江西,南昌,330063)
現(xiàn)今網(wǎng)絡數(shù)據(jù)呈現(xiàn)出爆炸式增長,Hadoop系統(tǒng)在處理不斷增加的密集大數(shù)據(jù)時,會賦予集群一批新的節(jié)點,導致新加入的網(wǎng)絡節(jié)點在硬盤、內(nèi)存以及處理器等性能方面形成了過大的差異性,由此生成異構(gòu)集群,造成各節(jié)點數(shù)據(jù)量的不平衡。所以,異構(gòu)集群的密集數(shù)據(jù)調(diào)度均衡具有重要的現(xiàn)實意義[1]。有相關(guān)學者對此進行研究,竇浩銘等[2]提出基于SDN的負載均衡網(wǎng)絡控制器算法,根據(jù)網(wǎng)絡范式與控制器,度量鏈路與服務器層面的影響因子,通過權(quán)重的計算,達成最終的調(diào)度。而余洋等[3]提出基于分布式計算的密集型多路網(wǎng)絡流均衡調(diào)度方法,得出多路網(wǎng)絡流負載調(diào)度方法,采用界定跳數(shù)信息與負載信息,得到網(wǎng)絡流選取的決策函數(shù),依據(jù)負載狀態(tài)來調(diào)度過載鏈路的數(shù)據(jù)流。
由于在處理異構(gòu)集群的密集型大數(shù)據(jù)時,容易因不同節(jié)點硬件配置差異過大,導致負載調(diào)度時間長,調(diào)度效果不理想。因此,提出一種異構(gòu)集群中密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度方法。依據(jù)異構(gòu)集群中兩節(jié)點之間的性能、儲存空間關(guān)系;通過負載網(wǎng)絡調(diào)度使兩節(jié)點獲取到相同的儲存空間使用率,明確調(diào)度模型的儲存空間、已用容量以及各項性能指標參數(shù),提取使用率超過極大負載的節(jié)點,進一步縮短調(diào)度時間。根據(jù)異構(gòu)集群節(jié)點在任務處理階段消耗的總能量,采用節(jié)點間可調(diào)度的有效數(shù)據(jù)塊,實現(xiàn)密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度。
通常情況下,完成負載網(wǎng)絡調(diào)度的前提條件是假設所有節(jié)點具有相同結(jié)構(gòu)?;谕瑯?gòu)集群的每個節(jié)點,其處理器、內(nèi)存以及磁盤容量等硬件配置相一致[4]。而負載網(wǎng)絡調(diào)度的效用則是令所有節(jié)點的儲存空間使用率更加均衡。如果集群內(nèi)少數(shù)的節(jié)點信息負載了較大規(guī)模的數(shù)據(jù),那么,集群管理員應采用調(diào)度控制策略,對數(shù)據(jù)塊進行重新安排與布局。針對用戶提交的閾值與儲存空間使用率,節(jié)點信息被負載調(diào)度應用劃分成過載節(jié)點信息、比閾值大的節(jié)點信息、比閾值小的節(jié)點信息以及空載的節(jié)點信息等四個模塊。負載網(wǎng)絡調(diào)度的核心思想就是將比閾值大的節(jié)點與過載節(jié)點數(shù)據(jù)移動至比閾值小的節(jié)點和空載節(jié)點處,令所有節(jié)點的儲存空間使用率與集群儲存空間的平均使用率有所偏離,且滿足閾值的取值范圍。
盡管負載網(wǎng)絡調(diào)度方案對于同構(gòu)集群可以展示出明顯的優(yōu)勢,但對于異構(gòu)集群[5],會存在一定的可能性導致節(jié)點硬件配置出現(xiàn)較大差異,而具有較高性能的節(jié)點則能夠處理更多相關(guān)數(shù)據(jù),每個節(jié)點為Hadoop分布式文件系統(tǒng)(如圖1所示)提供的使用空間大小也不同,甚至會呈倍數(shù)差。因此,即使異構(gòu)集群所有節(jié)點的儲存空間使用率不一致,無法滿足負載網(wǎng)絡調(diào)度的最終需求。
圖1 Hadoop分布式文件系統(tǒng)框架示意圖
根據(jù)上述負載網(wǎng)絡的調(diào)度原理及局限,設定一個異構(gòu)集群,將該集群中節(jié)點Na的性能與節(jié)點Nb的性能分別設定為Pa、Pb,則兩節(jié)點性能之間的關(guān)系表達式為
(1)
假設節(jié)點Na與節(jié)點Nb的儲存空間分別是Da和Db,那么,采用式(2)對兩節(jié)點的儲存空間關(guān)系進行描述
Da=2Db
(2)
根據(jù)式(1)、(2)得出,具有低性能的節(jié)點Na儲存空間利用率為節(jié)點Nb的兩倍,經(jīng)過負載網(wǎng)絡調(diào)度,兩節(jié)點將獲取到相同的儲存空間使用率。雖然兩個異構(gòu)節(jié)點的儲存空間使用率看起來像是呈現(xiàn)出比較均衡的狀態(tài)[6],但實際的集群卻是非常不均衡的。低性能的節(jié)點Na不僅被賦予了更多的處理數(shù)據(jù),同時也承擔了更大的數(shù)據(jù)負載,從而導致該節(jié)點逐漸演變?yōu)槿蝿請?zhí)行階段的高負載節(jié)點,使非本地化的任務幾率得到了上升,并提高了網(wǎng)絡流量負載。因此,為了均衡異構(gòu)集群的負載,將集群里所有節(jié)點的儲存空間使用率調(diào)度為一個相同的期望值。
通過探析負載網(wǎng)絡調(diào)度原理以及局限性,對適用于異構(gòu)集群中密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度的數(shù)學模型進行構(gòu)建。根據(jù)各節(jié)點的性能和儲存空間,采用調(diào)度模型完成所有節(jié)點理論空間使用率的求解。
儲存空間指的并不是某個節(jié)點的磁盤容量,而是節(jié)點為分布式文件系統(tǒng)提供的可用容量[7],其中,第i個節(jié)點的配置容量表示為Cconf(i);分布式文件系統(tǒng)使用的節(jié)點儲存空間容量叫做已用容量,其中,第i個節(jié)點的已用容量表示為Cused(i);第i個節(jié)點的處理器性能表示為Pcpu(i),多核性能卻不能呈現(xiàn)出等效的性能總和,因為理想狀態(tài)下的各核性能是單核的0.8或0.9倍,因此,通常將多核處理器的轉(zhuǎn)換參數(shù)ρ取值為0.8。采用下列公式對節(jié)點處理器的性能進行描述
Pcpu(i)=ρ×(Ncore(i)-1)×F(i)+F(i)
(3)
式(3)中,節(jié)點的處理器核數(shù)與頻率分別表示為Ncore(i)、F(i)。
假設第i個節(jié)點的內(nèi)存性能是Pmem(i),則需要通過下列表達式對其進行評估
Pmem(i)=Nmem(i)
(4)
式(4)中,節(jié)點i的內(nèi)存大小表示為Nmem(i)。節(jié)點相對性能表達式為
(5)
式(5)中,處理器性能與內(nèi)存性能的權(quán)值因子分別為α、β,而且兩者之間的關(guān)系滿足α+β=1;異構(gòu)集群里節(jié)點處理器性能與內(nèi)存性能的極小值分別為min(Pcpu)、min(Pmem)。為了使計算更加簡便,量化集群內(nèi)全部節(jié)點的性能,取值為極小值1,從而得到節(jié)點性能總和P的計算公式為
(6)
式(7)所示為集群儲存空間使用率的表達式
(7)
基于性能的理論儲存空間,節(jié)點i的占用容量表達式及空間使用率表達式分別為
(8)
(9)
式(8)、(9)中,i=1,2,…,n。
節(jié)點動態(tài)儲存空間的極大負載,則采用式(10)進行描述
(10)
式(10)中,極大負載M的取值范圍是80%≤M<100%,且與集群儲存空間使用率Ravg為正相關(guān)[8]。上列表達式對節(jié)點極大負載做出了較好的界定,避免節(jié)點發(fā)生負載過重的情況,也解決了因用戶的靜態(tài)配置而造成的參數(shù)不適用問題。
通過對比節(jié)點的極大負載與所有節(jié)點的理論儲存空間使用率,對節(jié)點理論空間使用率超過節(jié)點極大負載的節(jié)點進行提取,進而采用異構(gòu)集群盈余容量的運算公式,完成求解
(11)
式(11)中,i=1,2,…,n,Rideal(i)>M。
迭代運行為剩余節(jié)點分配多余容量這一操作,待異構(gòu)集群內(nèi)不再有理論容量比極大負載數(shù)值大的節(jié)點時,迭代終止。
每個節(jié)點的參數(shù)化閾值計算公式為
(12)
式(12)中,當均衡狀態(tài)的集群節(jié)點儲存空間使用率和異構(gòu)集群儲存空間使用率存在最大偏差時,該數(shù)值就是用戶輸入的閾值參數(shù)t。
至此,完成負載網(wǎng)絡調(diào)度模型的參數(shù)設定,對比節(jié)點的存儲空間使用率,提取負載過大的節(jié)點,對剩余節(jié)點分配盈余容量。緩解負載過大的情況,提高了存儲空間利用率,為密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度做鋪墊。
假設一個異構(gòu)集群的構(gòu)成節(jié)點有n個,若使用該異構(gòu)集群處理Map Reduce任務,將所有處理任務的節(jié)點架構(gòu)成一個集合,并設定為C,所以,得到任務處理階段內(nèi)所消耗能量總和的表達式
(13)
式(13)中,第i個節(jié)點的處理時長表示為Ti,功耗表示為pi。
根據(jù)總消耗能量表達式能夠發(fā)現(xiàn),如果覆蓋節(jié)點已經(jīng)得到明確,那么,負載網(wǎng)絡調(diào)度為降低覆蓋節(jié)點任務分配能耗的有效手段之一,兩覆蓋節(jié)點的負載調(diào)度示意如圖2所示。所以,在實現(xiàn)異構(gòu)集群中密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度的過程中,需要先解決兩個主要問題,即對負載網(wǎng)絡調(diào)度的對象節(jié)點和調(diào)度程度進行確定。
圖2 兩覆蓋節(jié)點的負載調(diào)度示意圖
已知圖2(a)中的na與nb分別為兩個覆蓋節(jié)點[9],關(guān)鍵節(jié)點是na,如果節(jié)點na當前所含有的有效數(shù)據(jù)塊數(shù)量為x+s個,且在節(jié)點nb上含帶副本的數(shù)據(jù)塊數(shù)量為s個,那么,節(jié)點nb當前所含有的有效數(shù)據(jù)塊數(shù)量為y個。圖2的虛線方框表示,在節(jié)點na與nb上均包含帶副本的數(shù)據(jù)塊數(shù)量為s個,各節(jié)點的有效數(shù)據(jù)塊用陰影區(qū)域表示,只在節(jié)點中進行儲存而不接受處理的數(shù)據(jù)塊則用空白區(qū)域表示,節(jié)點na與nb處理一個數(shù)據(jù)塊消耗的時長分別為ta與tb。實現(xiàn)節(jié)點na與nb的負載網(wǎng)絡調(diào)度,就是為了滿足節(jié)點na實際所用時長約等于節(jié)點nb。所以,把節(jié)點na的部分有效數(shù)據(jù)塊交給節(jié)點nb進行處理。
如圖2(b)中所示,經(jīng)過負載網(wǎng)絡調(diào)度,節(jié)點na的有效數(shù)據(jù)塊數(shù)量為x+s-k,而節(jié)點nb的有效數(shù)據(jù)塊數(shù)量為y+k,白框中的k個數(shù)據(jù)塊為原屬于節(jié)點na但現(xiàn)屬于節(jié)點nb的有效數(shù)據(jù)塊。節(jié)點na與節(jié)點nb的可調(diào)度數(shù)據(jù)塊就是該k個數(shù)據(jù)塊,其中,k值的選取應滿足(x+s-k)ta與(y+k)tb的差值是極小值,通過計算能夠得出下列條件式組
(14)
如果關(guān)鍵節(jié)點為節(jié)點na,ytb<(x+s)ta,那么,k值一定不是0[10]。由于經(jīng)過負載網(wǎng)絡調(diào)度后,節(jié)點na與nb的實際消耗時長要比(x+s)ta小,如若不然就沒有達成調(diào)度的目標。當確定了當前覆蓋節(jié)點的全部關(guān)鍵節(jié)點后,對其與剩余覆蓋節(jié)點實施負載調(diào)度,在下一次的迭代操作過程中,反復調(diào)度關(guān)鍵節(jié)點,待其無法再與其它節(jié)點負載調(diào)度,迭代終止,完成密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度。
仿真環(huán)境采用的操作系統(tǒng)為Ubuntu-12.04.1,JDK與Hadoop選用的分別是1.6版本與2.5.1版本,運行內(nèi)存為4GB,硬盤可用空間是500G。模擬環(huán)境的網(wǎng)絡拓撲結(jié)構(gòu)設置了9臺服務器的群集,構(gòu)建三層網(wǎng)絡拓撲。組建節(jié)點個數(shù)分別是4個、3個和2個。表1中的數(shù)據(jù)為拓撲節(jié)點的硬件配置參數(shù)表。
表1 拓撲節(jié)點的硬件配置統(tǒng)計表
此次實驗數(shù)據(jù)設置中,以三種工作類型為基準,以觀察所提方法對數(shù)據(jù)調(diào)度耗時的影響。表2中列出了實驗數(shù)據(jù)及參數(shù)名稱,并將數(shù)據(jù)分別重組為10個數(shù)據(jù)包。工作量是一種用于計算給定文本中每個單詞的出現(xiàn)次數(shù)的應用程序。TeraSort是由TeraGen生成的一組給定的輸入數(shù)據(jù)。推薦器是許多現(xiàn)實生活中使用的著名的機器學習應用程序。
表2 實驗數(shù)據(jù)
基于相同規(guī)模的實驗環(huán)境及數(shù)據(jù),對比基于SDN的負載均衡網(wǎng)絡控制器算法(文獻[2]方法)、基于分布式計算的密集型多路網(wǎng)絡流均衡調(diào)度方法(文獻[3]方法)與所提方法,處理表1中五種任務的用時,具體實驗結(jié)果如圖3所示。
圖3 不同方法調(diào)度消耗時長對比
通過圖3可以看出,因不同的負載任務會提出不同的調(diào)度要求,所以處理時長也因負載情況發(fā)生變化而出現(xiàn)改變。相對于其它兩種對比方法,所提方法的處理時長較短,且變化波動較小,擁有顯著的優(yōu)越性。是因為該方法在設定模型參數(shù)時提取了使用率超過節(jié)點極大負載的節(jié)點,通過迭代運行為剩余節(jié)點分配盈余容量,減少了調(diào)度耗時,從而提高了資源利用率。
為了確保密集型大數(shù)據(jù)的處理效率,提出一種異構(gòu)集群中密集型大數(shù)據(jù)負載網(wǎng)絡調(diào)度方法。依據(jù)節(jié)點儲存空間使用率相近似的負載調(diào)度原理以及硬件配置存在的局限性,將節(jié)點信息劃分成四種類型。采用Hadoop分布式文件系統(tǒng)下各節(jié)點的性能和儲存空間,完成負載網(wǎng)絡調(diào)度數(shù)學模型的架構(gòu)與相關(guān)參數(shù)指標設置,利用節(jié)點處理任務的能耗總和,獲取覆蓋節(jié)點與關(guān)鍵節(jié)點數(shù)據(jù)塊的處理時長。根據(jù)可調(diào)度數(shù)據(jù)塊數(shù)量的取值范圍,通過關(guān)鍵節(jié)點與其它節(jié)點的反復迭代調(diào)度,達成最終的調(diào)度目標。仿真結(jié)果證明,在處理五種任務的過程中調(diào)度消耗時長低于330s,該方法為今后的相關(guān)領(lǐng)域研究奠定了良好的數(shù)據(jù)基礎(chǔ),擁有著至關(guān)重要的實踐意義與理論意義。