賀 涌,王 磊,李立秋,陳善貴
(1.太原理工大學,山西 太原 030000;2.中國礦業(yè)大學,江蘇 徐州 221000)
信息量的日益劇增,信息處理方式也在發(fā)生重大變化。云計算是一種新型的商業(yè)計算模型,通過該方法,用戶可以在不了解云機構(gòu)的狀態(tài)下,對終端用戶展開大量計算。在大多云平臺軟件中Hadoop應用性更強。Hadoop為一種開源計算框架,能夠?qū)崿F(xiàn)分布式存儲,目的是保證所有數(shù)據(jù)集群不間斷地給用戶供應計算服務與分布式儲存。但目前Hadoop平臺局限于處理少量大文件,無法高質(zhì)量處理大量小文件的情況,導致高負載量環(huán)境下Hadoop經(jīng)常出現(xiàn)資源處理異?,F(xiàn)象,使運作效率變慢,計算質(zhì)量變低。對此國內(nèi)外學者提出了以下幾種解決方法。
文獻[1]構(gòu)建Hadoop云體系下的資源信息狀態(tài)監(jiān)測模型。利用資源匹配算法和信息挖掘算法將Hadoop內(nèi)的資源信息進行關(guān)聯(lián)性整合,在Hadoop平臺內(nèi)構(gòu)建用戶多元信息資源接口機制,利用虛擬化技術(shù)分類資源云信息,利用接口機制監(jiān)測高負載量Hadoop資源情況。但是該方法需要單獨構(gòu)建接口機制,并且該機制的構(gòu)建過程耗時較長,導致對Hadoop進行監(jiān)測時出現(xiàn)整體效率過低的問題。文獻[2]提出了一種高負載量Hadoop資源多層監(jiān)測方法。首先分層處理Hadoop,分析應用層對象、網(wǎng)絡傳輸層對象、用戶層對象、表示層對象和服務層對象,獲取各個層次之間的閾值,并實現(xiàn)融合處理,完成對Hadoop的資源監(jiān)測。但是該方法沒有構(gòu)建出符合與閾值匹配的檢測系統(tǒng),導致監(jiān)測結(jié)果誤差較大。文獻[3]提出了一種基于自適應反饋調(diào)度的高負載量Hadoop資源監(jiān)測方法。融合Hadoop資源節(jié)點與作業(yè)的性能信息,在反饋調(diào)度器上啟動動態(tài)資源類似度監(jiān)測方案,有效識別集群執(zhí)行能力差異,根據(jù)服務器作業(yè)任務需求對Hadoop的資源信息高負載量進行動態(tài)監(jiān)測。但該方法需通過實時檢測數(shù)據(jù),而個別平臺沒有此功能,導致該方法具有局限性。
針對上述問題,提出新的高負載量移動服務器Hadoop資源信息智能監(jiān)測方法。利用時間序列將Hadoop資源分化至多種資源訪問序列中,計算高負載系數(shù),獲取特征向量集向量,完成高負載量移動服務器Hadoop資源信息智能監(jiān)測。仿真結(jié)果驗證了,論文新方法能夠?qū)崿F(xiàn)Hadoop高負載量的低能耗監(jiān)測,并且效率較高,時延問題得以明顯改善。
當前,Hadoop的構(gòu)造過程模型如圖1所示。
圖1 移動服務器Hadoop結(jié)構(gòu)模型
Hadoop中含有一種jobTracker節(jié)點,主要對Hadoop實行任務監(jiān)測、資源管理和調(diào)度。其中含有多種slave節(jié)點,處理全部的MapReduce任務[4]。當用戶遞交新任務時,通知NameNode節(jié)點,再將用戶的任務數(shù)據(jù)使用Na-meNode儲存到云平臺中,隨后將要進行處理的數(shù)據(jù)導入Hadoop里,同時儲存到Slave節(jié)點中。在運行Slave節(jié)點時,將心跳信息輸送至job-Tracker中,jobTracker收到心跳信息后會依據(jù)預處理數(shù)據(jù)的規(guī)劃情況,向具體的Slave節(jié)點分配Map/ReduceTask。Slave運行時,會每隔一段時間向job-Tracker傳輸心跳信息,jobTracker憑借集群中資源和Slave傳輸?shù)男奶畔⑶闆r,向Slave節(jié)點發(fā)放任務。
通過jobTracker中資源管理過程和任務監(jiān)測的分析,可以證明Hadoop的資源管理是隨著指定調(diào)度將新任務規(guī)劃至負荷的TaskTracker內(nèi)進行處理。但在Hadoop集群里,jobTracker節(jié)點只有一個,因此會出現(xiàn)JobTracker負載超重的狀況,致使jobTracker的處理速度降低,導致Hadoop集群[5]的整體運作速度緩慢。例如Hadoop平臺默認監(jiān)測器,在JobTracker對資源進行監(jiān)測時,經(jīng)調(diào)整完成的TaskScheduler接口與JobQueueTaskScheduler類型的實例assignTasks方法,可以對資源監(jiān)測和任務進行展開。從上圖1可以得知,假使存在可單獨對Hadoop任務文件監(jiān)控的方法,便可降低JobTracker的負擔,提高工作效率。
利用時間序列將收集到的Hadoop資源進行消耗分化至多種資源的訪問序列中,再分化有序資源到資源集合中,從而建造一種尺寸固定的有序結(jié)合。并分析序列類似度,進而估算不同序列內(nèi)的類似值。而計算最鄰近節(jié)點方法,可以估算出高負載系數(shù)的序列,最后劃分出集合中的高負載序列。
圖2 資源訪問序列劃分流程
對高負載Hadoop的分布式平臺信息資源進行訪問時,集群內(nèi)信息資源消耗出現(xiàn)緩慢增長趨勢,需要將Hadoop集群中資源使用狀況通過時間序列[6]進行模式代替。本文使用四元組(t,b,k,l)代表Hadoop集群資源消耗模式,其中t代表橫坐標,即采集時間;b代表縱坐標,即Hadoop集群資源消耗總數(shù);k為斜率,即兩個采集時間點的Hadoop資源利用變化曲線斜率;l即兩個采集時間的間隔Hadoop資源消耗線段大小,以此構(gòu)建Hadoop集群資源信息消耗時間變化曲線。在該四元組內(nèi),擬定含有時間點(t1,b1)和(t2,b2),假如采集時間間隔類似,資源消耗線段尺寸隨著斜率k而變化
(1)
通過式(1)可以看出,Hadoop資源消耗線段大小是l經(jīng)過斜率k和時間的間隔來判斷的,而l變量里不含有特殊意義,因此該四元組可以使用二元組(b,k)進行消除。因有序時間序列組合是利用多種時間序列向量組合建造的,而線段模式[7]是由相鄰的序列點構(gòu)成的,所以多種線段模式可以代替時間序列,進而能夠劃分所有Hadoop集群資源消耗的時間序列。
(2)
為了找出兩個序列的高負載狀況,需使用區(qū)域的序列密度分布[9]表示高負載狀況。設定兩種區(qū)域和序列最相似的鄰居密度高于某種臨界值,證明近鄰與該序列類似,相似度越高表示鄰近值越大,反之鄰近值越低。計算高負載系數(shù)公式為
(3)
其中,P(s)代表時間序列s的均衡可達長度,其值越小,表明密度越高,高負載的幾率就越小,d(s,c)代表c序列至s序列中的長度,N(s)就是指序列s所在的時間序列集合。
Hadoop集群內(nèi)資源信息所消耗的數(shù)據(jù)關(guān)鍵點是通過集群內(nèi)硬盤、CPU進行處理的。其中CPU信息資源消耗被分布式估算影響,能量消耗被分布式儲存[10]影響,則需利用硬盤與CPU的差異轉(zhuǎn)變,對Hadoop的資源信息的高負載異常消耗進行監(jiān)測。內(nèi)存資源的消耗主要是被MAP/Reduce的分布式計算干擾,因此可以通過大范圍分布式的計算差異,評測內(nèi)存中的資源消耗高負載情況。硬盤資源的消耗主要受分布式儲存的影響,通過獲取文件輸送的硬盤資源消耗與差異數(shù)據(jù)來測評。
使用時間順序?qū)個資源[11]的特征向量進行監(jiān)測,監(jiān)測完成后,將第一種特征向量內(nèi)的n種有序向量集合內(nèi)取出,通過第n+1中的特征向量憑借順序引入此集合內(nèi),具體過程如圖3所示。
圖3 基于時間的資源消耗監(jiān)測模型
在時間序列資源消耗模型中,具有n種資源消耗的特征向量。本文將特征向量設定為一種最近鄰類似值分析法中的目標,通過上述目標對n個特征向量內(nèi)的局部高覆蓋系數(shù)進行計算,最終對某個時間點的信息資源消耗異常狀況進行分析。
對局部資源消耗異常分析,先把n個局部資源信息消耗特征向量進行整理,構(gòu)造資源信息消耗特征向量集合{t1,t2,…,tn}。本文使用n×n的特征矩陣代替所有特征向量間的尺寸
(4)
式中傳入是憑借時間順序收集到的Hadoop集群資源信息消耗特征向量集{t1,t2,…,tn},將n擬定為集群里的特征向量,傳輸為有差異的特征向量。具體步驟如下:
1)采用特征向量集所獲取的n種特征向量,轉(zhuǎn)換成n×n的特征矩陣;
2)收集一種特征向量,
再計算特征向量的最近鄰。
3)對特征向量中的局部密度進行計算,再估算差異系數(shù)。當差異系數(shù)大于閾值時,將該特征向量標記為高負載點,把該向量加入差異特征向量結(jié)果中并轉(zhuǎn)至2)。閾值大于融入該差異系統(tǒng)的數(shù)值時,則表示該特征向量是否為向量集內(nèi)第n個特征向量,如果是則轉(zhuǎn)至4),反之跳轉(zhuǎn)至2)。
4)傳輸高負載特征信息監(jiān)測結(jié)果,算法完成。
在特征向量矩陣里,t12為特征向量t1與t12的大小,tnn表示特征向量tn到自身的長度,距離為零,該矩陣是對稱矩陣,主對角線的值為零。利用矩陣可以得知,ti到n種近鄰間的距離是[ti1,ti2,…,tin],對該長度集合進行排序,獲取k種值,通過k值能獲取ti的k個最近鄰居。使用局部的密度公式對ti的值進行估算,估算的值越大,表明類似的目標越多。而時間點越小的資源,則表明局部可達密度越小,其類似的目標越少,該時間點信息資源異常[12]的幾率越大。
仿真環(huán)境為Intel Celeron Tulatin1GHz CPU,硬件環(huán)境為384MB SD內(nèi)存,軟件環(huán)境為MATLAB6.1。
圖4 Hadoop資源信息智能監(jiān)測環(huán)境
為了證明本文方法對Hadoop高負載的監(jiān)測性能,實驗與文獻[1]、文獻[2]及文獻[3]方法進行對比測試。本次實驗擬定實驗內(nèi)Slave節(jié)點并非考慮的關(guān)鍵點,所有Slace節(jié)點的處理效率是1000MIPS。該Hadoop集群內(nèi)含有20種節(jié)點。將任務Task所需要的指令尺寸設置在70000MIPS,原始實驗數(shù)據(jù)如圖5所示。
為測試不同方法對Hadoop高負載的監(jiān)測能耗,設置從1000~10000個移動設備運行時,對比消耗功率的大小。實驗結(jié)果如圖6所示。
圖6 不同方法下監(jiān)測能耗對比
根據(jù)圖6數(shù)據(jù)可知,隨著移動設備數(shù)量的增加,所有方法的能耗均隨之增加。其中文獻[1]方法與文獻[2]方法能耗變化趨勢相近,在移動設備數(shù)量為10000時,能耗達到350kW。文獻[3]方法能耗較前兩種方法略低,在移動設備數(shù)量為10000時,能耗約為347kW。本文方法能耗最低,在移動設備數(shù)量為10000時,能耗為253kW。說明本文方法對Hadoop高負載監(jiān)測的能耗低,更具有使用性。
為驗證不同方法的處理效率,在相同數(shù)據(jù)環(huán)境中測試平均請求響應時延,實驗如圖7所示。
圖7 不同方法下平均請求響應時延
根據(jù)圖7數(shù)據(jù)可知,文獻[1]方法與文獻[2]方法的響應時延變化趨勢相近,隨移動設備數(shù)量的增加而增長,當測試數(shù)量最大時響應時延達到340ms。文獻[3]方法的響應時延也隨設備數(shù)量增加而增長,設備數(shù)量最大時響應時延為280ms。本文方法的響應時延在測試期間均保持在4ms左右,說明該方法檢測效率高。
為解決Hadoop常出現(xiàn)高負載問題,本文提出高負載量移動服務器Hadoop資源信息智能監(jiān)測方法。分析Hadoop資源序列類似度,計算高負載系數(shù),獲取特征向量集向量,完成高負載量移動服務器Hadoop資源信息智能監(jiān)測。通過仿真對比實驗證明,新方法能夠有效的對Hadoop高負載量進行監(jiān)測,且能量消耗低,效率高。在今后的研究中需進一步考慮降低監(jiān)測成本問題,解決該領域更多難點問題。