一種面向Hadoop的動(dòng)態(tài)調(diào)度方法
【專利摘要】本發(fā)明提供一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,包括以下步驟:S1:設(shè)置每個(gè)節(jié)點(diǎn)的計(jì)算能力是一致的;且每個(gè)作業(yè)的執(zhí)行時(shí)間隨著執(zhí)行次數(shù)的增加而線性減少;S2:判斷作業(yè)是否為同類作業(yè),且獲取并統(tǒng)計(jì)同類作業(yè)的執(zhí)行情況;S3:解析每個(gè)作業(yè)提交時(shí)所制定的期望執(zhí)行時(shí)間;S4:若判定作業(yè)為同類作業(yè),則會(huì)建立代價(jià)模型得到作業(yè)權(quán)重值;S5:若判斷作業(yè)不為同類作業(yè),則分配最低權(quán)重值;S6:根據(jù)作業(yè)權(quán)重值調(diào)整作業(yè)實(shí)際資源量,提高實(shí)時(shí)作業(yè)的響應(yīng)度。本發(fā)明可以有效地解決現(xiàn)有調(diào)度算法在調(diào)度實(shí)時(shí)作業(yè)上的不足,并對(duì)實(shí)時(shí)作業(yè)進(jìn)行資源控制,以此提高實(shí)時(shí)作業(yè)效率的能力,從而達(dá)到用戶精細(xì)控制作業(yè)執(zhí)行速度的功能。
【專利說(shuō)明】-種面向Hadoop的動(dòng)態(tài)調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及電子技術(shù)應(yīng)用領(lǐng)域,具體涉及對(duì)Hadoop平臺(tái)的Fair Scheduler算法 的改進(jìn)的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法。
【背景技術(shù)】
[0002] 隨著網(wǎng)絡(luò)信息技術(shù)的迅猛發(fā)展,每天數(shù)十億的請(qǐng)求訪問(wèn)量造成了 PB級(jí)別的數(shù)據(jù) 庫(kù)存儲(chǔ)量,Hadoop作為一個(gè)開(kāi)源的大型數(shù)據(jù)處理平臺(tái),成為了云計(jì)算的最佳選擇。Hadoop 是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,因?yàn)樗梢圆渴鹪诋悩?gòu)集群的基礎(chǔ)設(shè) 施和普通的硬件中,從而使得云計(jì)算具有易于擴(kuò)展的特性。Hadoop是目前主流的云計(jì)算解 決方案,通過(guò)實(shí)現(xiàn)簡(jiǎn)單的兩個(gè)函數(shù)來(lái)解決大數(shù)據(jù)集的分析問(wèn)題。
[0003] 在Hadoop框架中作業(yè)調(diào)度是關(guān)乎作業(yè)執(zhí)行效率與用戶響應(yīng)的關(guān)鍵?,F(xiàn)有的算法 無(wú)論是Fair Scheduler (公平調(diào)度)或者Capacity Scheduler (計(jì)算能力調(diào)度)都不能很 好的處理用戶實(shí)時(shí)提交的作業(yè);在Fair Scheduler調(diào)度算法中當(dāng)集群空閑時(shí)作業(yè)能夠得 到資源執(zhí)行,但是當(dāng)集群滿載時(shí),針對(duì)實(shí)時(shí)的作業(yè)Fair Scheduler不能很好的調(diào)度合適的 資源給予實(shí)時(shí)作業(yè)執(zhí)行,常見(jiàn)的狀況是實(shí)時(shí)作業(yè)需要等待Fair Scheduler重新進(jìn)行公平共 享量的計(jì)算,同時(shí)需要對(duì)資源池的資源進(jìn)行搶占時(shí)才能獲得與新設(shè)置的公平共享量相適 應(yīng)的資源;而Capacity Scheduler調(diào)度算法僅僅是FIFO(先入先出)調(diào)度算法的多隊(duì)列的 實(shí)現(xiàn)。因此,如何針對(duì)作業(yè)調(diào)度進(jìn)行優(yōu)化從而提高Hadoop的性能勢(shì)在必行。
【發(fā)明內(nèi)容】
[0004] 針對(duì)上述現(xiàn)有調(diào)度算法中的問(wèn)題,本發(fā)明的目的是提供一種面向Hadoop的動(dòng)態(tài) 調(diào)度方法,以解決現(xiàn)有技術(shù)中高實(shí)時(shí)性作業(yè)無(wú)法得到響應(yīng)、作業(yè)執(zhí)行速度難以控制、Fair Scheduler基于缺額的資源搶占方法使大作業(yè)的占用的資源巨大導(dǎo)致小作業(yè)遲遲得不到資 源,從而導(dǎo)致小作業(yè)難以得到及時(shí)的調(diào)度的問(wèn)題。
[0005] 為解決上述問(wèn)題,根據(jù)本發(fā)明的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,包括以下步 驟:
[0006] S1 :設(shè)置每個(gè)節(jié)點(diǎn)的計(jì)算能力是一致的,且每個(gè)作業(yè)的執(zhí)行時(shí)間隨著執(zhí)行次數(shù)的 增加而線性減少;
[0007] S2 :判斷作業(yè)是否為同類作業(yè),且獲取并統(tǒng)計(jì)同類作業(yè)的執(zhí)行情況;
[0008] S3 :解析出每個(gè)作業(yè)提交時(shí)的期望執(zhí)行時(shí)間;
[0009] S4 :若判斷作業(yè)為同類作業(yè),則建立代價(jià)模型以得到作業(yè)權(quán)重值;
[0010] S5 :若判斷作業(yè)不為同類作業(yè),則給該作業(yè)分配最低權(quán)重值;
[0011] S6 :根據(jù)作業(yè)權(quán)重值調(diào)整作業(yè)實(shí)際資源量,提高實(shí)時(shí)作業(yè)的響應(yīng)度。
[0012] 在一些實(shí)施方式中,步驟S2進(jìn)一步包括:
[0013] 創(chuàng)建監(jiān)聽(tīng)事件執(zhí)行中的作業(yè)進(jìn)行監(jiān)聽(tīng),在監(jiān)聽(tīng)事件中激活抓取方法對(duì)運(yùn)算完成或 者失敗的作業(yè)進(jìn)行信息回收,
[0014] 作業(yè)的運(yùn)行記錄數(shù)據(jù)通過(guò)計(jì)數(shù)器記錄,
[0015] 用正則表達(dá)式解析計(jì)數(shù)器記錄的運(yùn)行記錄數(shù)據(jù),生成對(duì)應(yīng)的實(shí)例,再?gòu)膶?shí)例中進(jìn) 行提取并解析用戶在提交作業(yè)時(shí)自定義的數(shù)據(jù),
[0016] 使用數(shù)據(jù)庫(kù)存儲(chǔ)作業(yè)信息,通過(guò)所述數(shù)據(jù)庫(kù)存儲(chǔ)一個(gè)作業(yè)中的多個(gè)運(yùn)行參數(shù)鍵值 對(duì);
[0017] 為防止所述數(shù)據(jù)庫(kù)中存儲(chǔ)所述作業(yè)信息數(shù)據(jù)丟失,設(shè)定每隔一個(gè)預(yù)設(shè)的儲(chǔ)存時(shí)間 將數(shù)據(jù)庫(kù)中的作業(yè)信息數(shù)據(jù)持久化到存儲(chǔ)設(shè)備中;
[0018] 其中,
[0019] 同類作業(yè)的判斷是根據(jù)作業(yè)名的相似程度判定的。
[0020] 在一些實(shí)施方式中,步驟S3進(jìn)一步包括:
[0021] 用戶在Hadoop集群中期望提交的作業(yè)的工作時(shí)間即用戶期望執(zhí)行時(shí)間,最高閥 值為作業(yè)占用用戶資源池所有資源,最低閥值為占用1個(gè)單位的資源(slot);
[0022] 采取推測(cè)執(zhí)行機(jī)制獲得用戶期望執(zhí)行時(shí)間;
[0023] 在推測(cè)執(zhí)行機(jī)制的基礎(chǔ)上,建立作業(yè)代價(jià)模型來(lái)制定實(shí)際期望執(zhí)行時(shí)間。
[0024] 在一些實(shí)施方式中,步驟S4中,若判定作業(yè)同類作業(yè),則建立代價(jià)模型的步驟如 下:
[0025] 根據(jù)Map作業(yè)和Reduce作業(yè)所產(chǎn)生的歷史數(shù)據(jù)來(lái)決定代價(jià)模型;
[0026] 對(duì)Map作業(yè)和Reduce作業(yè)各個(gè)階段進(jìn)行分析,對(duì)作業(yè)持續(xù)時(shí)間進(jìn)行更改,更改的 作業(yè)持續(xù)時(shí)間為:
[0027]
【權(quán)利要求】
1. 一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,包括以下步驟: 51 :設(shè)置每個(gè)節(jié)點(diǎn)的計(jì)算能力為一致,且每個(gè)作業(yè)的執(zhí)行時(shí)間隨著執(zhí)行次數(shù)的增加而 線性減少; 52 :判斷作業(yè)是否為同類作業(yè),且獲取并統(tǒng)計(jì)同類作業(yè)的執(zhí)行情況; 53 :解析出每個(gè)作業(yè)提交時(shí)的期望執(zhí)行時(shí)間; 54 :若判斷作業(yè)為同類作業(yè),則建立代價(jià)模型以得到作業(yè)權(quán)重值; 55 :若判斷作業(yè)不為同類作業(yè),則給該作業(yè)分配最低權(quán)重值; 56 :根據(jù)作業(yè)權(quán)重值調(diào)整作業(yè)實(shí)際資源量,提高實(shí)時(shí)作業(yè)的響應(yīng)度。
2. 根據(jù)權(quán)利要求1所述的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,所述步驟S2 進(jìn)一步包括: 創(chuàng)建監(jiān)聽(tīng)事件執(zhí)行中的作業(yè)進(jìn)行監(jiān)聽(tīng),在所述監(jiān)聽(tīng)事件中激活抓取方法對(duì)運(yùn)算完成或 者失敗的作業(yè)進(jìn)行信息回收, 作業(yè)的運(yùn)行記錄數(shù)據(jù)通過(guò)計(jì)數(shù)器記錄, 用正則表達(dá)式解析所述計(jì)數(shù)器記錄的運(yùn)行記錄數(shù)據(jù),生成對(duì)應(yīng)的實(shí)例,再?gòu)膶?shí)例中進(jìn) 行提取并解析用戶在提交作業(yè)時(shí)自定義的數(shù)據(jù), 使用數(shù)據(jù)庫(kù)存儲(chǔ)作業(yè)信息,通過(guò)所述數(shù)據(jù)庫(kù)存儲(chǔ)一個(gè)作業(yè)中的多個(gè)運(yùn)行參數(shù)鍵值對(duì); 為防止所述數(shù)據(jù)庫(kù)中存儲(chǔ)所述作業(yè)信息數(shù)據(jù)丟失,設(shè)定每隔一個(gè)預(yù)設(shè)的儲(chǔ)存時(shí)間將數(shù) 據(jù)庫(kù)中的作業(yè)信息數(shù)據(jù)持久化到存儲(chǔ)設(shè)備中; 其中, 同類作業(yè)的判斷是根據(jù)作業(yè)名的相似程度判定的。
3. 根據(jù)權(quán)利要求1所述的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,所述步驟S3 進(jìn)一步包括: 用戶在Hadoop集群中期望提交的作業(yè)的工作時(shí)間即用戶期望執(zhí)行時(shí)間,最高閥值為 作業(yè)占用用戶資源池所有資源,最低閥值為占用1個(gè)單位的資源; 采取推測(cè)執(zhí)行機(jī)制獲得用戶期望執(zhí)行時(shí)間; 在推測(cè)執(zhí)行機(jī)制的基礎(chǔ)上,建立作業(yè)代價(jià)模型來(lái)制定實(shí)際期望執(zhí)行時(shí)間。
4. 根據(jù)權(quán)利要求1所述的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,所述步驟S4 中,若判定作業(yè)同類作業(yè),則建立代價(jià)模型的步驟如下: 根據(jù)Map作業(yè)和Reduce作業(yè)所產(chǎn)生的歷史數(shù)據(jù)來(lái)決定代價(jià)模型; 對(duì)Map作業(yè)和Reduce作業(yè)各個(gè)階段進(jìn)行分析,對(duì)作業(yè)持續(xù)時(shí)間進(jìn)行更改,更改的作業(yè) 持續(xù)時(shí)間為: D+A> +包+ /cr/Cs 其中,D表示用戶設(shè)定的期望工作時(shí)間、A表示查詢到來(lái)的時(shí)間、〇表示輸入數(shù)據(jù)大小、 nm是Map任務(wù)的資源槽數(shù)目、Cm表示Map任務(wù)處理單元數(shù)據(jù)的速率、f 〇表示Map任務(wù)輸出 端的數(shù)據(jù)量、I表示Reduce任務(wù)的資源槽數(shù)目、表示Reduce任務(wù)處理單元數(shù)據(jù)的速率、 Cd表示單元數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)乃俾?、Cs表示單元數(shù)據(jù)排序的速率; 根據(jù)以上步驟,得到使作業(yè)在期望工作時(shí)間內(nèi)完成的最低占用的資源數(shù),根據(jù)這個(gè)資 源數(shù)獲取作業(yè)在集群中的權(quán)重值,根據(jù)作業(yè)權(quán)重值來(lái)動(dòng)態(tài)地調(diào)整資源數(shù)。
5. 根據(jù)權(quán)利要求4所述的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,所述對(duì)作業(yè) 分配權(quán)重的步驟包括: 若提交的作業(yè)在數(shù)據(jù)庫(kù)中無(wú)同類作業(yè),則分配最低權(quán)值; 若提交的作業(yè)在數(shù)據(jù)庫(kù)中有同類作業(yè)且為用戶提交的實(shí)時(shí)作業(yè),讀取數(shù)據(jù)庫(kù)中的同類 作業(yè)信息,排除作業(yè)執(zhí)行效率最高的作業(yè)集與執(zhí)行效率最低的作業(yè)集,對(duì)剩余的作業(yè)運(yùn)行 參數(shù)信息進(jìn)行平均計(jì)算; 對(duì)所述進(jìn)行平均計(jì)算后的作業(yè)運(yùn)行參數(shù)信息進(jìn)行建模,得到用戶提交的同類作業(yè)的預(yù) 計(jì)執(zhí)行時(shí)間,根據(jù)Hadoop集群的實(shí)時(shí)運(yùn)行狀況與用戶的期望作業(yè)執(zhí)行時(shí)間來(lái)動(dòng)態(tài)分配該 作業(yè)的權(quán)重值,根據(jù)作業(yè)權(quán)重值來(lái)動(dòng)態(tài)地調(diào)整資源數(shù)。
6. 根據(jù)權(quán)利要求4或5所述的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,所述的 根據(jù)作業(yè)權(quán)重來(lái)動(dòng)態(tài)分配調(diào)整資源數(shù)的步驟如下: 設(shè)置實(shí)時(shí)作業(yè)資源池; 對(duì)實(shí)時(shí)作業(yè)資源池設(shè)置最小資源共享量搶占檢測(cè)時(shí)間,所述實(shí)時(shí)作業(yè)資源池會(huì)每隔若 干秒檢測(cè)當(dāng)前所述實(shí)時(shí)作業(yè)資源池的占用資源的數(shù)目,當(dāng)發(fā)現(xiàn)占用數(shù)沒(méi)有達(dá)到最小公平共 享量,會(huì)從其他資源池中搶占資源。
7. 根據(jù)權(quán)利要求1所述的一種面向Hadoop的動(dòng)態(tài)調(diào)度方法,其特征在于,還包括對(duì) Fair Scheduler的可插拔模塊WeightAdjuster接口中的adjust Weight方法來(lái)控制并調(diào) 整權(quán)重,其步驟包括: 更新作業(yè)的線程每隔一個(gè)預(yù)設(shè)的更新時(shí)間進(jìn)行一次作業(yè)更新的操作,更新的信息包括 作業(yè)的公平共享量,調(diào)度算法日志,WeightAdjuster每隔一個(gè)調(diào)用閥值被每個(gè)作業(yè)調(diào)用一 次; 通過(guò)外接接口編寫(xiě)權(quán)重調(diào)整器來(lái)動(dòng)態(tài)調(diào)整運(yùn)行作業(yè)的權(quán)重; 通過(guò)參數(shù)Mapred. fairscheduler. weightadjuster使所述權(quán)重調(diào)整器生效,作業(yè)權(quán)重 即為WeightAdjuster中方法AdjustWeight的返回值。
【文檔編號(hào)】G06F9/46GK104298550SQ201410529300
【公開(kāi)日】2015年1月21日 申請(qǐng)日期:2014年10月9日 優(yōu)先權(quán)日:2014年10月9日
【發(fā)明者】施佺, 肖瑤, 施振佺, 馬松王, 徐露, 劉德靖, 李冬冬 申請(qǐng)人:南通大學(xué)