王春梅, 胡玉平, 易葉青
(1.廣東金融學(xué)院 互聯(lián)網(wǎng)金融與信息工程系, 廣州 510521; 2.廣東財經(jīng)大學(xué) 信息學(xué)院, 廣州 510320; 3.湖南人文科技學(xué)院 信息科學(xué)與工程系, 湖南 婁底 417000)
?
Hadoop云計算平臺的參數(shù)優(yōu)化算法
王春梅1*, 胡玉平2, 易葉青3
(1.廣東金融學(xué)院 互聯(lián)網(wǎng)金融與信息工程系, 廣州 510521; 2.廣東財經(jīng)大學(xué) 信息學(xué)院, 廣州 510320; 3.湖南人文科技學(xué)院 信息科學(xué)與工程系, 湖南 婁底 417000)
為提高Hadoop云計算平臺的性能,該文提出了一種跨層的參數(shù)優(yōu)化模型.首先分析了云計算平臺的工作流程,將系統(tǒng)參數(shù)與流程對應(yīng),并加入基礎(chǔ)設(shè)施即服務(wù)與平臺即服務(wù)層的參數(shù),找出對Hadoop集群效率作用顯著的參數(shù),并把這些參數(shù)值作為性能參數(shù),構(gòu)建成性能參數(shù)模型,再用啟發(fā)式蟻群算法搜尋性能較優(yōu)的可行參數(shù),并不斷修正,找出最佳參數(shù)組合,最后整合跨層的參數(shù)來提高Hadoop云計算平臺的性能.實驗表明,該算法可行,性能優(yōu)良.
Hadoop云計算; 參數(shù)最優(yōu)化; 蟻群優(yōu)化算法; 虛擬機(jī)
Hadoop是Apache基金組織下的一個開源的可運(yùn)行于大規(guī)模集群上的分布式并行編程框架,搭建Hadoop云計算平臺進(jìn)行海量數(shù)據(jù)存儲是目前最為廣泛應(yīng)用的開源云計算軟件平臺[1-2].Hadoop云計算平臺的系統(tǒng)參數(shù)配置,直接關(guān)系到系統(tǒng)資源的利用情況,性能參數(shù)值的合理設(shè)定對Hadoop云計算平臺的工作性能具有重要的作用[3].但現(xiàn)在多數(shù)Hadoop集群系統(tǒng)對參數(shù)的設(shè)置都過于簡單,通常在集群安裝配置時,采用默認(rèn)配置或手動修改部分配置的方式.由于Hadoop集群工作系統(tǒng)提供200多個可調(diào)的參數(shù),這些參數(shù)直接影響集群的工作效率,但并不是所有的參數(shù)對Hadoop集群效率作用顯著[3-5].調(diào)整對效率有顯著作用的參數(shù),可縮短作業(yè)執(zhí)行時間,提高吞吐量,減少I/O或網(wǎng)絡(luò)傳輸成本,因此合理配置這些參數(shù)是集群工作性能提升的重要保障.
Hadoop集群系統(tǒng)的參數(shù)影響是復(fù)雜且聯(lián)動,改變某個參數(shù)的值可減少某部分的成本,但也可能增加其它部分的成本.因此很多學(xué)者一直不斷研究.代棟等[6]利用模糊邏輯規(guī)則對集群參數(shù)進(jìn)行自動配置,該方法主要考慮集群中節(jié)點的異構(gòu),并沒有對集群任務(wù)做出明確的分析.Herodotou等[7]先建立一個參數(shù)空間,然后使用搜尋算法來找出最佳化參數(shù)配置來滿足目標(biāo)函數(shù),由于挑選出整體最佳化參數(shù)配置是相當(dāng)消耗時間,而且沒有明確目標(biāo)函數(shù)來尋找參數(shù)空間,導(dǎo)致搜尋效果不佳.Lin等[8]結(jié)合參數(shù)調(diào)整的經(jīng)驗和登山算法來配置,但效果不是非常理想.
本文提出一種跨基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service,IaaS)層、平臺即服務(wù)(Platform as a Service,PaaS)層和軟件即服務(wù)(Software as a Service,SaaS)層的跨層式參數(shù)優(yōu)化模型,并使用蟻群算法串接IaaS層、PaaS層、SaaS層的優(yōu)化方法,來提高Hadoop云計算的系統(tǒng)性能.實驗表明本算法可行,性能優(yōu)越.
跨層式參數(shù)優(yōu)化模型的結(jié)構(gòu)如圖1.先通過收集到的性能參數(shù)建立性能模型,再利用模型所產(chǎn)生的值,通過蟻群優(yōu)化(Ant Colony Optimization,ACO)算法[9]搜尋最佳參數(shù)組合,最后使用跨層蟻群算法(C-ACS)整合跨層的參數(shù),來改善Hadoop云計算平臺的性能.
圖1 跨層參數(shù)優(yōu)化模型流程圖
Fig.1 Flow chart of cross-layer parameter optimization mode
1.1 跨層效率參數(shù)
本文主要是搜尋那些參數(shù)會直接或間接對工作效率有影響,因Hadoop集群工作系統(tǒng)有200多種可調(diào)的配置參數(shù),經(jīng)過一些學(xué)者研究,其中大約有20多個對Hadoop集群效率作用顯著[1],以這些參數(shù)為依據(jù)建立性能模型,并加入跨層的性能參數(shù),讓啟發(fā)式蟻群算法(ACS)在搜尋參數(shù)最佳組合時,可以有更好的參數(shù)選擇來提升云計算平臺的性能.Hadoop集群工作系統(tǒng)的運(yùn)行架構(gòu)如圖2.
圖2 Hadoop集群工作系統(tǒng)運(yùn)行架構(gòu)示意圖Fig.2 Diagram of Hadoop cluster operating system
(I) SaaS層
Hadoop云計算平臺的SaaS層運(yùn)行MapReduce的應(yīng)用程序,一開始從Client端將需要運(yùn)算的輸入數(shù)據(jù)上傳到HDFS分布式文件系統(tǒng),HDFS將上傳的數(shù)據(jù)分割成Block.然后Block按照鍵值對存儲在HDFS上,并將鍵值對的映射存到內(nèi)存中.MapReduce框架主要包括Map和Reduce兩個階段,每個階段都會有各自的任務(wù)(MapTask、ReduceTask),在Map階段,每個MapTask讀取一個block,并調(diào)用map()函數(shù)進(jìn)行處理,將結(jié)果寫到本地磁盤上;在Reduce階段,每個ReduceTask從MapTask所在節(jié)點上讀取數(shù)據(jù),調(diào)用reduce()函數(shù)進(jìn)行數(shù)據(jù)處理,并將最終結(jié)果寫到HDFS.
SaaS層的性能參數(shù)主要是改善MapReduce執(zhí)行Job時的參數(shù),可分為三大類:Job整體性能參數(shù)、MapTask性能參數(shù)、ReduceTask性能參數(shù).這三大類參數(shù)可能直接影響系統(tǒng)的效率,可以通過修改/etc/Hadoop/conf文檔來調(diào)整系統(tǒng)性能.SaaS層Job整體性能參數(shù)如表1.
SaaS層中MapReduce的參數(shù)歸納為兩部分,一個是Map端的性能參數(shù),另一個是Reduce端的性能參數(shù).由于這兩部分沒明確的定義,所以需通過搜尋參數(shù)的方式,來找出最佳參數(shù)的組合.
表1 SaaS層Job整體性能參數(shù)
(II) PaaS層
除考慮SaaS層的性能參數(shù)外,還得考慮到PaaS層的參數(shù),Hadoop云計算平臺的PaaS層有Master節(jié)點和Slave節(jié)點,Master節(jié)點是主要控制節(jié)點,用來指派工作任務(wù)給工作節(jié)點Slave,Slave節(jié)點通過不斷的心跳匯報(HeartBeat)來和Master通信,可以讓Master節(jié)點知道那些Slave節(jié)點可以使用,那些已經(jīng)失效,這樣可以避免將工作任務(wù)指派給失效的節(jié)點上,導(dǎo)致任務(wù)失敗.PaaS層性能參數(shù)如表2.
表2 PaaS層性能參數(shù)
(III) Iaas層
Hadoop云計算平臺的基礎(chǔ)設(shè)在Iaas層上,將硬件資源分配給虛擬機(jī)(VM),每一臺VM就會得到虛擬的硬件資源(vCPU、vIO、vMemory).IaaS層性能參數(shù)(Host參數(shù))有:nHostr(Host的數(shù)量)、hCPU(Host的CPU能力)、hMemory(Host的內(nèi)存大小)、hIO(Host的IO能力),IaaS層性能參數(shù)(VM參數(shù))有nVM(VM的數(shù)量)、vCPU(VM的CPU能力)、vmemory(VM的內(nèi)存大小)、vIO(VM的IO能力).
有了這些性能參數(shù)之后,就可以將這些參數(shù)建立性能參數(shù)模型,找出相對應(yīng)的關(guān)系.
1.2 性能參數(shù)模型
通過找出的性能參數(shù)與Hadoop的流程作結(jié)合,得出性能模型如公式(1).
T=TSetup+TMap+TReduce+TCleanup,
(1)
其中,TSetup為程序啟動基本作業(yè)時間,TMap為Map階段作業(yè)執(zhí)行時間,TReduce為Reduce階段作業(yè)執(zhí)行時間,TCleanup為結(jié)束程序的基本作業(yè)執(zhí)行時間.
性能模型找出性能參數(shù)之間的關(guān)系,通過這樣的關(guān)系,找出3層參數(shù)對CPU、Memory、IO之間的性能模型:
1) 運(yùn)算能力CPU
每個VM的運(yùn)算能力vCPUN不一定會一樣,將這些vCPUN加總,就得到Host的運(yùn)算能力hCPU,如公式(2).
(2)
其中,k為VM的個數(shù).vCPU為VM的CPU能力.
而Slot的運(yùn)算能力sCPUN是由VM的運(yùn)算能力vCPUN除以Slot的數(shù)量nSlot,如公式(3).
(3)
2) 內(nèi)存大小Memory
Host的內(nèi)存大小計算如公式(4).
(4)
VM的內(nèi)存大小vMemoryN如公式(5).
vMemoryN≥mapred.child.java.opts*
(nMapSlot+nReduceSlot)+io.sort.mb+
mDataNode+mTracker+mOS,
(5)
其中,mapred.child.java.opts為JVM的大小,nMapSlot和nReduceSlot分別是Map和Reduce所使用的Slot數(shù)量,io.sort.mb為緩沖區(qū)的大小,mDataNode為啟動DataNode的基本內(nèi)存開銷,mTracker為啟動TaskTracker的基本內(nèi)存開銷,mOS為操作系統(tǒng)的基本開銷.
3) 磁盤IO
磁盤IO的計算如公式(6).
(6)
IO的模型主要是減輕IO的壓力,計算如公式(7).
vION=MapOutput+Intermediate+
ReduceOutput.
(7)
通過定義出來的參數(shù)性能模型,讓蟻群算法搜尋滿足上述各層的性能需求的參數(shù)解.
1.3 參數(shù)優(yōu)化模型的ACS
(8)
其中,Tj為調(diào)整參數(shù)后的執(zhí)行時間成本,Tj-1為調(diào)整參數(shù)前的執(zhí)行時間成本.
然后確定Hadoop參數(shù)配置,假設(shè)給定n個候選參數(shù)值i∈I,要選m個最佳參數(shù)值j∈J,可使用一個變量xij(變量xij表示最佳參數(shù)j是否選取候選參數(shù)值i),目標(biāo)是使執(zhí)行時間最小化,如公式(9).
(9)
期望值ηi,j的計算如公式(10),如果F的值越大,期望值就越小,反之F值越小,就會對蟻群的吸引力越大,也就是說當(dāng)執(zhí)行時間越少,蟻群越容易找到這個參數(shù)組合.
(10)
依照公式(11)和公式(12)可以判斷蟻群是否要選取這個參數(shù).
i=
(11)
(12)
AS在進(jìn)行整體信息素更新時,是以每只螞蟻的表現(xiàn)進(jìn)行更新的,ACS的更新方式如下:
整體信息素計算公式如公式(13).
τi,j(t)=(1-ρg)τi,j(t-1)+ρΔτi,j,
(13)
ACS在每一只螞蟻尋找一個可行解(可能參數(shù)值)的過程中,每經(jīng)過一個邊(i,j),即對該邊做一次信息素更新,以避免其它螞蟻收斂在局部解,并增加路徑尋找的多樣性,其更新方式如公式(14).
τi,j(t)=(1-ρl)τi,j(t-1)+ρl·τ0.
(14)
1.4 參數(shù)優(yōu)化模型的C-ACS
在跨層的參數(shù)優(yōu)化模型中將PaaS與IaaS的影響也考慮進(jìn)來,SaaS層采用ACS的方法,而Paas層的影響則采用跨層的方法C-ACS.跨層參數(shù)優(yōu)化模型的架構(gòu)圖如圖3.
圖3 跨層參數(shù)優(yōu)化模型的架構(gòu)圖Fig.3 Structure diagram of cross-layer parameter optimization model
跨層參數(shù)優(yōu)化模型的運(yùn)作流程:1)SaaS層優(yōu)化:執(zhí)行Hadoop的Job的調(diào)教,一開始執(zhí)行能被調(diào)整的參數(shù),取得每個參數(shù)對應(yīng)的執(zhí)行時間,將需要調(diào)整的參數(shù)的執(zhí)行時間作為路徑,執(zhí)行時間越短的幾率越高,越會被蟻群尋找到,從而搜尋到該時刻最佳的參數(shù)組合.2)Paas層優(yōu)化:在運(yùn)行中遇到VM繁忙時,本優(yōu)化模型會依照那個VM具有空閑的能力,將他暫時加入;遇到Host都很忙碌時,可以將VM從別的Host取得.3)IaaS層優(yōu)化:一開始本模型會去建立一個VM,并跑一個Job,得到執(zhí)行時間,通過這個執(zhí)行時間,評估出在一臺Host上需建立多少個VM.4)通過一開始IaaS層優(yōu)化,到PaaS層優(yōu)化,以及最后的SaaS層優(yōu)化,來構(gòu)建本參數(shù)優(yōu)化模型.
1.4.1 跨層優(yōu)化的目標(biāo)函數(shù)
1) SaaS層優(yōu)化的目標(biāo)函數(shù)
SaaS層優(yōu)化的目標(biāo)函數(shù)如公式(15).
(15)
2) PaaS層優(yōu)化的目標(biāo)函數(shù)
執(zhí)行過程中當(dāng)遇到節(jié)點突然壞死的情況,如果節(jié)點心跳一直沒有回傳回來,就會被加到這一次的Job的黑名單,這時需動態(tài)啟動一個節(jié)點來支援運(yùn)算,對于實體機(jī)可能無法那么快的新增節(jié)點,但對于虛擬機(jī)可以快速啟動節(jié)點,并加入到集群中.本模型利用跨層的ACS執(zhí)行搜尋實體機(jī)上是否還有空閑的資源可以利用,能利用的資源越多,對跨層的ACS吸引力就越大,如果要啟動節(jié)點的話,會在信息素最多的實體機(jī)上建立虛擬機(jī),來加入到集群中.
(16)
3) IaaS層優(yōu)化的目標(biāo)函數(shù)
現(xiàn)在的研究大部分注重在應(yīng)用層的參數(shù)調(diào)整上,所以一開始建立集群環(huán)境時,就沒特別最優(yōu)化.本優(yōu)化模型通過跨層ACS來進(jìn)行搜尋最佳的虛擬機(jī)搭配實體機(jī)的方式.一開始通過建立虛擬機(jī)并執(zhí)行Job得到執(zhí)行效率,建立蟻群初始值,讓蟻群尋找出最佳的實體機(jī)與虛擬機(jī)的搭配方式,最后產(chǎn)生出環(huán)境最佳組合,來組成虛擬機(jī)集群.
(17)
其中,Tj為調(diào)整虛擬機(jī)數(shù)量后的執(zhí)行時間成本,Tj-1為調(diào)整虛擬機(jī)數(shù)量前的執(zhí)行時間成本.
1.4.2 跨層目標(biāo)函數(shù)F(x) 跨層的目標(biāo)函數(shù)如公式(18).
(18)
讓ACS通過搜尋方式,可以找到最小的目標(biāo)函數(shù)F(x),從而達(dá)到跨層優(yōu)化目標(biāo),相對單一層的目標(biāo)函數(shù),跨層的目標(biāo)函數(shù)給定更多的參數(shù)選擇.
建立一個虛擬Hadoop集群,服務(wù)器配置:CPU為Intel Xeon E5-2690W,內(nèi)存32GB,硬盤2TB 7.2K RPM;軟件配置是:OS為Linux CentOS6.5-64bit,Hadoop版本為Hadoop2.2.0,Java版本為Sun JDK 6u45.6個虛擬節(jié)點的參數(shù)如表3.
表3 6個虛擬節(jié)點的參數(shù)情況
選一臺虛擬機(jī)同時作為Namenode和JobTracker,稱為主節(jié)點,其余虛擬機(jī)同時充當(dāng)DataNode和TaskTracker,稱為從屬節(jié)點.本文使用WordCount和Terasort來模擬實際的負(fù)載情況,WordCount主要測試CPU,Terasort主要測試IO.使用TeraGen這個測試工具,產(chǎn)生1G的文本文件,作為輸入的數(shù)據(jù)集.
2.1 參數(shù)最佳化組合結(jié)果
在執(zhí)行蟻群算法時,使用劉彥鵬[10]的方法先初始化,把初始值τ0設(shè)為0.006 944,信息素衰落參數(shù)(ρ)設(shè)為0.9,蟻群數(shù)量(S)設(shè)為3,α=1,β=2,執(zhí)行時間T=3,Q=100.實驗得到的最優(yōu)化參數(shù)如表4.
表4 實驗得到算法的最優(yōu)化參數(shù)
執(zhí)行效率比較如圖4.從圖中可看出,其模型比登山算法和系統(tǒng)默認(rèn)的都要好,這是由于登山算法被限制在所設(shè)定的范圍內(nèi)進(jìn)行搜索,所以當(dāng)范圍設(shè)置不當(dāng)時,只能找到設(shè)定范圍內(nèi)較佳參數(shù)解.而本文的方法通過探索的方式,找到設(shè)定范圍外的可用解.
圖4 執(zhí)行時間比較Fig.4 Comparison of executive time
2.2 節(jié)點失效情況
節(jié)點突然失效時的實驗結(jié)果如圖5.從實驗結(jié)果可看出,Default在節(jié)點失效時時間花費(fèi)較多,這是由于節(jié)點失效時,Default的狀態(tài)是用剩余的節(jié)點去完成運(yùn)算,但它還會嘗試失效的節(jié)點,這時將去做加入一個節(jié)點動作,當(dāng)新的節(jié)點進(jìn)入Hadoop集群時,會遇到要將數(shù)據(jù)傳輸?shù)竭@個節(jié)點上做運(yùn)算,所以會多花費(fèi)一些傳輸?shù)臅r間.
圖5 節(jié)點失效情況下執(zhí)行的效率對比Fig.5 Efficiency comparison of the execution in the case of node failure
2.3 與Starfish方法比較
本實驗使用Herodotou[7]的方法進(jìn)行比較,兩種方法最佳化參數(shù)組合比較如表5.
表5 最佳化參數(shù)組合比較
與Herodotou[7]的方法進(jìn)行比較,Wordcount與Terasort執(zhí)行的效率差異如圖6.從圖可以看出本文的算法效果明顯.這主要是Herodotou的方法主要根據(jù)經(jīng)驗來配置部分參數(shù).
圖6 執(zhí)行的效率差異Fig.6 Difference of the execution efficiency
本文研究目標(biāo)是希望提高Hadoop云計算平臺的性能,首先將Hadoop集群系統(tǒng)中使用到的參數(shù)歸納出來,分析云計算的工作流程中的參數(shù),將參數(shù)與流程一一對應(yīng),并加入IaaS層和PaaS層參數(shù),來找出那些參數(shù)值可以作為性能參數(shù),并把性能參數(shù)建立性能模型,用啟發(fā)式蟻群算法搜尋出執(zhí)行時間中最佳可行參數(shù),并不斷修正,找出最佳參數(shù)組合.仿真實驗表明跨層改善的方式比單一Hadoop層的改善,更具有彈性,性能的改善更好.未來的研究希望可以通過自動化的過程讓虛擬機(jī)通過跨層優(yōu)化的方式,建立虛擬集群,讓蟻群找到最佳參數(shù)組合,來改善Hadoop集群性能,同時還可以使用數(shù)據(jù)挖掘的算法來分析Job的特征,建立分類模型,當(dāng)Job要最佳化時,可以有特征值來進(jìn)行比對,這樣能使整個系統(tǒng)性能更優(yōu)越.
[1] 林 利, 石文昌. 構(gòu)建云計算平臺的開源軟件綜述[J].計算機(jī)科學(xué), 2012, 39(11):1-7.
[2] DEAN J,GHEMAWAT S. Map reduce:a flexible data processingtool[J].Communications of the ACM, 2010, 53(1): 72-77.
[3] 項 明. Hadoop集群系統(tǒng)性能優(yōu)化的研究[D].大連:遼寧師范大學(xué),2013.
[4] LEE G,CHUNB G, KATZ R H. Embracing heterogeneity in scheduling mapReduce [EB/OL].[2012-03-26].http://www.cs.berkeley.edu/~agearh/cs267.sp10/files/cs267-gunho.pdf.
[5] MURTHY A C. Speeding up Hadoop[EB/OL]. [2012-03-26].http://developer.yahoo.com/blogs/ydn/posts/2009/09/hadoop-summit-speeding-up-hadoop/.
[6] 代 棟, 周學(xué)海, 楊 峰. 一種基于模糊推理的Hadoop異構(gòu)機(jī)群自動配置工具[J].中國科學(xué)院研究生院學(xué)報, 2011, 28(6):793-798.
[7] HERODOTOU H, HAROLD L, GANG L, et al. Starfish: a self-tuning system for big data analytic[C]//Proc. 5th Biennial Conference on Innovative Data Systems Research. USA:CIDR, 2011: 261-272.
[8] LIN X, TANG W, WANG K. Predator—an experience guided configuration optimizer for HadoopMapReduce[C]//In Proceedings of the 2012IEEE 4th International Conference on Cloud Computing Technology and Science. Taiwan: IEEE Press, 2012:419-426.
[9] DORIGO M, GAMBARDELLA L M. Ant colony system: a cooperative learning approach to the traveling salesman problem[J]. IEEE Transactions on Evolutionary Computation, 1997, 1(1):53-66.
[10] 劉彥鵬. 蟻群優(yōu)化算法的理論研究及其應(yīng)用[D].杭州:浙江大學(xué),2007.
Cross-layer parameter optimization algorithm for Hadoop cloud computing platform
WANG Chunmei1, HU Yuping2, YI Yeqing3
(1.Department of Internet Finance & Information Engineering, Guangdong University of Finance, Guangzhou 510521; 2.School of Information, Guangdong University of Finance & Economics Guangdong, Guangzhou 510320; 3.Department of Information Science and Engineer, Hunan University of Humanities Science and Technology, Loudi, Hunan 417000)
In order to improve the performance of the Hadoop cloud computing platform, a parameter optimization model is presented for across layer of IaaS, PaaS and SaaS. Firstly, the work flow of cloud computing platform is analyzed, to make the system parameters correspond to the flow. The parameters of IaaS and PaaS layer are added and parameters which significant impact on Hadoop execution time are found. Performance parameter model is formed based on the above parameters and optimized by Heuristic ant colony algorithm. Finally, cross layer parameters are integrated to improve the performance of Hadoop cloud computing platform. Experiments show that the algorithm is feasible and perform well.
Hadoop cloud computing; parameter optimization; ant colony system; virtual machine
2015-12-30.
國家自然科學(xué)基金項目(61472135));廣東省科技計劃項目(2014B010102007).
1000-1190(2016)02-0183-07
TP393
A
*E-mail: mei_wangchun@163.com.