楊 生 北京郵電大學數據科學中心碩士研究生劉 軍 北京郵電大學數據科學中心副教授劉 芳 北京郵電大學數據科學中心副教授
?
基于Petri網的Hadoop性能仿真系統的設計與實現
楊生北京郵電大學數據科學中心碩士研究生
劉軍北京郵電大學數據科學中心副教授
劉芳北京郵電大學數據科學中心副教授
摘要:隨著Hadoop在學術界和工業界的廣泛應用,極大推動了大數據技術的發展,如何更為高效地使用Hadoop成為了業界關注的焦點。本文介紹了對Hadoop性能進行仿真的方法,及其實現機制。
關鍵詞:Hadoop;性能仿真;Petri網;性能優化;集群搭建
伴隨著Hadoop的出現,其展現出的高效、易用、穩定、擴展性好等諸多優點,成為了學術界和工業界進行海量數據處理的首選方案,更是名符其實開啟大數據時代大門的金鑰匙。
數據驅動業務作為大數據時代的核心命題,如何完成海量數據的及時處理以滿足業務需求,一直是當今業界最主流的研究方向。面對大型互聯網公司動輒過千臺的Hadoop集群規模,有效地提升計算效能尤為重要。其他各領域的公司也緊隨時代腳步發展了自身的數據分析部門,滿足業務需要并控制成本,則是這些公司更為注重的。因此,對Hadoop的數據處理能力進行預估,并提供集群優化指導建議是非常有必要的。
但是通過傳統的測試對比分析的方法來評估Hadoop處理能力具有較大的局限性。首先,由于Hadoop作業往往完成耗時較長,測試實際運行情況效率低下;其次,Hadoop集群的配置參數復雜繁多,并且都會對性能產生影響,對比分析的方法代價高昂;最后,不同配置參數對性能產生的影響權重不同,并會由于處理Hadoop作業的不同,而產生變化。因此,本文將介紹使用仿真的方法來預測Hadoop的性能,并通過仿真結果提供集群配置優化建議。
建立仿真模型來預測Hadoop性能之前,需要先對影響集群計算效能的參數進行抽象提取。從集群的物理計算能力來講,硬件的配置情況起著決定性作用;從Hadoop的體系結構來講,HDFS和MapReduce分別都具備著影響作業執行情況的因素;在集群和Hadoop兩者之外,在分布式環境中運行的具體Hadoop作業也會因為其計算需求復雜情況的各異,導致各自的執行過程耗時不同。
根據參數的作用范圍不同,分為代表集群硬件特征的參數、代表Hadoop體系相關的配置參數、代表作業計算復雜程度的參數三大類(見表1)。

表1 仿真參數列表
Hadoop任務調度邏輯構建在Petri網的仿真平臺的基礎之上,整體架構如圖1所示。Petri網是1960年由卡爾·A·佩特里發明的數學模型,用于對離散的并行系統進行數學的表示,可以很好地描述異步的、并發的計算機系統模型。

圖2 仿真系統架構圖
根據集群配置和程序參數,可以推算出HDFS中的數據分布信息。這里筆者做了第一個假設,認為在仿真模型中的每個數據分塊均是滿的。這可能會導致某些數據在實際存儲的數據分片數目與仿真模型的數據分片數目不一致。因為在實際環境中,由于很多文件的大小并不恰好與數據塊尺寸匹配,使得分片的數據量并不足以達到整個數據塊的最大容量。
同時,仿真模型會預估出可能進行的遠程調度任務的數據分片個數。非本地化執行的作業數目,會對Hadoop性能表現產生非常巨大的影響。衡量這種情況發生的比例,稱之為遠程調度比例,當數據分配不均,集群硬件差異較大時,這個比例也會隨之增加。根據遠程調度比例參數,將HDFS中所有數據分塊劃分為本地作業、跨節點作業、跨機架作業及跨數據中心作業。對不同類型的作業,根據其特征加以懲罰參數,從而保證整個仿真過程的準確性。
根據硬件特征與集群的配置參數,可以推測出這個實際集群的運算效能。運算效能包括兩方面,一是能夠同時進行并行計算的單元個數;另一個是每個計算單元的單位時間計算能力。仿真系統將具有計算能力的每個單元認為是完全平等的,這源自MapReduce的實現機制。每個CPU核心被認為是一個計算單元,在模型中它作為一個令牌,用于觸發一個計算過程的執行,當計算結束后,這個令牌將被歸還。通過待處理的數據量和MapReduce程序的各階段復雜度,可以確定出計算需求。采用CPB(Cycles Per Byte)作為衡量程序復雜度的指標,CPB是處理單位數據量所需要的CPU時鐘周期。值得注意的是,每個階段的待處理數據量是發生變化的,仿真系統根據計算需求預測出各子階段的時間耗費。
通過搭建Hadoop集群測試環境,將Hadoop作業的各個階段執行情況保存到日志中,并實現對相關仿真參數的提取。
由于不同Hadoop作業的業務需求不同,所以其對應的Mapper和Reducer對于相同輸入數據量所需要的計算時間也不同,這里使用單位輸入數據量所需耗費的CPU時鐘周期為衡量標準。在Hadoop測試環境中,對相關類代碼的修改,日志能采集到對應Mapper和Reducer任務啟動、內存緩沖區讀取完成、任務結束等關鍵時間點。以Mapper過程為例,各日志記錄時間點如圖2所示。
其中,時間點A、C分別為Mapper任務啟動和結束的時間,時間點序列B為每組內存緩存讀取完成的時間。為方便闡述,到達B點的時間將根據進入循環的次數,分別稱之為B1、B2…Bn。時間點A至時間點B1,相鄰時間點Bi與Bi+1之間,包括了數據從硬盤讀入內存緩沖去與數據計算的時間耗費。時間點Bn至時間點C,則為最后一個緩存進行計算所占用的時間。
根據Setup到第一次ReadBuffer結束的時間耗費和內存緩沖區大小,可以計算出磁盤的平均讀取速率。根據最后一次ReadBuffer結束到Cleanup的時間減去平均計算時間,在考慮內存緩沖區大小,可以計算出磁盤的平均寫入速率。根據兩次ReadBuffer間的時間耗費包含上一次緩沖區數據的計算時間和新一次緩沖區數據讀取的時間,進而計算出CPB。
日志中除根據各階段時間的統計之外,也包含了Hadoop本身的日志機制所記錄的各個階段所讀取寫出的數據量。通過統計Mapper的平均數據讀取產出比,可以推算出Shuffle階段所需要傳輸的數據量。在Shuffle階段,假定所有的中間數據被均勻的分配給所有的Reducer中,這里需要考慮存在Mapper與Reducer在同節點的情況,發生比例與總節點個數相關,且近似等于(節點個數/Reducer)個數,據此仿真出跨節點Shuffle數據的時間耗費。Reducer階段的仿真方法與Mapper階段類似,不再贅述。

圖2 Mapper日志時間點
通過仿真的方法來預測Hadoop集群的性能表現,主要可以應用于兩大方向。一是通過較小數據量的測試數據來預估處理海量數據的總體耗時,并通過在仿真系統中修改相關配置參數,來比較計算效能的變化,從而為優化性能提供指導建議,這是大型互聯網公司的主要需求;二是根據測試結果,推測在異構集群環境中,為達到實際所需的計算效能所需構建的集群規模,這對于需要進行成本控制的集群搭建有著重要的指導意義。本文將從這兩方面對仿真系統進行應用測試說明。
在Hadoop集群中,由于HDFS數據分塊尺寸會對整體的計算效能產生影響,為了驗證這種影響,對不同輸入數據量情況下,64和128MB數據分塊尺寸的WordCount作業執行時間進行了對比。Hadoop集群環境參數如表2所示。

表2 Hadoop集群環境參數表
根據對3、15、30、60、120GB5組輸入數據規模的仿真結果,可以發現在輸入數據量超過30GB后,通過增大HDFS數據分片大小,可以有效地提高Hadoop作業的運行表現。Hadoop作業仿真時間如表3所示。
為了進一步驗證仿真結果的準確性,在搭建Hadoop集群中進行了實際測試,對比結果如表4、5所示。
通過比較兩者的擬合程度,可以發現仿真模型在預測Hadoop集群配置改變的情況下,可以保證平均誤差小于5%,并隨著輸入數據量的增長擬合程度呈現上升趨勢。在實際環境中,更改Hadoop集群的參數配置需要重新啟動集群才能生效,因此直接進行集群參數調試代價高昂,借助仿真系統可以極大的簡化這個過程,對于優化Hadoop集群性能方面意義重大。

表3 HDFS分塊影響仿真對比表

表4 HDFS分塊64MB結果表

表5 HDFS分塊128MB結果表
通過修改仿真模型的集群硬件參數,可以實現異構集群條件下作業執行時間的預測,從而為實現滿足特定業務條件下的集群搭建,提供成本控制指導建議。測試中,對異構Hadoop集群相對地減少了節點個數和CPU核心數量,計算能力有所下降,具體參數如表6所示。

表6 異構Hadoop集群參數表
使用仿真系統預測異構集群環境下WordCount作業的執行時間,并將預測結果與在實際環境下的測試結果進行對比,結果參見表7。

表7 集群環境變化仿真結果表
通過比較兩者的擬合程度,可以發現仿真模型在預測異構Hadoop集群可以保證平均誤差小于5%,借助仿真系統來預估Hadoop作業的執行時間,為集群環境的搭建提供了明確的指導。
專家視點
Design and implementation of Hadoopperformance simulation system basedonPetri-net
YANGSheng,LIUJun,LIUFang
Abstract:AsHadoop is widely used in academia and industry, the big data technology has been greatly promoted.The efficient of Hadoop become the focus of attention.The design and implementation of Hadoop performance simulation are introduced in this article.
Keywords:Hadoop; performance-simulation; Petri-net; performance-optimization cluster-structure
收稿日期:(2016-03-20)