馮秋燕
(河南財經政法大學,河南鄭州 450000)
調優(yōu)MapReduce工作負載
馮秋燕
(河南財經政法大學,河南鄭州 450000)
大規(guī)模的數(shù)據密集型計算引起了研究界和工業(yè)界的廣泛關注,Hadoop、MapReduce等的開源實現(xiàn),越來越多地應用于大數(shù)據分析。針對MapReduce工作負載的調優(yōu)問題,通過實驗驗證了參數(shù)配置對MapReduce工作性能的影響,從5個方面介紹了調整MapReduce工作負載的常見調優(yōu)場景。
大數(shù)據;MapReduce工作負載;參數(shù)配置;調優(yōu)場景
MapReduce是處理大規(guī)模數(shù)據的一個相對年輕的框架,MapReduce是一個編程模型、一個關聯(lián)型運行時系統(tǒng)[1]。Hadoop是奠定在原始基礎上的最流行的MapReduce實現(xiàn)的開源框架之一[2],并應用于大多數(shù)公司生產配置階段的應用程序中。IaaS云平臺允許用戶即時的配置集群,用戶僅僅需要為使用時間和所使用的資源付費,這使得Hadoop工作負載運行更為容易。Hadoop有如下優(yōu)點:較好的容錯能力、本地數(shù)據調度、異質環(huán)境下的操作能力、錯誤環(huán)境下的執(zhí)行能力、模塊化、可制定的框架等。本文將證明配置參數(shù)設置對MapReduce工作的性能影響。然后,列舉日常中出現(xiàn)的各種各樣的優(yōu)化和調整場景。
Hadoop由190多個配置參數(shù),而本文目前只考慮其中14種對工作性能的影響[3]。本文所使用的實驗對象是WordCount(簡稱為WC)、TeraSort(簡稱為TS)。WC處理由Hadoop’s RandomTextWriter生成的30GB的數(shù)據,TSt處理由Hadoop’s TeraGen生成的50GB的數(shù)據。圖1(a)、圖1(b)與圖2(a)、圖2(a)分別為測量WC與TS工作執(zhí)行時間生成的反映面,其中,這些圖中有3個參數(shù)產生了變化,而其他的工作配置參數(shù)保持常量。
圖1 (a)設置mapred.reduce. tasks時WC反映面
圖1 (b)設置io.sort. mb時WC反映面
圖2 (a)設置mapred. reduce.tasksTS反映面
圖2 (b)設置io.sort.mb 時TS反映面
參數(shù)設置對MapReduce工作性能的影響依賴于工作、數(shù)據、集群等特征:
2.1 工作特征對工作性能的影響:圖1(a)和圖2(a)展示了mapred.reduce.tasks參數(shù)設置從不同程度影響了WC、TS。無論io.sort.record.percent怎樣變,reduce任務數(shù)目的增加對WordCount的性能并沒有影響,卻顯著提高了TS的性能。WC工作由map控制,map中的計算包括數(shù)據文件的解析、組合函數(shù)的使用,而reduce任務只簡單合計了字數(shù)。
2.2 數(shù)據特征對工作性能的影響:數(shù)據特征可以影響有著相同參數(shù)設置的、相同MapReduce程序的工作運行時間。圖2(a)包含了一個“谷(valley)”,在該“谷”點,io.sort.record.percent設置為0.15。io.sort.record.percent表示map的頂峰規(guī)模的分值,用于描述map輸出的元數(shù)據存儲。由map任務產生的每一個記錄要求16字節(jié)的元數(shù)據及其系列化規(guī)模。對于io.sort.record.percent的任何值,平均的map輸出記錄的規(guī)模將決定是否由于系列化緩存的耗盡或者元數(shù)據緩存的耗盡將數(shù)據溢出(spill)至硬盤。
2.3 集群特征對工作性能的影響:當reduce任務T的總數(shù)量NT比reduce任務執(zhí)行槽S的總數(shù)目NS低時,所有的reduce任務都將并發(fā)運行。當NT≤NS,改變reduce任務的數(shù)目將對工作性能有顯著的影響,假設reduce任務的執(zhí)行時間與map任務的執(zhí)行時間是可比的。當NT>NS時,reduce任務將在并行reduce波里運行。從圖2(a)中可得,reduce任務數(shù)目增加,性能也提升,但是由于每個并行reduce波的有效并發(fā)程度的帶寬的限制,提升率卻下降。
2.4 參數(shù)間的交互對工作性能的影響:Hadoop中配置參數(shù)的子集顯示了一個或多個參數(shù)間較強的性能交互。圖1(b)顯示了當io.sort.record.percent設置較低的值時,改變io.sort.mb對工作性能并沒有產生顯著的影響;io.sort.record.percent設置較高的值時,改變io.sort.mb對工作性能產生了很大的影響。圖2(b)顯示了io.sort.record.percent、io.sort.mb間的更強、更復雜的交互。io.sort.record.percent設置不同的值,io.sort.mb變化可能導致性能的變化形式也不同。
本文的調優(yōu)問題是,對于一個給定的分析工作量,確定集群資源和MapReduce工作級配置參數(shù)設置,以滿足其執(zhí)行時間和成本上的要求。本節(jié)首先討論一些出現(xiàn)調優(yōu)問題的常見場景。
3.1 調整工作級配置參數(shù)設置
在MapReduce框架中運行單個工作,大量的配置參數(shù)必須由用戶或系統(tǒng)管理員設置。MapReduce工作或工作流的性能在反應時間或工作負載的完成時間上不能滿足服務級要求。因此,需要理解工作行為、診斷工作執(zhí)行期間所用參數(shù)設置的瓶頸。
3.2 調整彈性工作負載的集群規(guī)模
假設MapReduce工作在m1.large的10-EC2節(jié)點的Hadoop集群上花費了3個小時??刂萍旱膽贸绦蚧蛴脩艨赡芟胫廊绻诩荷显僭黾?個m1.large節(jié)點,工作執(zhí)行時間將減少多少;用戶也可能想知道在集群上再增加多少個m1. large節(jié)點運行時間能降至2小時。
3.3 工作負載從發(fā)展集群向生產集群過渡
與運行關鍵任務和時間敏感性工作負載的生產集群相比,許多企業(yè)為程序開發(fā)維持了獨立的(可能多樣的)集群。彈性和現(xiàn)買現(xiàn)付特性簡化了維持多樣集群的任務。開發(fā)者首先會在開發(fā)集群上測試新的MapReduce工作,可能會使用生產集群中的數(shù)據中的少量有代表性的樣本。在工作被調度至生產集群之前(通常作為分析工作負載的一部分定期運行在新數(shù)據上),開發(fā)者需要識別MapReduce工作級配置,這個工作級配置將提供良好的工作性能。
3.4 多重目標下的集群配置
IaaS云平臺提供了一個集群中所使用節(jié)點類型的多種選擇。隨著這些節(jié)點上計算、存儲、I/O資源的增加,每個小時的使用費用也增加。圖3(a)、圖3(b)分別顯示了運行在EC2上的Hadoop在不同集群配置下的MapReduce工作負載執(zhí)行時間、總費用。圖3(a)和圖3(b)中的集群使用EC2節(jié)點類型中的5種節(jié)點;每小時使用費用,記為cost_ph。計算每個工作負載執(zhí)行的相關總費用所使用的價格模型是:
這里,num_nodes是集群中的節(jié)點數(shù)目,exec_time是在大多數(shù)云計算平臺上完成工作負載的執(zhí)行時間(向上舍入到最接近的小時)。用戶可能對工作負載有多種偏好和約束[4],例如,用戶目標可能是最小化工作負載運行的成本費用,以最大化忍耐工作負載執(zhí)行時間為代價。從圖3(a)、圖3(b)可以看出,用戶想以執(zhí)行時間小于45分鐘為前提,最小化成本。
圖3 (a)運行時間對比
圖3 (b)成本費用對比
3.5 及時調整工作負載以降低執(zhí)行成本
公式1的成本模型被用于計算圖3(b)的成本,基于所使用的節(jié)點類型收取每小時的費用,其中,這些節(jié)點被稱為EC2上的按需實例。Amazon EC2也提供了現(xiàn)場實例?,F(xiàn)場實例的價格隨時間變化,通常依賴于云上資源的供求關系,電價時空變化等其他因素也可以導致云資源使用成本的波動。
圖4 現(xiàn)買現(xiàn)付方式成本費用
綜上所述,圖4與圖3(a)、圖3(b)的工作負載是相同的,圖4描述了使用EC2現(xiàn)場實例類型的運行情況。在該案例中,用于計算總成本的定價模式:
其中,cost_ph(i)代表了每個集群中使用的節(jié)點類型第i個小時的費用。比較圖3(b)和圖4,顯而易見,如果所使用的集群資源不同,則相同負載的執(zhí)行費用是不同的。
本文主要首先講述了配置參數(shù)設置對MapReduce工作性能的影響,并對云上的MapReduce做簡要介紹,最后以實際用戶案例說明了調整MapReduce工作負載的常見場景。下一步工作是構造合適的成本模型,研究基于數(shù)據流系統(tǒng)的成本優(yōu)化和自動調整技術,期望解決基于成本的優(yōu)化和自動調整間的差異。
[1]DEANJ,GHEMAWATS.MapReduce:AFlexibleData Processing Tool[J].Communications of the ACM,2010,53(1):72-77.
[2]YAOY,TAIJZ,SHENGB,MINF.Scheduling heterogeneous MapReduce jobs for efficiency improvement in enterprise cluster[C]//IFIP/IEEE International Symposium.Belgium: 2013 IFIP/IEEE,2013:872-875.
[3]HERODOTOU H,LIM H.Star sh:A Self-tuning System for Big Data Analytics[R].Durham:in Proc of the 5th Biennial Conf on Innovative Data Systems Research.2011.
[4]林彬,李姍姍,廖湘科,等.Seadown:一種異構MapReduce集群中面向SLA的能耗管理方法[J].計算機學報,2013,36(5):977-987.
TP311
A
1003-5168(2014)04-0017-02
馮秋燕(1988.7—),女,碩士,助理工程師,研究方向:現(xiàn)代軟件工程技術、數(shù)據挖掘。