宗 平,梁勝昔
(1.南京郵電大學(xué) 海外教育學(xué)院,江蘇 南京 210023;2.南京郵電大學(xué) 計算機學(xué)院,江蘇 南京 210023)
在云計算環(huán)境下的數(shù)據(jù)存儲過程中,數(shù)據(jù)副本對于提高系統(tǒng)可用性和可靠性,以及降低并發(fā)訪問的響應(yīng)時間發(fā)揮著重要作用。針對云計算環(huán)境下默認(rèn)副本因子機制存在的不足,很多學(xué)者提出了對副本因子的改進措施,主要集中在對默認(rèn)副本因子的動態(tài)調(diào)整上。
文獻(xiàn)[1]利用馬爾可夫模型獲取文件訪問熱度并修正預(yù)測偏差以對默認(rèn)副本因子進行更加準(zhǔn)確的調(diào)整。文獻(xiàn)[2]通過數(shù)據(jù)中心選舉和動態(tài)副本管理策略,同時結(jié)合近期最少使用算法LRU,做到了副本數(shù)量優(yōu)化和系統(tǒng)性能的均衡。文獻(xiàn)[3]通過建立概率優(yōu)化模型,根據(jù)約束不等式來計算優(yōu)化后的副本數(shù)量,同時在遠(yuǎn)端節(jié)點選擇中引入節(jié)點評價系數(shù)以優(yōu)化副本的放置。文獻(xiàn)[4]提出的動態(tài)副本創(chuàng)建算法(DRCA)將副本調(diào)整劃分為復(fù)制、保持和刪除三個階段,結(jié)合文件訪問頻率算法進行文件訪問熱度的預(yù)測,并綜合考慮了其他多種因素對副本數(shù)量進行動態(tài)調(diào)整,從而有效降低了文件訪問的時間消耗。文獻(xiàn)[5]結(jié)合文件block的訪問頻率,提出了一種基于訪問頻率的副本算法,通過計算文件block的本地和全局支持率,同時考慮了block訪問頻率,以優(yōu)化副本數(shù)量,從而達(dá)到降低存儲空間消耗的目的。事實上,目前云環(huán)境下的副本因子策略主要分為靜態(tài)副本因子策略和動態(tài)副本因子策略兩大類[6],默認(rèn)的副本因子一般采用靜態(tài)副本策略,由于靜態(tài)副本策略在云環(huán)境下存在諸多不足,目前研究熱點主要集中在如何通過動態(tài)地調(diào)整副本數(shù)量,在提高性能和可靠性的同時,有效降低副本維護的代價。
開源云計算框架Apache Hadoop[7]的出現(xiàn),為人類在大數(shù)據(jù)時代更加科學(xué)高效地存儲及處理海量數(shù)據(jù)提供了有力支持,作為Google云計算模型基于Java的開源實現(xiàn),逐漸成為企業(yè)將應(yīng)用遷移到云中的一個有效方案。在實現(xiàn)海量數(shù)據(jù)的存儲時,Hadoop主要借助開源的分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)來實現(xiàn)文件的高效和可靠性存儲,然而HDFS默認(rèn)的副本機制卻成為制約其性能和可靠性提高的一項重要因素[8-11]。
HDFS[12-14]主要基于廉價的分布式機器集群,為整個系統(tǒng)提供高可靠、高性能、可擴展和容錯性強的分布式存儲服務(wù)。HDFS采取典型的Master/Slave架構(gòu),主要由NameNode、DataNode、SecondaryNameNode三個組件組成,如圖1所示。
圖1 HDFS主要結(jié)構(gòu)示意圖
其中NameNode是Master節(jié)點,負(fù)責(zé)存儲整個集群的元數(shù)據(jù)信息,對集群中眾多的DataNode節(jié)點進行統(tǒng)一管理和維護,同時控制DataNode從節(jié)點進行相應(yīng)的I/O操作;NameNode節(jié)點在整個集群中起到了重要的管理和控制角色,為防止發(fā)生單點故障,系統(tǒng)中設(shè)計了SecondaryNameNode節(jié)點以實現(xiàn)對NameNode的備份。DataNode主要負(fù)責(zé)存儲具體的文件數(shù)據(jù),并負(fù)責(zé)接受文件的讀/寫請求。由于分布式集群中的機器為廉價機器,存在很大的宕機可能性,HDFS通過多副本備份機制來提高系統(tǒng)的可靠性和穩(wěn)定性,同時這些分布在集群中的多副本還可以提高MapReduce的計算性能。
目前主流的副本因子管理策略主要分為兩種:靜態(tài)策略和動態(tài)策略。靜態(tài)副本管理策略通過預(yù)先配置的副本因子,是一種較為簡單的副本因子實現(xiàn)機制,但缺乏靈活性,無法適應(yīng)系統(tǒng)環(huán)境的變化。過低的副本因子對系統(tǒng)的可靠性和性能會造成影響,過高的副本因子則會極大增加存儲空間的消耗,尤其在大數(shù)據(jù)時代,用戶數(shù)據(jù)量可以達(dá)到PB、EB級甚至更高,如果一味通過增加副本因子來提高系統(tǒng)性能和可靠性,無疑會對存儲空間利用提出巨大挑戰(zhàn),因此副本因子管理機制需要做到系統(tǒng)性能及可靠性和存儲代價的均衡與折中。目前Hadoop系統(tǒng)默認(rèn)采用靜態(tài)副本機制,存在較大的優(yōu)化空間。
動態(tài)副本因子策略能更好地適應(yīng)用戶訪問頻率、存儲空間、系統(tǒng)帶寬、系統(tǒng)響應(yīng)時間和網(wǎng)絡(luò)拓?fù)涞鹊淖兓谶\行時刻動態(tài)地調(diào)整副本因子,根據(jù)評價指標(biāo)對副本數(shù)量進行適應(yīng)性的增加、減少或者保持。動態(tài)副本因子往往能夠更好地滿足云計算中多用戶和異構(gòu)存儲環(huán)境下的數(shù)據(jù)訪問需求,具有更大的靈活性和針對性,同時能做到性能、可靠性與存儲代價等的有效折中。
HDFS默認(rèn)采用3副本的靜態(tài)副本機制,不能較好地適應(yīng)系統(tǒng)的動態(tài)變化,包括用戶訪問頻率、異構(gòu)節(jié)點性能和結(jié)構(gòu)等的差異,尤其在云計算中多用戶環(huán)境下,不同用戶對不同文件的訪問頻率存在較大差異,即文件的訪問熱度差異較大。如果對訪問熱度存在較大差異性的不同文件采取統(tǒng)一的副本因子機制,熱度偏高的文件因為副本因子過小而不能很好地應(yīng)對較高頻率的訪問需求,熱度偏低的文件因保留過多的副本數(shù)而造成存儲空間的浪費。因此動態(tài)副本機制是解決多用戶環(huán)境下,文件訪問熱度不均對文件訪問響應(yīng)時間以及網(wǎng)絡(luò)負(fù)載造成影響的一種有效方案。但在采取動態(tài)副本因子策略的同時,也需要對待調(diào)整副本因子的文件進行有效篩選,如果對所有文件采取統(tǒng)一的副本因子動態(tài)調(diào)整策略會帶來較大的時間和空間上的消耗,同時副本調(diào)整策略還需要能夠有效應(yīng)對文件訪問的突發(fā)性需求[15],能夠在文件熱度突增的情況下保持較高的數(shù)據(jù)訪問性能。
針對HDFS默認(rèn)靜態(tài)副本策略在文件訪問熱度分布不均的情況下所存在的不足,以及現(xiàn)有的動態(tài)副本策略在進行副本因子調(diào)整時存在的統(tǒng)一決策和調(diào)整的問題,提出了一種改進的動態(tài)副本因子調(diào)整策略。該策略在根據(jù)文件的訪問熱度進行副本因子調(diào)整的同時,還考慮了不同文件熱度的優(yōu)先級,并且根據(jù)兩種不同長度的時間區(qū)間進行副本因子的調(diào)整決策,從而可以很好地適應(yīng)文件訪問熱度突增的情況。
假設(shè)集群中存在的文件數(shù)目為n,文件集合記為F={f1,f2,…,fn}。對于文件fk∈F(k∈[1,n]),fk被切分成nk個block分別存儲在不同的DataNode節(jié)點上,fk被切分成的block集合記為Bk={b1,b2,…,bnk},每個block的大小是bsj(其中j∈[1,nk]),fk的副本數(shù)目記為brk。
(1)文件fk在tnow時刻的訪問熱度FHk。
(1)
其中,ak(ti,ti+1)是文件fk在時間區(qū)間(ti,ti+1)內(nèi)的文件訪問次數(shù);函數(shù)decay(ti,tnow)是文件訪問次數(shù)對文件熱度影響的衰減函數(shù),在時間區(qū)間(ti,tnow)內(nèi),decay(ti,tnow)定義為:
decay(ti,tnow)=e-(tnow-ti)m,m∈{1,2,3…}
(2)
根據(jù)數(shù)據(jù)訪問的時間局部性原理,當(dāng)前被頻繁訪問的文件在未來的一定時間范圍內(nèi)存在較高的被再次訪問的概率,因此可以根據(jù)當(dāng)前時間之前一段時間區(qū)間內(nèi)的用戶文件訪問次數(shù)對其未來訪問熱度進行預(yù)測。文件fk在tnow時刻的文件熱度FHk的大小依賴于tnow之前的Δt時間區(qū)間內(nèi)的文件訪問次數(shù),距離當(dāng)前時間tnow距離越遠(yuǎn)的文件訪問頻率,對當(dāng)前時刻文件熱度計算的影響則越小,即這種影響會呈衰減趨勢。
(2)文件fk的副本決策因子RDk。
(3)
每個文件對應(yīng)的副本決策因子RDk用于決策文件副本因子是否需要進行相應(yīng)的調(diào)整。
(3)集群副本決策因子RDcluster。
(4)
FHk由距離當(dāng)前時間Δt時間區(qū)間內(nèi)的訪問頻率決定,而RDcluster作為系統(tǒng)的副本因子調(diào)整閾值,用于對后面副本因子的調(diào)整進行決策。
(4)高熱度文件。
對于任意的文件fk∈F,如果RDk>a*RDcluster(其中a根據(jù)集群整體的性能進行調(diào)整,a∈[1,2]),則認(rèn)為fk屬于高熱度文件。
(5)低熱度文件。
對于任意的文件fk∈F,如果RDk
(6)高熱度文件fk副本因子動態(tài)調(diào)整值DVk。
對于上述定義的高熱度文件,在決策時間區(qū)間Δt內(nèi),文件fk的副本因子動態(tài)調(diào)整值取決于其副本決策因子的相對大小,需要針對默認(rèn)的靜態(tài)副本因子λ=3進行動態(tài)調(diào)整:
(5)
其中,RDk為文件fk在距離當(dāng)前時間Δt的決策時間區(qū)間內(nèi)的副本決策因子;RDmax、RDmin則分別為Δt決策時間區(qū)間內(nèi)副本決策因子的最大值和最小值;λ為HDFS默認(rèn)的靜態(tài)副本因子。
改進的動態(tài)副本因子調(diào)整算法首先根據(jù)文件訪問熱度和副本決策因子值,獲取待調(diào)整副本因子文件集合,然后針對不同的文件采取不同的副本因子調(diào)整策略。
2.2.1 待調(diào)整副本因子文件篩選算法描述
算法輸入:集群中文件集合F={f1,f2,…,fn},以及兩個決策區(qū)間Δt1和Δt2。
2.2.2 文件副本因子調(diào)整算法描述
2.2.3 改進算法分析
改進算法在實現(xiàn)副本因子調(diào)整的過程中,充分考慮了文件訪問熱度對副本因子調(diào)整的影響,具體改進策略有:
(1)考慮到文件訪問過程中的時間局部性原理,當(dāng)前訪問熱度高的文件在未來一段時間內(nèi)存在較大的被訪問概率,因此根據(jù)一定時間區(qū)間內(nèi)的文件訪問次數(shù)對文件訪問熱度進行定量描述,以此來預(yù)測文件在未來的訪問概率,從而據(jù)此進行副本因子的動態(tài)調(diào)整。
(2)針對高熱度文件訪問熱度和副本決策因子的計算,設(shè)置了兩個不同長度的時間區(qū)間,其中短區(qū)間用于對突發(fā)性的文件訪問需求進行副本因子調(diào)整,避免了長區(qū)間對文件副本因子調(diào)整所帶來的偏差。
(3)在進行文件副本因子調(diào)整的過程中,針對不同訪問頻率所產(chǎn)生的高熱度文件和低熱度文件,采取了不同的調(diào)整措施。對于低熱度文件,在對可靠性和性能及存儲代價的權(quán)衡下,進行相應(yīng)的副本因子減??;而對于高熱度文件,依據(jù)不同的訪問熱度大小,采取不同的副本因子增加措施。
為驗證動態(tài)副本因子調(diào)整算法對系統(tǒng)性能的改進,搭建Hadoop的分布式實驗環(huán)境進行仿真實驗驗證,對比分析默認(rèn)副本機制和動態(tài)副本因子調(diào)整算法對作業(yè)平均響應(yīng)時間的影響。
基于Hadoop的Master/Slave架構(gòu),借助阿里云云服務(wù)器ECS搭建分布式的仿真實驗環(huán)境,該分布式實驗平臺包含3個Slave節(jié)點以及一個Master節(jié)點,節(jié)點的主要配置如表1所示。
表1 仿真實驗節(jié)點的主要配置
為模擬用戶對集群中不同文件訪問熱度的差異,設(shè)置集群中文件每分鐘的訪問次數(shù)分別為5、15、25、35、45、55、65、75、85、100共10組,以此來反映用戶對文件訪問熱度的變化。此次實驗對于高熱度文件和低熱度文件的判定,設(shè)置參數(shù)(a=1.2,b=0.8,γ=0.8),調(diào)整決策時間區(qū)間為Δt1=45 s,Δt2=5 s,設(shè)置4組大小不同的文件(32.0 M、64.0 M、128.0 M、256.0 M),比較不同訪問熱度下系統(tǒng)作業(yè)的平均響應(yīng)時間,得出的作業(yè)響應(yīng)時間隨文件訪問熱度變化的曲線如圖2所示。
由圖2可知,當(dāng)文件訪問熱度較低,文件的熱度對副本因子動態(tài)調(diào)整影響較小,甚至不會觸發(fā)副本因子的動態(tài)增加或減少,而同時由于算法在動態(tài)計算過程中本身需要耗費一定的資源和時間,因此會出現(xiàn)改進的副本因子調(diào)整機制比默認(rèn)靜態(tài)副本機制平均作業(yè)響應(yīng)時間長的情況,即此時動態(tài)副本因子調(diào)整算法還不能有效發(fā)揮其性能提升作用。隨著文件訪問熱度的不斷增加,動態(tài)副本因子調(diào)整算法開始體現(xiàn)出一定的性能優(yōu)勢。
觀察圖2可以得知當(dāng)文件每分鐘的訪問頻率達(dá)到50~60時,此時由于觸發(fā)了副本因子的動態(tài)增加,因此對于高熱度文件會存在多個副本同時對外提供訪問服務(wù),有效降低了高熱度并發(fā)訪問下的文件訪問競爭,縮短了作業(yè)的響應(yīng)時間。針對高熱度文件能夠及時動態(tài)地增加副本因子,以應(yīng)對持續(xù)或突發(fā)性的高熱度訪問需求,因此可以有效縮短系統(tǒng)作業(yè)平均響應(yīng)時間,實現(xiàn)云環(huán)境下多用戶文件訪問的服務(wù)響應(yīng)性能提升。
圖2 作業(yè)響應(yīng)時間隨訪問熱度的變化曲線
提出的動態(tài)副本因子調(diào)整策略主要針對云環(huán)境下靜態(tài)副本機制存在的局限性,結(jié)合云環(huán)境下多用戶文件訪問的熱度差異和不同決策時間區(qū)間內(nèi)的訪問熱度值,對副本因子進行動態(tài)調(diào)整,在提升文件訪問性能的同時降低存儲空間的消耗。接下來的工作可以進一步優(yōu)化副本因子調(diào)整算法,以更好地適應(yīng)復(fù)雜云環(huán)境下文件突發(fā)性的訪問需求。