專利名稱:一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于分布式計(jì)算模型領(lǐng)域,更具體地,涉及一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法和系統(tǒng)。
背景技術(shù):
隨著云計(jì)算的興起,Mapreduce編程模型作為一種簡(jiǎn)化大規(guī)模數(shù)據(jù)處理的重要手段得到越來越廣泛的應(yīng)用。Hadoop是Mapreduce的一個(gè)開源實(shí)現(xiàn),是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,通過它用戶可以在不了解分布式底層細(xì)節(jié)的情況下很方便的開發(fā)分布式程序。Hadoop中共有180個(gè)以上的參數(shù)用以控制應(yīng)用程序的運(yùn)行,用戶可以根據(jù)自己的需要來調(diào)整這些參數(shù)的值,大量的實(shí)驗(yàn)表明Hadoop系統(tǒng)參數(shù)的設(shè)置對(duì)應(yīng)用程序的性能有著很大的影響?,F(xiàn)有的Hadoop參數(shù)優(yōu)化方法主要有兩種(I)是在實(shí)際的Hadoop集群上運(yùn)行Hadoop應(yīng)用程序,然后根據(jù)以前的經(jīng)驗(yàn)總結(jié)以及對(duì)Hadoop系統(tǒng)本身的理解手動(dòng)優(yōu)化Hadoop參數(shù),并通過實(shí)驗(yàn)來驗(yàn)證參數(shù)優(yōu)化的效果;(2)是通過修改Hadoop本身的代碼,將參數(shù)優(yōu)化的功能模塊加入Hadoop里面來達(dá)到Hadoop參數(shù)自動(dòng)優(yōu)化的目的,如發(fā)表在 2010 年 SoCC 上的論文Towards automatic optimization of MapReduce programs,借鑒了數(shù)據(jù)庫(kù)中的查詢優(yōu)化思想,提出一種消除“調(diào)整鈕”的方法,通過代碼重寫或者在系統(tǒng)中實(shí)現(xiàn)參數(shù)自動(dòng)調(diào)整控制器的方法,將某些參數(shù)設(shè)置的工作交給Hadoop系統(tǒng)來完成。然而現(xiàn)有的參數(shù)優(yōu)化方法存在以下問題(I)高成本、低效率在第一種Hadoop參數(shù)優(yōu)化方法中,需要在實(shí)際的Hadoop集群上多次運(yùn)行Hadoop應(yīng)用程序,會(huì)占用大量的系統(tǒng)資源,且每次優(yōu)化參數(shù)進(jìn)行測(cè)試都需要很長(zhǎng)的時(shí)間;(2)高門檻使用第一種方法進(jìn)行Hadoop參數(shù)優(yōu)化,需要用戶本身對(duì)Hadoop的底層實(shí)現(xiàn)原理以及Hadoop各個(gè)參數(shù)的作用有所了解,以及具備大量的Hadoop參數(shù)優(yōu)化經(jīng)驗(yàn),以上這兩點(diǎn)都是大量普通Hadoop用戶所缺乏的。(3)增加了 Hadoop本身代碼的復(fù)雜性方法(2)需要對(duì)Hadoop本身的代碼進(jìn)行修改,以及添加Hadoop參數(shù)調(diào)優(yōu)的功能模塊,這使得Hadoop系統(tǒng)更加難以維護(hù)。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于提供一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法,旨在能夠解決現(xiàn)有方法中存在的高成本、低效率、高門檻、以及Hadoop代碼復(fù)雜的問題。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法,包括以下步驟(I)統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件;(2)根據(jù)輸出文件預(yù)估Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能,具體包括以下子步驟(2-1)獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案;(2-2)根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t ;(3)根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案。步驟(I)具體為,首先,使用btrace程序動(dòng)態(tài)跟蹤在Hadoop集群中運(yùn)行的java程序,以獲取相應(yīng)的數(shù)據(jù),并將跟蹤到的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,以生成XML格式的輸出文件存入用戶指定的目錄中,用于可視化的展示Hadoop應(yīng)用程序運(yùn)行細(xì)節(jié),然后,將為運(yùn)行該Hadoop應(yīng)用程序分配的資源,以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案追加到輸出文件中。應(yīng)用程序的運(yùn)行特征包括各個(gè)階段的運(yùn)行時(shí)間,以及處理和傳輸?shù)臄?shù)據(jù)。步驟(2)具體是采用以下公式t = Fj(f, d, P)其中F表示為運(yùn)行該Hadoop應(yīng)用程序分配的資源,< 表示輸出文件,多表示該Hadoop應(yīng)用程序?qū)?yīng)的 參 數(shù)配 置方案,&是Hadoop應(yīng)用程序的運(yùn)行時(shí)間關(guān)于》、?、d三個(gè)變量的一個(gè)復(fù)雜函數(shù)。步驟(3)包括以下子步驟(3-1)接收用戶提交的輸入文件,包括作業(yè)描述文件、數(shù)據(jù)分布文件、網(wǎng)絡(luò)拓?fù)湮募虷adoop集群機(jī)器文件;(3-2)根據(jù)用戶提交的輸入文件生成初始的參數(shù)配置方案集,其含有3*n個(gè)參數(shù)配置方案,其中η為正整數(shù);(3-3)使用步驟(2)的方法預(yù)估Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間 Iit1, t2, · · · t3n];(3-4)將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間B1, t2,…t3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X,并刪除排在后面的2*η個(gè)參數(shù)配置方案;(3-5)利用遺傳算法將前η個(gè)運(yùn)行時(shí)間值對(duì)應(yīng)的參數(shù)配置方案變?yōu)?*η個(gè)參數(shù)配
置方案;(3-6)將Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t,t,2,· · · t,3η]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X’,并刪除排在后面的2*η個(gè)參數(shù)配置方案;(3-7)判斷χ和X’差的絕對(duì)值是否不小于某一閾值,若不小于閾值,則返回步驟(3-5),否則過程結(jié)束。閾值的取值為χ的1%至5%。通過本發(fā)明所構(gòu)思的以上技術(shù)方案,與現(xiàn)有技術(shù)相比,本方法具有以下的有益效果:(1)高效率和低成本因?yàn)椴捎昧瞬襟E(2-2-),使用MapReduce模擬技術(shù)來預(yù)估Hadoop應(yīng)用程序的運(yùn)行時(shí)間,而MapReduce模擬器只需要在單機(jī)環(huán)境下就能運(yùn)行,所占用的系統(tǒng)資源非常小,且獲得結(jié)果的速度快所以具有高效率和低成本;(2)使用方便因?yàn)椴捎昧瞬襟E(3),使用遺傳算法來自動(dòng)生成和選擇Hadoop參數(shù)配置方案,不需要用戶手動(dòng)去調(diào)整參數(shù),對(duì)用戶的使用要求很低;(3)可擴(kuò)展因?yàn)椴捎昧瞬襟E(1),使用btrace程序動(dòng)態(tài)跟蹤在Hadoop集群中運(yùn)行的java程序,以獲取Hadoop應(yīng)用程序的運(yùn)行數(shù)據(jù),不需要對(duì)Hadoop本身的代碼進(jìn)行修改,不僅僅適用于少數(shù)幾臺(tái)機(jī)器組成的Hadoop集群,對(duì)含有大量機(jī)器的集群同樣適用,而且新增加一臺(tái)機(jī)器后只需要修改系統(tǒng)的幾個(gè)輸入文件,系統(tǒng)其它部分不需要做任何修改,具有很高的可擴(kuò)展性。本發(fā)明的另一目的在于提供一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化系統(tǒng),旨在能夠解決現(xiàn)有系統(tǒng)中存在的高成本、低效率、高門檻、以及Hadoop代碼復(fù)雜的問題。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化系統(tǒng),包括Hadoop應(yīng)用程序分析模塊、性能預(yù)估模塊、以及參數(shù)調(diào)整模塊,Hadoop應(yīng)用程序分析模塊用于統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件,性能預(yù)估模塊用于根據(jù)輸出文件預(yù)估Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能,并包括輸入子模塊和Hadoop集群模擬子模塊,輸入子模塊用于獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,Hadoop集群模擬子模塊用于根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t,參數(shù)調(diào)整模塊用于根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案。參數(shù)調(diào)整模塊包括接收子模塊、生成子模塊、預(yù)估子模塊、第一排序子模塊、變異子模塊、第二排序子模塊以及判斷子模塊,接收子模塊用于接收用戶提交的輸入文件,包括作業(yè)描述文件、數(shù)據(jù)分布文件、網(wǎng)絡(luò)拓?fù)湮募虷adoop集群機(jī)器文件,生成子模塊用于根據(jù)用戶提交的輸入文件生成初始的參數(shù)配置方案集,其含有3*n個(gè)參數(shù)配置方案,其中η為正整數(shù),預(yù)估子模塊用于使用性能預(yù)估模塊預(yù)估Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1,t2,…t3n],第一排序子模塊用于將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1; t2,. . . t3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X,并刪除排在后面的2*η個(gè)參數(shù)配置方案,變異子模塊用于利用遺傳算法將前n個(gè)運(yùn)行時(shí)間值對(duì)應(yīng)的參數(shù)配置方案變?yōu)?*η個(gè)參數(shù)配置方案,第二排序子模塊用于將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t’i,t’2,. . . t’3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X’,并刪除排在后面的2*n個(gè)參數(shù)配置方案,判斷子模塊用于判斷x和x’差的絕對(duì)值是否不小于某一閾值,若不小于閾值,則返回變異子模塊,否則過程結(jié)束。通過本發(fā)明所構(gòu)思的以上技術(shù)方案,與現(xiàn)有技術(shù)相比,本系統(tǒng)具有以下的有益效果:(I)高效率和低成本因?yàn)椴捎昧?Hadoop集群模擬子模塊,使用MapReduce模擬技術(shù)來預(yù)估Hadoop應(yīng)用程序的運(yùn)行時(shí)間,而MapReduce模擬器只需要在單機(jī)環(huán)境下就能運(yùn)行,所占用的系統(tǒng)資源非常小,且獲得結(jié)果的速度快所以具有高效率和低成本;(2)使用方便因?yàn)椴捎昧藚?shù)調(diào)整模塊,使用遺傳算法來自動(dòng)生成和選擇Hadoop參數(shù)配置方案,不需要用戶手動(dòng)修改,不僅減少了用戶的工作量,同時(shí)也降低了使用的門檻,極大地方便了用戶;(3)可擴(kuò)展因?yàn)椴捎昧?Hadoop應(yīng)用程序分析模塊,使用btrace程序動(dòng)態(tài)跟蹤在Hadoop集群中運(yùn)行的java程序,以獲取Hadoop應(yīng)用程序的運(yùn)行數(shù)據(jù),不需要對(duì)Hadoop本身的代碼進(jìn)行修改,不僅僅適用于少數(shù)幾臺(tái)機(jī)器組成的Hadoop集群,對(duì)含有大量機(jī)器的集群同樣適用,而且新增加一臺(tái)機(jī)器后只需要修改系統(tǒng)的幾個(gè)輸入文件,系統(tǒng)其它部分不需要做任何修改,具有很高的可擴(kuò)展性。
圖1是本發(fā)明基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法的流程圖。圖2是本發(fā)明方法中步驟(3)的細(xì)化流程圖。圖3是本發(fā)明基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化系統(tǒng)的結(jié)構(gòu)示意圖。圖4是本發(fā)明輸入子模塊和Hadoop集群模擬子模塊的示意框圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。如圖1所示,本發(fā)明基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法包括以下步驟(I)統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件;具體而言,應(yīng)用程序的運(yùn)行特征包括各個(gè)階段的運(yùn)行時(shí)間,以及處理和傳輸?shù)臄?shù)據(jù);首先,使用btrace程序動(dòng)態(tài)跟蹤在Hadoop集群中運(yùn)行的java程序,以獲取相應(yīng)的數(shù)據(jù),并將跟蹤到的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,以生成XML格式的輸出文件存入用戶指定的目錄中,用于可視化的展示Hadoop應(yīng)用程序運(yùn)行細(xì)節(jié),然后,將為運(yùn)行該Hadoop應(yīng)用程序分配的資源,以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案追加到輸出文件中。使用btrace跟蹤跟蹤Hadoop集群的應(yīng)用程序不僅安全,不會(huì)影響到程序本身的運(yùn)行,而且也不需要修改Hadoop的代碼,可以使本發(fā)明與Hadoop的具體版本隔離,不需要與某個(gè)具體的Hadoop版本綁定,擴(kuò)大了本發(fā)明的適用范圍;(2)根據(jù)輸出文件預(yù)估Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能,具體包括以下子步驟(2-1)獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案;(2-2)根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t ;具體是采用以下公式/. = / (/'_,d, P)其中?表示為運(yùn)行該Hadoop應(yīng)用程序分配的資源,^!表示輸出文件,多表示該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,匕是Hadoop應(yīng)用程序的運(yùn)行時(shí)間關(guān)于聲、P, 3三個(gè)變量的一個(gè)復(fù)雜函數(shù),為了提高性能預(yù)估的精度,本發(fā)明使用Hadoop集群模擬器替代Fj的功能;(3)根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,具體包括以下子步驟(如圖2所示)(3-1)接收用戶提交的輸入文件,包括作業(yè)描述文件、數(shù)據(jù)分布文件、網(wǎng)絡(luò)拓?fù)湮募虷adoop集群機(jī)器文件;(3-2)根據(jù)用戶提交的輸入文件生成初始的參數(shù)配置方案集,其含有3*n個(gè)參數(shù)配置方案,其中η為正整數(shù);(3-3)使用步驟(2)的方法預(yù)估Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間 Iit1, t2, · · · t3n];(3-4)將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間B1, t2,…t3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)`行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X,并刪除排在后面的2*η個(gè)參數(shù)配置方案;(3-5)利用遺傳算法將前η個(gè)運(yùn)行時(shí)間值對(duì)應(yīng)的參數(shù)配置方案變?yōu)?*η個(gè)參數(shù)配
置方案;(3-6)將Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t,t,2,· · · t,3η]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X’,并刪除排在后面的2*η個(gè)參數(shù)配置方案;(3-7)判斷χ和X’差的絕對(duì)值是否不小于某一閾值,若不小于閾值,則返回步驟(3-5),否則過程結(jié)束;在本實(shí)施方式中,閾值的取值為χ的1%至5%。如圖3所示,本發(fā)明基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化系統(tǒng)包括Hadoop應(yīng)用程序分析模塊1、性能預(yù)估模塊2、以及參數(shù)調(diào)整模塊3。Hadoop應(yīng)用程序分析模塊I用于統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件;具體而言,應(yīng)用程序的運(yùn)行特征包括各個(gè)階段的運(yùn)行時(shí)間,以及處理和傳輸?shù)臄?shù)據(jù);首先,使用btrace程序動(dòng)態(tài)跟蹤在Hadoop集群中運(yùn)行的java程序,以獲取相應(yīng)的數(shù)據(jù),并將跟蹤到的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,以生成XML格式的輸出文件存入用戶指定的目錄中,用于可視化的展示Hadoop應(yīng)用程序運(yùn)行細(xì)節(jié),然后,將為運(yùn)行該Hadoop應(yīng)用程序分配的資源,以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案追加到輸出文件中。性能預(yù)估模塊2用于根據(jù)輸出文件預(yù)估Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能。性能預(yù)估模塊2包括輸入子模塊21和Hadoop集群模擬子模塊22。輸入子模塊21獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案。如圖4所示,輸入子模塊21包括作業(yè)描述1A、數(shù)據(jù)分布1B、網(wǎng)絡(luò)拓?fù)銲C和集群機(jī)器ID這四個(gè)文件。其中,作業(yè)描述IA是Hadoop應(yīng)用程序分析模塊的輸出文件,里面含有該程序在Hadoop集群上運(yùn)行的各種統(tǒng)計(jì)信息;數(shù)據(jù)分布IB文件描述了輸入數(shù)據(jù)在Hadoop集群中的分布;網(wǎng)絡(luò)拓?fù)銲C和集群機(jī)器ID分別包含Hadoop集群的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和Hadoop集群中機(jī)器的性能參數(shù)信息。用戶提交這四個(gè)描述文件后,輸入子模塊21對(duì)這些文件進(jìn)行相應(yīng)處理,提取出模擬器所需的信息用于預(yù)估Hadoop應(yīng)用程序在集群上的運(yùn)行性能。用戶提交文件后,輸入子模塊21對(duì)這些文件進(jìn)行處理,提取文件中的信息作為Hadoop集群模擬器的輸入數(shù)據(jù)。Hadoop集群模擬子模塊22用于根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t ;具體是采用以下公式t - /■', (P, tU p)其中F表示為運(yùn)行該Hadoop應(yīng)用程序分配的資源,^表示輸出文件,戶表示該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,F(xiàn)j是Hadoop應(yīng)用程序的運(yùn)行時(shí)間關(guān)于pJ三個(gè)變量的一個(gè)復(fù)雜函數(shù),為了提高性能預(yù)估的精度,本發(fā)明使用Hadoop集群模擬器替代Fj的功能。如圖4所示,Hadoop集群模擬子模塊22包括MapReduce模擬2A、集群網(wǎng)絡(luò)模擬2B、磁盤I/O模擬2C。MapReduce 2A模塊提供了一個(gè)對(duì)MapReduce作業(yè)細(xì)粒度的模擬,結(jié)合代價(jià)模型估算Hadoop應(yīng)用程序運(yùn)行時(shí)每個(gè)階段的運(yùn)行時(shí)間,進(jìn)而估算出程序總的運(yùn)行時(shí)間;集群網(wǎng)絡(luò)模擬2B模塊,用于模擬Hadoop應(yīng)用程序執(zhí)行過程中各個(gè)進(jìn)程之間的通信,包括節(jié)點(diǎn)之間的數(shù)據(jù)傳輸以及節(jié)點(diǎn)內(nèi)部不同進(jìn)程之間的 通信;磁盤I/O模擬2C模塊,用于模擬Hadoop應(yīng)用程序執(zhí)行過程中的磁盤1/0,包括從HDFS中讀取數(shù)據(jù),map任務(wù)中間結(jié)果寫入本地磁盤、reduce任務(wù)從本地磁盤中讀取數(shù)據(jù)、reduce處理結(jié)果寫入HDFS。Hadoop集群模擬子模塊22將輸入子模塊21的輸出數(shù)據(jù)作為輸入,然后使用MapReduce模擬技術(shù)并結(jié)合代價(jià)模型對(duì)這些數(shù)據(jù)進(jìn)行處理,最后,輸出MapReduce作業(yè)的詳細(xì)運(yùn)行信息,包括作業(yè)執(zhí)行時(shí)間、節(jié)點(diǎn)間數(shù)據(jù)傳輸量的大小、任務(wù)各個(gè)階段的時(shí)間線等等。參數(shù)調(diào)整模塊3用于根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并包括接收子模塊31、生成子模塊32、預(yù)估子模塊33、第一排序子模塊34、變異子模塊35、第二排序子模塊36以及判斷子模塊37。接收子模塊31用于接收用戶提交的輸入文件,包括作業(yè)描述文件、數(shù)據(jù)分布文件、網(wǎng)絡(luò)拓?fù)湮募虷adoop集群機(jī)器文件。生成子模塊32用于根據(jù)用戶提交的輸入文件生成初始的參數(shù)配置方案集,其含有3*n個(gè)參數(shù)配置方案,其中η為正整數(shù)。預(yù)估子模塊33用于使用性能預(yù)估模塊2預(yù)估Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1; t2,. . . t3n]。第一排序子模塊34用于將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1; t2,…t3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X,并刪除排在后面的2*η個(gè)參數(shù)配置方案。變異子模塊35用于利用遺傳算法將前η個(gè)運(yùn)行時(shí)間值對(duì)應(yīng)的參數(shù)配置方案變?yōu)?*η個(gè)參數(shù)配置方案。第二排序子模塊36用于將Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t’i,t’2,. . . t’3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X’,并刪除排在后面的2*η個(gè)參數(shù)配置方案。判斷子模塊37用于判斷χ和X’差的絕對(duì)值是否不小于某一閾值,若不小于閾值,則返回變異子模塊35,否則過程結(jié)束。實(shí)例為了驗(yàn)證本發(fā)明系統(tǒng)的可行性和有效性,在真實(shí)環(huán)境下配置本發(fā)明系統(tǒng),對(duì)Hadoop典型應(yīng)用集合進(jìn)行實(shí)驗(yàn)。本發(fā)明的Hadoop集群基本硬件和軟件配置如表I所示
權(quán)利要求
1.一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法,其特征在于,包括以下步驟 (O統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件; (2)根據(jù)輸出文件預(yù)估Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能,具體包括以下子步驟 (2-1)獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案; (2-2)根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t ; (3)根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案。
2.根據(jù)權(quán)利要求1所述的Hadoop參數(shù)自動(dòng)優(yōu)化方法,其特征在于,步驟(I)具體為,首先,使用btrace程序動(dòng)態(tài)跟蹤在Hadoop集群中運(yùn)行的java程序,以獲取相應(yīng)的數(shù)據(jù),并將跟蹤到的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,以生成XML格式的輸出文件存入用戶指定的目錄中,用于可視化的展示Hadoop應(yīng)用程序運(yùn)行細(xì)節(jié),然后,將為運(yùn)行該Hadoop應(yīng)用程序分配的資源,以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案追加到輸出文件中。
3.根據(jù)權(quán)利要求1所述的Hadoop參數(shù)自動(dòng)優(yōu)化方法,其特征在于,應(yīng)用程序的運(yùn)行特征包括各個(gè)階段的運(yùn)行時(shí)間,以及處理和傳輸?shù)臄?shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的Hadoop參數(shù)自動(dòng)優(yōu)化方法,其特征在于,步驟(2)具體是采用以下公式 t=fj(r,d,p) 其中?表示為運(yùn)行該Hadoop應(yīng)用程序分配的資源,J表示輸出文件,#表示該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,匕是Hadoop應(yīng)用程序的運(yùn)行時(shí)間關(guān)于]5、F、J三個(gè)變量的一個(gè)復(fù)雜函數(shù)。
5.根據(jù)權(quán)利要求1所述的Hadoop參數(shù)自動(dòng)優(yōu)化方法,其特征在于,步驟(3)包括以下子步驟 (3-1)接收用戶提交的輸入文件,包括作業(yè)描述文件、數(shù)據(jù)分布文件、網(wǎng)絡(luò)拓?fù)湮募虷adoop集群機(jī)器文件; (3-2)根據(jù)用戶提交的輸入文件生成初始的參數(shù)配置方案集,其含有3*n個(gè)參數(shù)配置方案,其中η為正整數(shù); (3-3)使用步驟(2)的方法預(yù)估Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1, t2,…t3n]; (3-4)將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[tp t2,…t3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X,并刪除排在后面的2*η個(gè)參數(shù)配置方案; (3-5)利用遺傳算法將前η個(gè)運(yùn)行時(shí)間值對(duì)應(yīng)的參數(shù)配置方案變?yōu)?*η個(gè)參數(shù)配置方案; (3-6)將Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t'1, t'2,· · · t'3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X’,并刪除排在后面的2*η個(gè)參數(shù)配置方案; (3-7)判斷X和X’差的絕對(duì)值是否不小于某一閾值,若不小于閾值,則返回步驟(3-5),否則過程結(jié)束。
6.根據(jù)權(quán)利要求5所述的Hadoop參數(shù)自動(dòng)優(yōu)化方法,其特征在于,閾值的取值為χ的1% 至 5% ο
7.一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化系統(tǒng),其特征在于, 包括Hadoop應(yīng)用程序分析模塊、性能預(yù)估模塊、以及參數(shù)調(diào)整模塊; Hadoop應(yīng)用程序分析模塊用于統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件; 性能預(yù)估模塊用于根據(jù)輸出文件預(yù)估Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能,并包括輸入子模塊和Hadoop集群模擬子模塊; 輸入子模塊用于獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案; Hadoop集群模擬子模塊用于根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t ; 參數(shù)調(diào)整模塊用于根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案。
8.根據(jù)權(quán)利要求7所述的Hadoop參數(shù)自動(dòng)優(yōu)化系統(tǒng),其特征在于, 參數(shù)調(diào)整模塊包括接收子模塊、生成子模塊、預(yù)估子模塊、第一排序子模塊、變異子模塊、第二排序子模塊以及判斷子模塊; 接收子模塊用于接收用戶提交的輸入文件,包括作業(yè)描述文件、數(shù)據(jù)分布文件、網(wǎng)絡(luò)拓?fù)湮募虷adoop集群機(jī)器文件; 生成子模塊用于根據(jù)用戶提交的輸入文件生成初始的參數(shù)配置方案集,其含有3*n個(gè)參數(shù)配置方案,其中η為正整數(shù); 預(yù)估子模塊用于使用性能預(yù)估模塊預(yù)估Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1; t2, . . . t3n]; 第一排序子模塊用于將Hadoop應(yīng)用程序在3*n個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t1; t2,. . . t3n]按照從小到大的順序進(jìn)行排序,并選出前η個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X,并刪除排在后面的2*η個(gè)參數(shù)配置方案; 變異子模塊用于利用遺傳算法將前η個(gè)運(yùn)行時(shí)間值對(duì)應(yīng)的參數(shù)配置方案變?yōu)?*η個(gè)參數(shù)配置方案;第二排序子模塊用于將Hadoop應(yīng)用程序在3*η個(gè)參數(shù)配置方案的運(yùn)行時(shí)間[t’ i,t’2,. . . t’3n]按照從小到大的順序進(jìn)行排序,并選出前n個(gè)運(yùn)行時(shí)間值以及對(duì)應(yīng)的參數(shù)配置方案,保存其中運(yùn)行時(shí)間值最小的一個(gè)X’,并刪除排在后面的2*η個(gè)參數(shù)配置方案;判斷子模塊用于判斷χ和X’差的絕對(duì)值是否不小于某一閾值,若不小于閾值,則返回變異子模塊,否則過程結(jié)束。
全文摘要
本發(fā)明公開了一種基于性能預(yù)估的Hadoop參數(shù)自動(dòng)優(yōu)化方法,包括統(tǒng)計(jì)分析用戶在Hadoop集群上運(yùn)行的應(yīng)用程序的運(yùn)行特征,以生成輸出文件,獲取輸出文件,并提取輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,根據(jù)輸出文件中各個(gè)階段的運(yùn)行時(shí)間、處理和傳輸?shù)臄?shù)據(jù)、為運(yùn)行該Hadoop應(yīng)用程序分配的資源、以及該Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案,并采用MapReduce模擬技術(shù)來計(jì)算Hadoop應(yīng)用程序的總運(yùn)行時(shí)間t,根據(jù)預(yù)估的Hadoop應(yīng)用程序在當(dāng)前參數(shù)配置方案下的性能并采用遺傳算法來調(diào)節(jié)Hadoop應(yīng)用程序?qū)?yīng)的參數(shù)配置方案。本發(fā)明能夠解決現(xiàn)有方法中存在的高成本、低效率、高門檻、以及增加Hadoop代碼復(fù)雜性的問題。
文檔編號(hào)G06F9/44GK103064664SQ20121049496
公開日2013年4月24日 申請(qǐng)日期2012年11月28日 優(yōu)先權(quán)日2012年11月28日
發(fā)明者金海 , 石宣化, 吳松, 曾林西 申請(qǐng)人:華中科技大學(xué)