顏 燁,張學(xué)文,王立婧
(1.重慶大學(xué)城市科技學(xué)院 電氣信息學(xué)院,重慶 402167;2.北華大學(xué) 機(jī)械工程學(xué)院,吉林 吉林 132021;3.重慶大學(xué)城市科技學(xué)院 人文學(xué)院,重慶 402167)
混合云服務(wù)模式兼具公有云模式計(jì)算資源充足以及私有云安全隱私性好的雙重技術(shù)優(yōu)點(diǎn)[1]。在混合云服務(wù)模式下運(yùn)行諸如大數(shù)據(jù)分析等數(shù)據(jù)密集型業(yè)務(wù),用戶可靈活地選擇涉及關(guān)鍵數(shù)據(jù)和敏感數(shù)據(jù)的應(yīng)用程序運(yùn)行于私有云平臺(tái)上,而其它的應(yīng)用程序則跨越公有云和私有云服務(wù)[2,3]。然而,跨平臺(tái)數(shù)據(jù)遷移將會(huì)帶來(lái)執(zhí)行性能(如時(shí)間、物理開銷)的下降。因此,研究混合云模式下諸如數(shù)據(jù)密集型業(yè)務(wù)的數(shù)據(jù)存儲(chǔ)與遷移以及執(zhí)行性能預(yù)測(cè)與分析具有重要意義。
文獻(xiàn)[4]提出一種基于混合云的可擴(kuò)展視頻編碼視頻直播存儲(chǔ)及調(diào)度機(jī)制,但文中未涉及大數(shù)據(jù)分析相關(guān)內(nèi)容。文獻(xiàn)[5]提出了混合云存儲(chǔ)架構(gòu)下的大數(shù)據(jù)遷移策略,但僅關(guān)注了大數(shù)據(jù)的存儲(chǔ)機(jī)制與數(shù)據(jù)訪問速度提升,對(duì)大數(shù)據(jù)分析與存儲(chǔ)交互機(jī)制未做探討。文獻(xiàn)[6]設(shè)計(jì)了一種新型混合云平臺(tái)以滿足變電設(shè)備監(jiān)測(cè)大數(shù)據(jù)分析的多樣化實(shí)時(shí)需求,但未分析應(yīng)用層數(shù)據(jù)分析與存儲(chǔ)層實(shí)時(shí)交互耦合影響,且未考慮任務(wù)的時(shí)間成本。
MapReduce作為一種面向數(shù)據(jù)處理的編程框架[7],在混合云框架下迭代MapReduce應(yīng)用程序,可利用其輸入數(shù)據(jù)不變的特點(diǎn)節(jié)省數(shù)據(jù)存儲(chǔ)開銷。然而,考慮到數(shù)據(jù)遷移操作的初始開銷很高[8],有必要提出一種有效的數(shù)據(jù)存儲(chǔ)方案。此外,鑒于用戶提交數(shù)據(jù)至混合云平臺(tái)進(jìn)行大數(shù)據(jù)分析時(shí)必須對(duì)運(yùn)行經(jīng)濟(jì)成本與數(shù)據(jù)分析目標(biāo)成本的權(quán)衡[9],故在進(jìn)行混合云平臺(tái)上的大數(shù)據(jù)分析之前,必須對(duì)待處理的目標(biāo)問題進(jìn)行計(jì)算資源與計(jì)算時(shí)間的準(zhǔn)確預(yù)測(cè)。
基于上述分析,提出一種混合云框架下基于迭代Map-Reduce 應(yīng)用程序的大數(shù)據(jù)分析實(shí)現(xiàn)方法。主要?jiǎng)?chuàng)新點(diǎn)為:
(1)傳統(tǒng)方案在每次迭代中都進(jìn)行數(shù)據(jù)遷移操作,提出的方案在初次迭代過程中首先將輸入不變量遷移到公有云中,雖然增加了初始迭代過程的物理開銷,但在后續(xù)迭代計(jì)算過程中可有效節(jié)約數(shù)據(jù)遷移操作的時(shí)間,此外,無(wú)需對(duì)MapReduce框架或底層存儲(chǔ)層進(jìn)行修改,故而降低了技術(shù)難度;
(2)基于隨機(jī)森林算法,提出了大數(shù)據(jù)分析性能預(yù)測(cè)方法,準(zhǔn)確預(yù)測(cè)混合云平臺(tái)上運(yùn)行大數(shù)據(jù)分析過程中包括數(shù)據(jù)遷移與數(shù)據(jù)計(jì)算所需的時(shí)間。
MapReduce應(yīng)用程序中的數(shù)據(jù)存在高度的并發(fā)特性[10]。表現(xiàn)在:①大數(shù)據(jù)在映射階段以并行方式轉(zhuǎn)換為多個(gè)子數(shù)據(jù)集;②多個(gè)子數(shù)據(jù)集的處理結(jié)果在匯總(reduce)階段以并行方式進(jìn)行匯聚。因此,MapReduce應(yīng)用程序要求在映射階段大量并發(fā)地讀取數(shù)據(jù),而在匯總階段則大量并發(fā)地寫入數(shù)據(jù),故要求底層數(shù)據(jù)存儲(chǔ)層支持高度并發(fā)的I/O訪問模式。
然而,混合云平臺(tái)一般采用分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)[11]進(jìn)行數(shù)據(jù)存儲(chǔ),但直接使用與MapReduce無(wú)交互機(jī)制的傳統(tǒng)分布式文件系統(tǒng)進(jìn)行數(shù)據(jù)存儲(chǔ)于讀取將會(huì)產(chǎn)生大量的網(wǎng)絡(luò)通信數(shù)據(jù)流量,不足以發(fā)揮分布式文件系統(tǒng)的技術(shù)優(yōu)勢(shì)。原因在于:①傳統(tǒng)混合云設(shè)置中,數(shù)據(jù)初始存儲(chǔ)在內(nèi)部私有云中。因此,當(dāng)外部公有云通過設(shè)置虛擬機(jī)運(yùn)行應(yīng)用程序時(shí),首先需從私有云的虛擬機(jī)獲取并寫入數(shù)據(jù);②私有云與公有云間的通信鏈路一般容量是有限的。因此,混合云服務(wù)模式下,外部虛擬機(jī)與內(nèi)部虛擬機(jī)的通信比所有位于同一個(gè)云中的虛擬機(jī)間通信相比,其更易受到通信鏈路傳輸能力的制約。因此,在混合云平臺(tái)上運(yùn)行MapReduce的關(guān)鍵在于提高數(shù)據(jù)存儲(chǔ)與讀取的性能。
在混合云平臺(tái)上運(yùn)行MapReduce迭代程序時(shí),有兩個(gè)重要的環(huán)節(jié):①數(shù)據(jù)存儲(chǔ)與遷移;②性能預(yù)測(cè)評(píng)估。本節(jié)將數(shù)據(jù)存儲(chǔ)遷移操作與大數(shù)據(jù)迭代分析算法步驟有機(jī)結(jié)合起來(lái),提出一種混合云大數(shù)據(jù)分析實(shí)現(xiàn)方法,并提出了混合云平臺(tái)下大數(shù)據(jù)迭代計(jì)算的性能預(yù)測(cè)通用方法。
由于對(duì)于大數(shù)據(jù)分析這類需要重復(fù)迭代運(yùn)行的應(yīng)用程序而言,后續(xù)迭代過程中需要重復(fù)利用第一次迭代所需的大部分輸入數(shù)據(jù),這部分?jǐn)?shù)據(jù)稱為不變量。因此,外部公有云的虛擬機(jī)通過傳輸能力有限的通信鏈路重復(fù)讀取來(lái)自內(nèi)部虛擬機(jī)的輸入數(shù)據(jù)會(huì)嚴(yán)重占用通信資源;而對(duì)于隨迭代過程而改變的數(shù)據(jù),外部虛擬機(jī)則需要不斷的將數(shù)據(jù)通過通信鏈路寫入內(nèi)部虛擬機(jī),在后續(xù)迭代過程中再通過通信鏈路讀回?cái)?shù)據(jù)。
此外,簡(jiǎn)單地將不變數(shù)據(jù)和迭代后新寫入的數(shù)據(jù)直接存儲(chǔ)在外部公有云的虛擬機(jī)中以提高訪問速度并節(jié)約通信資源無(wú)法真正和MapReduce應(yīng)用程序相匹配。這是由于MapReduce中任務(wù)調(diào)度機(jī)制優(yōu)先調(diào)度內(nèi)部虛擬機(jī)中的數(shù)據(jù)資源,這將導(dǎo)致外部虛擬機(jī)資源的利用率不足。此外,調(diào)度機(jī)制的首要目標(biāo)是平衡虛擬機(jī)負(fù)載[12],故上述數(shù)據(jù)存儲(chǔ)方案與調(diào)度機(jī)制相沖突。
通過上述分析,在無(wú)需對(duì)MapReduce框架和底層存儲(chǔ)層改進(jìn)的基礎(chǔ)上,提出一種基于HDFS機(jī)架感知[13]的新型數(shù)據(jù)存儲(chǔ)方案。如圖1所示,具體內(nèi)容為,對(duì)于混合云的虛擬機(jī)配置,創(chuàng)建兩個(gè)邏輯組分別用于部署內(nèi)部私有云虛擬機(jī)和外部公有云虛擬機(jī)。當(dāng)配置新的外部公有云虛擬機(jī)以提高內(nèi)部私有云虛擬機(jī)計(jì)算能力時(shí),通過機(jī)架感知的方式在外部公有云虛擬機(jī)上擴(kuò)展HDFS部署。換言之,當(dāng)非本地私有云虛擬機(jī)寫入一個(gè)新的數(shù)據(jù)塊時(shí),實(shí)際上會(huì)同時(shí)創(chuàng)建本地副本和至少一個(gè)遠(yuǎn)程副本,從而實(shí)現(xiàn)彈性的數(shù)據(jù)存儲(chǔ)。而非本地私有云虛擬機(jī)則可以根據(jù)實(shí)際問題需要簡(jiǎn)單的終止,由于在本地私有云虛擬機(jī)中已有數(shù)據(jù)副本,故無(wú)需將遠(yuǎn)程副本傳輸回本地。
圖1 所提數(shù)據(jù)存儲(chǔ)遷移策略
考慮到經(jīng)濟(jì)成本與時(shí)間成本,往往使用不同的云服務(wù)模式完成大數(shù)據(jù)分析。因此,混合云平臺(tái)應(yīng)當(dāng)在用戶提交數(shù)據(jù)與目標(biāo)問題以確定所需的虛擬機(jī)配置之前,向用戶給出預(yù)計(jì)的計(jì)算資源與計(jì)算時(shí)間?;谏鲜霰尘埃岢鋈缦滦阅茴A(yù)測(cè)方法。
2.2.1 問題假設(shè)
設(shè)初始階段,MapReduce應(yīng)用部署在N個(gè)內(nèi)部私有云虛擬機(jī)上,且所有的初始不變數(shù)據(jù)均是分布存儲(chǔ)的。當(dāng)有M個(gè)外部公有云虛擬機(jī)擴(kuò)展以支撐N個(gè)內(nèi)部虛擬機(jī)進(jìn)行大數(shù)據(jù)分析任務(wù)時(shí),使用2.1節(jié)所提機(jī)架感知策略重新擴(kuò)展部署MapReduce應(yīng)用,并在生成的混合云平臺(tái)上迭代基于MapReduce的大數(shù)據(jù)分析應(yīng)用程序。為便于分析,設(shè)內(nèi)部虛擬機(jī)與外部虛擬機(jī)的配置能力相同,且用戶可以追溯應(yīng)用程序的歷史狀態(tài)或有權(quán)限知曉如下MapReduce的性能指標(biāo):①映射(map)/匯總(reduce)任務(wù)的總數(shù)量,記為PM和PR;②執(zhí)行map/reduce任務(wù)的物理槽位數(shù)量,記為kM和kR;③平均執(zhí)行map,reduce和調(diào)度任務(wù)的時(shí)間,記為(AM,AR,AS);④每次執(zhí)行map,reduce和調(diào)度任務(wù)的平均調(diào)度數(shù)據(jù)量,記為(DM,DR,DS)。
此外,設(shè)大數(shù)據(jù)分析應(yīng)用程序在運(yùn)行時(shí)動(dòng)態(tài)行為是可測(cè)的,即第一次迭代過程是先驗(yàn)已知的,而后續(xù)每次的map/reduce操作過程中的輸入數(shù)據(jù)量、新生成數(shù)據(jù)量以及計(jì)算復(fù)雜度相互獨(dú)立,互不影響。
2.2.2 內(nèi)部虛擬機(jī)工作性能評(píng)價(jià)指標(biāo)
在第i(i=1,…,I) 次map操作中,設(shè)數(shù)量為NumM_i的任務(wù)集合采用貪心分配[14]策略分配到kM_i個(gè)物理機(jī)上。這一過程中,首先需要啟動(dòng)任務(wù)調(diào)度操作,因此會(huì)引入額外時(shí)間,需要單獨(dú)考慮其時(shí)間開銷,記其執(zhí)行時(shí)間為T1,其值與物理設(shè)備性能和軟件系統(tǒng)工作機(jī)制有關(guān),可以視為一個(gè)常量。而后續(xù)任務(wù)執(zhí)行的執(zhí)行時(shí)間的理論下限出現(xiàn)的情形為:速度最慢的任務(wù)最后被調(diào)度執(zhí)行,而此前的NumR_i個(gè)任務(wù)已經(jīng)執(zhí)行完畢。故第i次map操作的理論最大執(zhí)行時(shí)間為
(1)
進(jìn)一步地,其最小執(zhí)行延遲則出現(xiàn)在工作負(fù)載完全達(dá)到平衡,所有任務(wù)都以正常效率執(zhí)行。因此,第i次map操作的理論最小執(zhí)行時(shí)間為
(2)
由于MapReduce中reduce操作和map操作相互獨(dú)立,但不需要再次進(jìn)行任務(wù)調(diào)度操作,故類似于式(1)、式(2),第i(i=2,3,…,J) 次reduce操作的最短執(zhí)行時(shí)間與最長(zhǎng)執(zhí)行時(shí)間為
(3)
綜上,對(duì)于第i次迭代過程而言,其執(zhí)行完畢所需時(shí)延下界可通過下式估計(jì)得到
(4)
對(duì)于迭代次數(shù)為I的大數(shù)據(jù)分析應(yīng)用,其總完成時(shí)間可通過下式估計(jì)得到
(5)
2.2.3 混合云模式下性能分析模型
混合云模式下,上述估計(jì)方法受到如下兩方面因素的影響:①底層后臺(tái)基于機(jī)架感知策略進(jìn)行工作負(fù)載平衡時(shí)會(huì)占用額外物理開銷,導(dǎo)致map、reduce和調(diào)度操作的執(zhí)行速度被削弱;②當(dāng)同時(shí)部署外部公有云虛擬機(jī)和內(nèi)部私有云虛擬機(jī)時(shí),二者間的調(diào)度操作將受到通信傳輸能力的限制。
為簡(jiǎn)化分析,我們首先忽略公有云與私有云虛擬機(jī)之間數(shù)據(jù)調(diào)度存在的通信能力受限問題,重點(diǎn)關(guān)注混合云模式下大數(shù)據(jù)分析應(yīng)用執(zhí)行過程中的時(shí)延預(yù)測(cè)問題,從兩方面提出一種改進(jìn)的執(zhí)行時(shí)間預(yù)測(cè)方法。具體而言:
(1)引入一個(gè)衰減作用因子β以表征負(fù)載平衡過程中對(duì)MapReduce執(zhí)行速度的影響,當(dāng)負(fù)載平衡操作運(yùn)行時(shí),β>1,而負(fù)載平衡操作完成后,β=1;
(2)由于負(fù)載平衡期間引發(fā)的數(shù)據(jù)從內(nèi)部虛擬機(jī)遷移到外部虛擬機(jī),故更多的本地資源可提供給調(diào)度程序,等效于更多的外部資源可以執(zhí)行映射操作。為便于分析,設(shè)只有本地私有云上的機(jī)架用于調(diào)度操作。此外,所有映射操作在開始迭代MapReduce時(shí)進(jìn)行調(diào)度。從而第i次并發(fā)執(zhí)行的map操作數(shù)量kM_i取決于迭代開始時(shí)負(fù)載平衡的進(jìn)度;當(dāng)負(fù)載平衡進(jìn)度完成后,并發(fā)執(zhí)行的映射操作占用的物理槽位分布于內(nèi)部私有云虛擬機(jī)和外部公有云虛擬機(jī)上。從而混合云模式下,map操作的總完成時(shí)間的上界和下界分別為
(6)
2.2.4 基于隨機(jī)森林算法的參數(shù) (β,kM_i) 求解
隨機(jī)森林算法中,采用分類回歸樹對(duì)每個(gè)數(shù)據(jù)集樣本構(gòu)建決策樹。而每顆決策樹采用隨機(jī)分裂的方法進(jìn)一步生成大量決策樹,形成隨機(jī)森林。所提算法的主要步驟為:
步驟1 根節(jié)點(diǎn)數(shù)據(jù)樣本生成。對(duì)于Num個(gè)樣本的數(shù)據(jù)集,有放回地選擇num(≤Num) 個(gè)樣本組成新的Bootstrap樣本,并將其作為該決策樹的根節(jié)點(diǎn)處的樣本,每個(gè)樣本對(duì)應(yīng)的特征量為私有云虛擬機(jī)數(shù)量、外部公有云虛擬機(jī)數(shù)量、數(shù)據(jù)規(guī)模、map操作數(shù)量、reduce操作數(shù)量,共5個(gè),特征構(gòu)成的集合記作P0={p1,p2,p3,p4,p5};
步驟2 決策樹分裂操作。每個(gè)數(shù)據(jù)樣本中的數(shù)量若小于某一閾值γ,則樣本既作為根節(jié)點(diǎn)數(shù)據(jù)集也作為葉子節(jié)點(diǎn)不再進(jìn)行分裂;否則,從上述5個(gè)特征量中隨機(jī)選擇η個(gè)特征量構(gòu)成集合p′, 一般η經(jīng)驗(yàn)值要大于總特征數(shù)量的 1/3,本文選取為2。對(duì)P′中的每個(gè)特征p′={p1,p2,p3,p4,p5}, 選擇λ(λ=1,2,…,λmax) 個(gè)分裂點(diǎn)對(duì)p′在其允許范圍內(nèi)進(jìn)行隨機(jī)改變,例如對(duì)私有云虛擬機(jī)數(shù)量在其最小值與最大值間隨機(jī)變化。進(jìn)而計(jì)算出分裂后的參數(shù) (β,kM_i)。 計(jì)算出Num個(gè)樣本以不同特征量 {pj}(j=1,2,3,4,5) 和分裂點(diǎn)λk(k=1,2,…,λmax) 進(jìn)行分裂的方差,若方差的最小值小于閾值σ, 則將本節(jié)點(diǎn)作為葉子節(jié)點(diǎn)不再分裂;反之,所選擇最小方差對(duì)應(yīng)的特征量以及分裂點(diǎn)取值作為分裂特征和分裂點(diǎn)作為最佳分裂點(diǎn);
步驟3 重復(fù)上述步驟1和步驟2,構(gòu)建具有一定數(shù)量的決策森林。
為驗(yàn)證所提方法的可行性與優(yōu)異性,搭建混合云測(cè)試平臺(tái),其中,內(nèi)部私有云具有4個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),配置4核Intel Xeon X3430 CPU,500 GB HDD和4 GB RAM,用于資源管理任務(wù)。外部公有云具有4個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),配置2×8核Intel Xeon E5-2630v3 CPU,1 TB HDD和64 GB RAM。用于配置虛擬機(jī)。內(nèi)部云與外部云均運(yùn)行OpenStack云計(jì)算程序,運(yùn)行QEMU/KVM應(yīng)用程序以配置虛擬機(jī),兩個(gè)應(yīng)用程序相互獨(dú)立。OpenStack云計(jì)算程序?qū)⒕W(wǎng)絡(luò)劃分為3個(gè)相互獨(dú)立的通信域:管理網(wǎng)絡(luò)(即用于傳輸控制消息和管理流量),內(nèi)部網(wǎng)絡(luò)(即用于傳輸使用內(nèi)部私有云IP地址的虛擬機(jī)之間的流量)和外部網(wǎng)絡(luò)(即用于傳輸內(nèi)部私有云虛擬機(jī)與外部公有云間的流量)。內(nèi)部私有云虛擬機(jī)和外部公有云虛擬機(jī)的任何通信都通過網(wǎng)絡(luò)進(jìn)行通信,且通信吞吐量為1 Gbps。
對(duì)于虛擬機(jī)配置,提出如下配置參數(shù):每個(gè)虛擬機(jī)具有4個(gè)CPU,100 GB HDD和16 GB RAM,且每個(gè)計(jì)算節(jié)點(diǎn)都具有管理4個(gè)虛擬機(jī)的能力。如圖2所示,對(duì)于內(nèi)部私有云,每個(gè)云計(jì)算節(jié)點(diǎn)部署4個(gè)Hadoop 2.6.0的虛擬機(jī),并指定其中一個(gè)虛擬機(jī)作為Hadoop主服務(wù)器,而其它虛擬機(jī)作為Hadoop從服務(wù)器;對(duì)于外部公有云,每個(gè)云計(jì)算節(jié)點(diǎn)配置1-3個(gè)部署了Hadoop的虛擬機(jī)。
圖2 混合云部署示例
基于前述分析,實(shí)驗(yàn)驗(yàn)證目標(biāo)具體而言有兩個(gè):①驗(yàn)證2.1節(jié)所提數(shù)據(jù)存儲(chǔ)策略的可行性;②驗(yàn)證第2節(jié)所提性能預(yù)測(cè)方法的準(zhǔn)確性。故設(shè)計(jì)如下實(shí)驗(yàn)場(chǎng)景:
場(chǎng)景1:構(gòu)建參數(shù) (β,kM_i) 求解隨機(jī)森林:通過構(gòu)造樣本數(shù)據(jù)得到參數(shù) (β,kM_i) 的隨機(jī)森林。
場(chǎng)景2:數(shù)據(jù)存儲(chǔ)策略驗(yàn)證實(shí)驗(yàn):通過改變內(nèi)部私有云和外部公有云上部署的虛擬機(jī)數(shù)量,與場(chǎng)景1標(biāo)準(zhǔn)樣本中的配置方案下統(tǒng)性能進(jìn)行對(duì)比,以驗(yàn)證實(shí)驗(yàn)?zāi)繕?biāo)1。
(7)
然后,討論理論預(yù)測(cè)結(jié)果與實(shí)際運(yùn)行時(shí)延的對(duì)比結(jié)果以驗(yàn)證實(shí)驗(yàn)?zāi)繕?biāo)②。此外,為進(jìn)一步說明所提方法的適用性,設(shè)置兩組不同的大數(shù)據(jù)分析應(yīng)用程序,即:K-means聚類分析和非結(jié)構(gòu)化文本分析。
本次實(shí)驗(yàn)中,使用的輸入數(shù)據(jù)量大小為20 GB,而每個(gè)映射處理器處理的數(shù)據(jù)量大小是隨機(jī)變化的,等價(jià)于映射處理器的數(shù)量是隨機(jī)變化的。因此,生成隨機(jī)森林算法所使用的數(shù)據(jù)樣本生成操作為:首先,在內(nèi)部虛擬云中的3個(gè)虛擬機(jī)上部署HDFS,并寫入運(yùn)行TestDFSIO來(lái)生成數(shù)據(jù)塊。在初始數(shù)據(jù)寫入完畢后,部署在內(nèi)部私有云虛擬機(jī)上的HDFS可進(jìn)一步擴(kuò)展部署至外部公有云虛擬機(jī)上;其次,在負(fù)載平衡階段,令同時(shí)啟動(dòng)另一個(gè)TestDFSIO程序。
同時(shí),令負(fù)載平衡階段內(nèi)部存儲(chǔ)的每個(gè)數(shù)據(jù)塊至少一個(gè)副本被移動(dòng)到外部部署的虛擬機(jī)上。在實(shí)驗(yàn)運(yùn)行期間,記錄負(fù)載平衡階段遷移到外部公有云上的數(shù)據(jù)數(shù)量,從而形成包含不同虛擬機(jī)配置方案以及對(duì)應(yīng)算法性能的數(shù)據(jù)樣本。進(jìn)而應(yīng)用2.2.4節(jié)所提步驟構(gòu)建隨機(jī)森林。
記具有N個(gè)部署在內(nèi)部私有云上的虛擬機(jī)和M個(gè)部署在外部公有云上的虛擬機(jī)配置方案表示為N-on-M-off。其中,令M=0表示基準(zhǔn)情況下的傳統(tǒng)單一云存儲(chǔ)方案,采用文獻(xiàn)[15]提出的方案作為對(duì)比,而M>0則表示所提混合云存儲(chǔ)方案?;鶞?zhǔn)方案和混合配置方案下TestDFSIO實(shí)驗(yàn)被重復(fù)執(zhí)行10次,并將這些結(jié)果進(jìn)行參數(shù)β的計(jì)算。表1給出了表示部分配置方案下的數(shù)據(jù)傳輸時(shí)間與負(fù)載平衡時(shí)間的對(duì)應(yīng)關(guān)系。其中,配置1:3-on-0-off (即為文獻(xiàn)[15]所提單一云配置方案);配置2:3-on-3-off;配置3:3-on-6-off;配置4:3-on-9-off;配置5:3-on-12-off。表2則示出了TestDFSIO的每個(gè)并發(fā)讀取迭代的平均完成時(shí)間。
表1 不同虛擬機(jī)配置下的負(fù)載平衡過程
可以看出,混合云模式下,基于機(jī)架感知策略的數(shù)據(jù)遷移存儲(chǔ)與負(fù)載平衡顯著占用了物理開銷,從而降低了并發(fā)讀取吞吐量,負(fù)載平衡開銷時(shí)間與單一云模式上升了40.5%以上。從表2還可以看出,所有混合云配置方案下的β值與單一云模式較為接近。
表2 TestDFSIO 每次迭代的平均完成時(shí)間
本節(jié)通過在混合云平臺(tái)上運(yùn)行K-means聚類應(yīng)用程序以驗(yàn)證所提方法的可行性。K-means基本原理為,將一組多維向量劃分為k個(gè)集合,使得來(lái)自相同集合的所有向量之間的距離平方和及其平均值最小。一般使用迭代步驟進(jìn)行K-means聚類求解,即每次迭代過程中都基于來(lái)自先前迭代的結(jié)果計(jì)算新均值,直到它們保持不變(或變化量小于預(yù)設(shè)閾值)。
本次實(shí)驗(yàn)中基于MapReduce框架實(shí)現(xiàn)K-means聚類分析,在每次迭代時(shí)僅生成少量的中間數(shù)據(jù)(即k個(gè)集合對(duì)應(yīng)的均值),但迭代過程之間則會(huì)有大量保持不變的輸入數(shù)據(jù)。故K-means本質(zhì)上是一種密集型映射操作。實(shí)驗(yàn)同樣使用20 GB的輸入數(shù)據(jù),并進(jìn)行10次迭代處理。
首先進(jìn)行傳統(tǒng)單個(gè)OpenStack云進(jìn)行基準(zhǔn)實(shí)驗(yàn),其中部署Hadoop的虛擬機(jī)數(shù)量是可變的。圖3(a)示出了隨著虛擬機(jī)數(shù)量變化K-means完成時(shí)間的變化特性??芍S著Hadoop部署規(guī)模的不斷擴(kuò)大,執(zhí)行K-means的完成時(shí)間在不斷下降,從而驗(yàn)證了虛擬機(jī)的擴(kuò)展性對(duì)K-means性能具有明顯的影響。圖3同樣示出了K-means實(shí)際運(yùn)行時(shí)間和利用所提預(yù)測(cè)方法預(yù)測(cè)的時(shí)延上、下界間的位置關(guān)系??梢?,基準(zhǔn)實(shí)驗(yàn)下,實(shí)際運(yùn)行時(shí)間總是在理論預(yù)測(cè)的上、下界之間,且上界值與實(shí)際運(yùn)行值間的誤差最多不超過7.8%,而下界值與實(shí)際運(yùn)行值間的誤差最多不超過5.9%。故所提性能預(yù)測(cè)方法能夠較準(zhǔn)確地估計(jì)K-means運(yùn)行所需時(shí)間。
隨后,進(jìn)行混合云平臺(tái)下的K-means實(shí)驗(yàn)。包括部署于內(nèi)部私有云上的3個(gè)虛擬機(jī)和部署于外部公有云上數(shù)量可變的虛擬機(jī)。初始階段,Hadoop僅部署在內(nèi)部私有云上,并按照第2節(jié)所提數(shù)據(jù)存儲(chǔ)方案擴(kuò)展到外部公有云上。負(fù)載平衡策略與K-means程序同時(shí)啟動(dòng)運(yùn)行。圖3(b)所示混合云下K-means執(zhí)行時(shí)間隨部署虛擬機(jī)數(shù)量的變化趨勢(shì)。與基準(zhǔn)實(shí)驗(yàn)相比,負(fù)載平衡階段所占用的物理開銷對(duì)執(zhí)行時(shí)間產(chǎn)生了負(fù)面影響,執(zhí)行時(shí)間最多增加40%,但執(zhí)行時(shí)間仍是隨著擴(kuò)展部署的虛擬機(jī)數(shù)量增加而下降。圖4同樣示出了采用所提性能預(yù)測(cè)方法推導(dǎo)的理論執(zhí)行延時(shí)的上界與下界值和實(shí)際運(yùn)行時(shí)間??芍?,實(shí)際運(yùn)行時(shí)間同樣保持在理論推導(dǎo)的上界與下界之間,且下界誤差最多為10%,而上界誤差最多為7.9%。
圖3 實(shí)際完成時(shí)間與理論預(yù)測(cè)時(shí)間
圖4 K-means聚類每次迭代完成時(shí)間
圖4為每次迭代過程的完成時(shí)間。對(duì)于3-on-0-off的基準(zhǔn)情形,每次迭代的完成時(shí)間基本保持不變。而對(duì)于所提考慮數(shù)據(jù)存儲(chǔ)的混合云方案(即3-on-M-off)情況,第一次迭代的完成時(shí)間將明顯大于后續(xù)迭代操作的完成時(shí)間。這由于,第一次迭代時(shí)同時(shí)進(jìn)行了數(shù)據(jù)遷移與負(fù)載平衡操作,從而后續(xù)迭代時(shí)可以重復(fù)使用不變輸入量。而最終迭代完成時(shí)間表明,提出的方案較之于傳統(tǒng)單一云方案降低至少51.4%以上。
通過迭代Grep實(shí)驗(yàn)進(jìn)一步說明所提方案的適用性。Grep是一種用于大型非結(jié)構(gòu)化文本的流行分析工具,其由一組獨(dú)立的Grep操作組成,通過查找與給定正則表達(dá)式匹配的所有字符串,并根據(jù)匹配的數(shù)量對(duì)它們進(jìn)行排序。每次迭代過程中,輸入數(shù)據(jù)保持不變,但正則表達(dá)式則隨著每次迭代發(fā)生變化。如,為計(jì)算百度百科文章中某個(gè)術(shù)語(yǔ)出現(xiàn)的次數(shù),并依據(jù)統(tǒng)計(jì)數(shù)量建立新的正則表達(dá)式以找到與另一個(gè)術(shù)語(yǔ)的相關(guān)性。由于正則表達(dá)式通常是確定的,故映射操作的輸出十分簡(jiǎn)單,因此,Grep可以歸類為典型的映射密集型MapReduce作業(yè)。
本次實(shí)驗(yàn)使用標(biāo)準(zhǔn)的Hadoop Grep應(yīng)用程序。使用 20 GB 的百度百科文章作為輸入數(shù)據(jù),列舉10個(gè)關(guān)鍵詞對(duì)輸入數(shù)據(jù)進(jìn)行10次迭代,并同樣采用文獻(xiàn)[15]所提單一云存儲(chǔ)方案作為所提混合云方案的對(duì)比實(shí)驗(yàn)。
圖5(a)所示傳統(tǒng)單個(gè)云平臺(tái)下運(yùn)行Grep應(yīng)用程序的完成時(shí)間,即基準(zhǔn)實(shí)驗(yàn)的完成時(shí)間。與上節(jié)類似,隨著虛擬機(jī)數(shù)量的增加,完成時(shí)間逐漸下降。實(shí)際完成時(shí)間與理論預(yù)測(cè)時(shí)間的上界與下界之間的誤差分別為19.54%和9.09%,但實(shí)際完成時(shí)間仍在理論預(yù)測(cè)的上下限范圍之內(nèi)。
進(jìn)一步地,對(duì)于混合云模式下的Grep應(yīng)用程序執(zhí)行性能,同樣在私有云上部署3個(gè)虛擬機(jī),而外部公有云虛擬機(jī)的數(shù)量是可變的。圖5(b)為Grep完成時(shí)間隨虛擬機(jī)數(shù)量變化而變化趨勢(shì)。同樣地,隨著外部公有云上部署的虛擬機(jī)數(shù)量的增加,Grep應(yīng)用程序執(zhí)行時(shí)間逐漸下降。而理論推導(dǎo)的執(zhí)行時(shí)延上界與下界與實(shí)際執(zhí)行時(shí)間之間的誤差為6.86%和7.3%。
圖5 實(shí)際完成時(shí)間與理論預(yù)測(cè)時(shí)間
類似地,圖6為每次迭代完成時(shí)間。對(duì)于基準(zhǔn)的傳統(tǒng)單一云方案(即3-on-0-off),每次迭代完成時(shí)間基本保持不變而混合云模式下(即3-on-M-off),初始迭代完成時(shí)間由于數(shù)據(jù)遷移與負(fù)載平衡操作的同時(shí)進(jìn)行,其時(shí)間長(zhǎng)于后續(xù)迭代時(shí)間。而最終所提混合云運(yùn)行方案的迭代完成時(shí)間則比單一云平臺(tái)下的迭代完成時(shí)間縮短至少12.6%。
圖6 Grep文本分析每次迭代完成時(shí)間
混合云平臺(tái)由于兼具了私有云安全可靠和公有云計(jì)算能力強(qiáng)的優(yōu)點(diǎn),具有明顯的技術(shù)經(jīng)濟(jì)優(yōu)勢(shì)。然而,在混合云框架下運(yùn)行諸如大數(shù)據(jù)分析之類的密集型數(shù)據(jù)業(yè)務(wù)尚處于起步階段,存在底層數(shù)據(jù)存儲(chǔ)與高級(jí)應(yīng)用程序不匹配、應(yīng)用執(zhí)行時(shí)間預(yù)測(cè)不準(zhǔn)確的難點(diǎn)。針對(duì)上述問題,本文提出了在混合云上迭代MapReduce程序進(jìn)行大數(shù)據(jù)分析的實(shí)現(xiàn)方法。實(shí)驗(yàn)結(jié)果表明,所提數(shù)據(jù)存儲(chǔ)方法僅在大數(shù)據(jù)初次迭代時(shí)增加了物理開銷,但有效提升了后續(xù)迭代過程中的執(zhí)行速度,且所提預(yù)測(cè)方法能夠準(zhǔn)確預(yù)測(cè)迭代大數(shù)據(jù)計(jì)算任務(wù)的執(zhí)行時(shí)間。因此,相較于傳統(tǒng)的大數(shù)據(jù)存儲(chǔ)與遷移方法,所提混合云框架運(yùn)行大數(shù)據(jù)分析實(shí)現(xiàn)方法可以有效節(jié)約計(jì)算時(shí)間開銷,具有更好的經(jīng)濟(jì)性與技術(shù)優(yōu)勢(shì)。
后續(xù)的研究中,將深入討論私有云與公有云通信傳輸容量限制對(duì)迭代MapReduce應(yīng)用程序執(zhí)行性能的影響,從而進(jìn)一步提高預(yù)測(cè)精度。