專利名稱:數(shù)據(jù)并行處理方法、系統(tǒng)及負(fù)載均衡調(diào)度器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,更具體地說,涉及數(shù)據(jù)并行處理方法、系統(tǒng)及負(fù)載均衡調(diào)度器。
背景技術(shù):
在分布式計(jì)算環(huán)境下,例如,由Google提出的MapReduce (以下簡稱MR)并行計(jì)算編程模型中,作業(yè)所需處理的數(shù)據(jù)已經(jīng)被劃分為多個數(shù)據(jù)塊,并以數(shù)據(jù)塊為單位存儲在一個或多個服務(wù)器節(jié)點(diǎn)上??蛻籼峤蛔鳂I(yè)后,該作業(yè)將被劃分成與數(shù)據(jù)塊一一對應(yīng)的任務(wù),這些任務(wù)將被分配到不同的服務(wù)器節(jié)點(diǎn)上并行執(zhí)行。如果執(zhí)行任務(wù)的服務(wù)器節(jié)點(diǎn)上未存儲該任務(wù)對應(yīng)的數(shù)據(jù)塊,則需要通過網(wǎng)絡(luò)數(shù)據(jù)傳輸,將數(shù)據(jù)塊從存儲它的服務(wù)器節(jié)點(diǎn)傳輸至該執(zhí)行任務(wù)的服務(wù)器節(jié)點(diǎn)。因此,如何減少服務(wù)器節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸開銷,提升數(shù)據(jù)處理的性能,成為目前研究的熱門。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例的目的在于提供數(shù)據(jù)并行處理方法、系統(tǒng)及負(fù)載均衡調(diào)度器,以解決上述問題。為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:一種數(shù)據(jù)并行處理方法,基于服務(wù)器集群,所述服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力;所述方法包括:將用戶通過 客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集所述作業(yè)的數(shù)據(jù)分布信息;所述作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,并分別存儲于所述服務(wù)器集群中的服務(wù)器上,每一所述數(shù)據(jù)塊對應(yīng)一個數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)分布信息包括所述作業(yè)對應(yīng)的數(shù)據(jù)塊的分布信息;當(dāng)所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)所述數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配所述作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序;對所述作業(yè)等待隊(duì)列中的作業(yè)按所述最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空;按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處理任務(wù);所述按照計(jì)算本地化策略分配包括:針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù)塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。一種數(shù)據(jù)并行處理系統(tǒng),包括服務(wù)器集群和負(fù)載均衡調(diào)度器;
所述服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力;所述負(fù)載均衡調(diào)度器包括:預(yù)處理單元,用于將用戶通過客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集所述作業(yè)的數(shù)據(jù)分布信息;所述作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,并分別存儲于所述服務(wù)器集群中的服務(wù)器上,每一所述數(shù)據(jù)塊對應(yīng)一個數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)分布信息包括所述作業(yè)對應(yīng)的數(shù)據(jù)塊的分布信息;預(yù)測單元,用于當(dāng)所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)所述數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配所述作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序;作業(yè)調(diào)度單元,用于對所述作業(yè)等待隊(duì)列中的作業(yè)按所述最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度重新排序后的作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空;第一任務(wù)調(diào)度單元,用于按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處理任務(wù);所述按照計(jì)算本地化策略分配包括:針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù)塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。一種負(fù)載均衡調(diào)度器,與服務(wù)器集群相配合,所述服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力;所述負(fù)載均衡調(diào)度器包括:預(yù)處理單元,用于將用戶通過客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集所述作業(yè)的數(shù)據(jù)分布信息;所述作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,并分別存儲于所述服務(wù)器集群中的服務(wù)器上,每一所述數(shù)據(jù)塊對應(yīng)一個數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)分布信息包括所述作業(yè)對應(yīng)的數(shù)據(jù)塊的分布信息;預(yù)測單元,用于當(dāng)所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)所述數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配所述作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序;作業(yè)調(diào)度單元,用于對所述作業(yè)等待隊(duì)列中的作業(yè)按所述最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度重新排序后的作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空;第一任務(wù)調(diào)度單元,用于按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處理任務(wù);所述按照計(jì)算本地化策略分配包括:針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù)塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。可見,在本發(fā)明實(shí)施例中,服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力。在此基礎(chǔ)上,在作業(yè)調(diào)度層面上,本發(fā)明實(shí)施例按照計(jì)算本地化策略預(yù)測不同執(zhí)行順序下的系統(tǒng)總體負(fù)載均衡狀態(tài),選擇出可令系統(tǒng)總體負(fù)載均衡狀態(tài)最優(yōu)的執(zhí)行順序,并按此順序調(diào)度作業(yè)。在任 務(wù)調(diào)度層面,本發(fā)明實(shí)施例按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè)。由于計(jì)算本地化策略是將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上,這樣,在處理任務(wù)時,同一服務(wù)器既作為存儲數(shù)據(jù)塊的服務(wù)器節(jié)點(diǎn)又作為執(zhí)行任務(wù)的服務(wù)器節(jié)點(diǎn),減少了服務(wù)器節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸,提升了數(shù)據(jù)處理的性能。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的基于MR的數(shù)據(jù)處理示意圖;圖2為本發(fā)明實(shí)施例提供的數(shù)據(jù)并行處理方法流程圖;圖3為本發(fā)明實(shí)施例提供的系統(tǒng)負(fù)載均衡狀態(tài)示意圖;圖4為本發(fā)明實(shí)施例提供的全局搜索樹示意圖;圖5a和圖5b為本發(fā)明實(shí)施例提供的啟發(fā)式搜索策略流程示意圖;圖6為本發(fā)明實(shí)施例提供的數(shù)據(jù)并行處理系統(tǒng)示意圖;圖7為本發(fā)明實(shí)施例提供的負(fù)載均衡調(diào)度器結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了引用和清楚起見,下文中使用的技術(shù)名詞、簡寫或縮寫總結(jié)解釋如下:計(jì)算本地化:計(jì)算本地化是指在分布式計(jì)算環(huán)境下,通過計(jì)算邏輯的分配,使得處理數(shù)據(jù)的計(jì)算服務(wù)器(計(jì)算 節(jié)點(diǎn))和存儲這些數(shù)據(jù)的存儲服務(wù)器節(jié)點(diǎn)(存儲節(jié)點(diǎn))相同,以此減少計(jì)算節(jié)點(diǎn)和存儲節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸開銷,提升數(shù)據(jù)處理的性能;數(shù)據(jù)本地性:指的是計(jì)算本地化的可滿足程度,即計(jì)算所需的數(shù)據(jù)是否能夠不通過網(wǎng)絡(luò)傳輸,而直接在計(jì)算所在節(jié)點(diǎn)獲取的能力。一般在大規(guī)模分布式計(jì)算環(huán)境中,用本地化率(完全本地化的計(jì)算所占百分比)來表示整體本地化程度;負(fù)載均衡:指的是在分布式計(jì)算環(huán)境下,將負(fù)載均衡地分派到兩到多個節(jié)點(diǎn)(服務(wù)器)上,避免局部負(fù)載過重,以便獲得更高的資源利用率,提高數(shù)據(jù)處理性能。負(fù)載可以是計(jì)算負(fù)載、i/o負(fù)載、網(wǎng)絡(luò)負(fù)載等等。下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。MapReduce (以下簡稱MR)是由Google提出的并行計(jì)算編程模型。它的基本思想是兩個函數(shù)(Map函數(shù)和Reduce函數(shù)),任何復(fù)雜的數(shù)據(jù)處理請求(作業(yè))在大規(guī)模集群上的并行計(jì)算都被高度抽象到了這兩個函數(shù)。MR模型不但在實(shí)際應(yīng)用中發(fā)揮了極好的效果,而且易學(xué)易用,受到大型網(wǎng)絡(luò)IT企業(yè)的青睞。MR模型適合處理數(shù)據(jù)密集型計(jì)算。MR作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊(數(shù)據(jù)塊之間不相關(guān),可以獨(dú)立地進(jìn)行計(jì)算),這些數(shù)據(jù)塊被存儲在一個或多個服務(wù)器節(jié)點(diǎn)上。圖1為基于MR的數(shù)據(jù)處理示意圖,假設(shè)處理該作業(yè)所需數(shù)據(jù)為集合S,該集合被劃分為η個互不相交的數(shù)據(jù)子集(數(shù)據(jù)塊)SI Sn,即S=Sl U S2…U Sn。每一個計(jì)算請求(作業(yè))被分解為大量的map計(jì)算(map任務(wù))和少量reduce計(jì)算(reduce任務(wù)),map計(jì)算與
數(shù)據(jù)塊(SI Sn)--對應(yīng),reduce針對map的計(jì)算結(jié)果(MR計(jì)算的中間結(jié)果)各自獨(dú)立
計(jì)算,并將結(jié)果保存到用戶指定位置。其中,map任務(wù)需要分配到不同的計(jì)算節(jié)點(diǎn)上并行執(zhí)行。因此,在MR計(jì)算環(huán)境下,核心部分是map任務(wù)的調(diào)度。其他類似的分布式計(jì)算環(huán)境下,也需要調(diào)度任務(wù)。在分布式計(jì)算環(huán)境下,存在如下問題:假定,服務(wù)器節(jié)點(diǎn)A執(zhí)行任務(wù)jobl,但未存儲jobl對應(yīng)的數(shù)據(jù)塊,則需要通過網(wǎng)絡(luò)數(shù)據(jù)傳輸,將該數(shù)據(jù)塊從存儲它的服務(wù)器節(jié)點(diǎn)傳輸至服務(wù)器節(jié)點(diǎn)A。如何減少計(jì)算過程中服務(wù)器節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸開銷,提升數(shù)據(jù)處理的性能,成為目前研究的熱門。實(shí)際上,已有任務(wù)調(diào)度方式都是將滿足特定需求(比如負(fù)載均衡)作為第一目標(biāo),將提高數(shù)據(jù)本地性作為第二目標(biāo),導(dǎo)致實(shí)際運(yùn)行情況下本地化率不高。而本發(fā)明所提供技術(shù)方案則將提高數(shù)據(jù)本地性作為第一目標(biāo),并且通過新的思路解決數(shù)據(jù)本地性和系統(tǒng)負(fù)載均衡相沖突的問題,在提高數(shù)據(jù)本地性的同時,優(yōu)化系統(tǒng)總體的負(fù)載均衡,降低了計(jì)算過程中的網(wǎng)絡(luò)IO開銷,增加系統(tǒng)的吞吐率和減少單個作業(yè)的執(zhí)行時間。另外,目前的MR調(diào)度方式?jīng)]有區(qū)分作業(yè)調(diào)度和任務(wù)調(diào)度,這是因?yàn)镸R計(jì)算最初主要用于批量數(shù)據(jù)處理,一般只有少數(shù)幾個作業(yè)在執(zhí)行,作業(yè)之間干擾較小,不需要區(qū)分作業(yè)調(diào)度和任務(wù)調(diào)度。但在有大量作業(yè)并發(fā)執(zhí)行的情況下,如果不區(qū)分作業(yè)級別和任務(wù)級別的調(diào)度,將加大調(diào)度方式的優(yōu)化難度。而本發(fā)明所提供技術(shù)方案的核心是作業(yè)級別調(diào)度和任務(wù)級別調(diào)度:在作業(yè)級別調(diào)度中,通過負(fù)載均衡分析預(yù)測出全局負(fù)載均衡狀況最好的執(zhí)行順序;在任務(wù)調(diào)度級別中,當(dāng)作業(yè)進(jìn)入執(zhí)行狀態(tài)后,會被劃分成若干Map任務(wù)和Reduce任務(wù),依據(jù)本地性原則將map任務(wù)分布到其數(shù)據(jù)所在服務(wù)器上運(yùn)行。
下面將具體介紹。本發(fā)明所提供技術(shù)方案基于服務(wù)器集群,其實(shí)施的前提是服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力,這樣,任一服務(wù)器可同時作為計(jì)算節(jié)點(diǎn)和存儲節(jié)點(diǎn)?;蛘哒f,本發(fā)明所提供的技術(shù)方案,是基于每一個服務(wù)器包含獨(dú)立的存儲和計(jì)算能力,集群中沒有共享存儲的假設(shè)。目前的大型服務(wù)提供商以及數(shù)據(jù)中心都是采用這種模式,即由大量中低端服務(wù)器通過互聯(lián)網(wǎng)連接而成的大規(guī)模集群計(jì)算環(huán)境,因此,該假設(shè)是合理的。請參見圖2,本發(fā)明要求保護(hù)的數(shù)據(jù)并行處理方法至少包括如下步驟:S1、將用戶通過客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集作業(yè)的數(shù)據(jù)分布信肩、O需要說明的是,用戶提交的作業(yè)所需處理的數(shù)據(jù),被劃分為多個(至少兩個)數(shù)據(jù)塊(每一數(shù)據(jù)塊對應(yīng)一個map任務(wù)),并存儲于服務(wù)器集群中的服務(wù)器上。數(shù)據(jù)分布信息則包括數(shù)據(jù)塊的分布信息。S2、當(dāng)服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序。第一閾值大小的設(shè)置不在本方案討論之內(nèi),本領(lǐng)域技術(shù)人員可以基于其它技術(shù)或者經(jīng)驗(yàn)進(jìn)行設(shè)置。在MR技術(shù)中,第一閾值可由用戶指定。第一閾值實(shí)際上代表了服務(wù)器集群可以承受的最大并行執(zhí)行的作業(yè)數(shù),如果沒有達(dá)到第一閾值,表示服務(wù)器集群還有能力執(zhí)行更多的作業(yè)。S3、對作業(yè)等待隊(duì)列中的作業(yè)按最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度重新排序后的作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空。調(diào)度多少個作業(yè)進(jìn)入執(zhí)行狀態(tài),需要由上述第一閾值以及正處于執(zhí)行狀態(tài)的作業(yè)
數(shù)確定。舉例來講,服務(wù)器集群中有4臺服務(wù)器,每臺服務(wù)器最多可執(zhí)行20個作業(yè),可將第一閾值設(shè)置為80。如果用戶提交了 100個作業(yè),則有20個作業(yè)需要放入作業(yè)等待隊(duì)列。
假設(shè),服務(wù)器集群完成了 4個作業(yè),這樣,服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)為76小于80,此時,將進(jìn)行預(yù)測以獲取最優(yōu)執(zhí)行順序(對應(yīng)步驟S2 )。之后,對作業(yè)等待隊(duì)列中的20個作業(yè)按最優(yōu)執(zhí)行順序進(jìn)行重新排序,重新排序后,調(diào)度作業(yè)等待隊(duì)列中的前4個作業(yè)進(jìn)入執(zhí)行狀態(tài)(對應(yīng)步驟S3)。S4、按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處
理任務(wù)。需要說明的是,每當(dāng)服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,都需要重新執(zhí)行步驟S2-S4。上述步驟S2和S4中的“按照計(jì)算本地化策略分配”具體可包括:針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù) 塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。也即,只看map任務(wù)對應(yīng)的數(shù)據(jù)塊存儲在哪個服務(wù)器上,就將該map任務(wù)調(diào)度到該服務(wù)器上執(zhí)行。舉例來講,服務(wù)器集群中有4臺服務(wù)器Fl至F4。作業(yè)Xl對應(yīng)的數(shù)據(jù)被劃分為2個數(shù)據(jù)塊,并分別存于Fl和F2上,作業(yè)X2對應(yīng)的數(shù)據(jù)被劃分為3個數(shù)據(jù)塊,被分別存于F1、F2、F4中。在本申請中,按照計(jì)算本地化策略分配時,會將作業(yè)Xl劃分為兩個map任務(wù),并將這兩個map任務(wù)分別分配至Fl和F2上;將作業(yè)X2劃分為三個map任務(wù),并將這三個map任務(wù)分別分配至F1、F2、F4上。服務(wù)器集群中的每一服務(wù)器上維護(hù)有本地任務(wù)隊(duì)列(也可叫任務(wù)等待隊(duì)列),分配過來的map任務(wù),可放置于本地任務(wù)隊(duì)列中,服務(wù)器按照先進(jìn)先出的原則執(zhí)行本地任務(wù)隊(duì)列中的任務(wù)。更具體的,由于某一 map任務(wù)所需要的數(shù)據(jù)塊已經(jīng)存儲在某一服務(wù)器中了,因此,只需要將該map任務(wù)的計(jì)算邏輯調(diào)度到該服務(wù)器上執(zhí)行即可。需要說明的是,一次map計(jì)算為一個任務(wù),計(jì)算邏輯指的是map函數(shù),即計(jì)算方法。同一個作業(yè)的每一個數(shù)據(jù)塊上的計(jì)算邏輯相同,不同的作業(yè)的計(jì)算邏輯可能不同,也可能相同。此外,在特殊情況下,如果服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值、但作業(yè)等待隊(duì)列中只有一個作業(yè),則不需要執(zhí)行上述步驟S2和S3,直接調(diào)度作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),之后執(zhí)行步驟S4??梢姡诒景l(fā)明實(shí)施例中,服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力。在此基礎(chǔ)上,在作業(yè)調(diào)度層面上,本發(fā)明實(shí)施例按照計(jì)算本地化策略預(yù)測不同執(zhí)行順序下的系統(tǒng)總體負(fù)載均衡狀態(tài),選擇出可令系統(tǒng)總體負(fù)載均衡狀態(tài)最優(yōu)(負(fù)載最小、且負(fù)載最均衡)的執(zhí)行順序,并按此順序調(diào)度作業(yè)。在任務(wù)調(diào)度層面,本發(fā)明實(shí)施例按照計(jì)算本地化策略分配任務(wù),令每一個Map任務(wù)都調(diào)度到該任務(wù)所需數(shù)據(jù)所在服務(wù)器上執(zhí)行,從而使得Map任務(wù)的執(zhí)行沒有網(wǎng)絡(luò)數(shù)據(jù)傳輸開銷。減少了服務(wù)器節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸,提升了數(shù)據(jù)處理的性能。在本發(fā)明其他實(shí)施例中,上述方法還可包括:周期性檢查服務(wù)器集群中各服務(wù)器的空閑時間;從任務(wù)數(shù)最多的服務(wù)器上調(diào)度數(shù)據(jù)處理任務(wù)至空閑時間超過第二閾值的服務(wù)器上。更具體的,可將任務(wù)數(shù)最多的服務(wù)器的本地任務(wù)隊(duì)列末尾的數(shù)據(jù)處理任務(wù)調(diào)度至空閑時間超過第二閥值的服務(wù)器上。需要說明的是,簡單的調(diào)度方式是當(dāng)調(diào)度時機(jī)成熟時,分別計(jì)算作業(yè)等待隊(duì)列中每一個作業(yè)進(jìn)入執(zhí)行狀態(tài)后的系統(tǒng)總體負(fù)載均衡狀態(tài),選擇負(fù)載均衡最好的作業(yè),調(diào)度其進(jìn)入執(zhí)行狀態(tài)。該調(diào)度方式計(jì)算簡單,且在初始運(yùn)行時可以取得較好的效果,但會導(dǎo)致負(fù)載均衡狀況不好的作業(yè)慢慢積壓,長時間運(yùn)行后,可能造成系統(tǒng)的負(fù)載極度不均衡,圖3示意了這種情況,圖3中縱坐標(biāo)是負(fù)載方差(由負(fù)載方差可看出負(fù)載不均衡狀態(tài)),橫坐標(biāo)是時間。為了避免圖3的上述情況,本發(fā)明實(shí)施例在進(jìn)行預(yù)測時,不是預(yù)測單個作業(yè)進(jìn)入執(zhí)行狀態(tài)后的系統(tǒng)總體負(fù)載均衡狀態(tài),而是考慮所有作業(yè)如果按照某種執(zhí)行順序進(jìn)入執(zhí)行狀態(tài)后的系統(tǒng)總體負(fù)載均衡狀態(tài),選擇出最優(yōu)的執(zhí)行順序,從而避免圖3所示的系統(tǒng)性能急劇衰減的情況出現(xiàn) 。下面將對作業(yè)調(diào)度進(jìn)行詳細(xì)介紹。在作業(yè)調(diào)度方面,如何進(jìn)行預(yù)測以得到最優(yōu)執(zhí)行順序是關(guān)鍵。在本發(fā)明一個實(shí)施例中,上述步驟S2中“預(yù)測作業(yè)等待隊(duì)列中的作業(yè)在不同執(zhí)行順序下所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序”可包括如下子步驟:一,構(gòu)造全局搜索樹,全局搜索樹包括共享同一根節(jié)點(diǎn)的多條搜索路徑,每一搜索路徑中包括葉節(jié)點(diǎn);根節(jié)點(diǎn)表征服務(wù)器集群當(dāng)前的負(fù)載均衡狀態(tài);葉節(jié)點(diǎn)表征作業(yè)等待隊(duì)列中的作業(yè),不同的搜索路徑表征不同的執(zhí)行順序;以作業(yè)等待隊(duì)列中有3個作業(yè),并且這3個作業(yè)的ID分別是jobl_job3為例,全局搜索樹(參見圖4)可通過下述子步驟構(gòu)造:stepl,構(gòu)造第一層,第一層只有一個根節(jié)點(diǎn)(初始節(jié)點(diǎn)),根節(jié)點(diǎn)以jobO表示。step2,由于系統(tǒng)中有N個(3個)等待的作業(yè),所以下一個進(jìn)入執(zhí)行狀態(tài)的作業(yè)有N種可能的選擇,從而,第二層可以擴(kuò)展N個葉節(jié)點(diǎn),可用作業(yè)ID表示葉節(jié)點(diǎn)。St印3,構(gòu)造第三層,由于構(gòu)造第二層時已經(jīng)選擇了一個作業(yè),所以,基于第二層的每一個節(jié)點(diǎn),可以擴(kuò)展N-1個(2個)節(jié)點(diǎn)形成第三層。Step4,以此類推,直到無法再擴(kuò)展,即可以完成整個全局搜索樹的構(gòu)造。上述全局搜索樹中的每一搜索路徑也可視為作業(yè)執(zhí)行序列,搜索最優(yōu)執(zhí)行順序相當(dāng)于搜索最優(yōu)作業(yè)執(zhí)行序列。本實(shí)施例將尋找最優(yōu)作業(yè)執(zhí)行序列抽象為一個圖搜索數(shù)學(xué)模型,即在如圖4的全局搜索樹中基于某些搜索算法尋找從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的一條最佳路徑,從而獲取到最優(yōu)執(zhí)行順序。二,計(jì)算不同搜索路徑的負(fù)載均衡預(yù)測值(負(fù)載均衡預(yù)測值用于表征系統(tǒng)總體負(fù)載均衡狀態(tài)),將負(fù)載均衡預(yù)測值最小的搜索路徑對應(yīng)的執(zhí)行順序作為最優(yōu)執(zhí)行順序。但需要說明的是,如果有N個等待作業(yè)的話,那么就有ANN種搜索路徑,顯然在每一次調(diào)度時對當(dāng)前等待隊(duì)列中的所有作業(yè)進(jìn)行全局考慮,計(jì)算量會非常大,因此,優(yōu)選的,在本發(fā)明下述實(shí)施例中,采用啟發(fā)式的搜索策略計(jì)算。參見圖5a,啟發(fā)式的搜索策略詳細(xì)內(nèi)容如下:步驟A,將根節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),計(jì)算目標(biāo)節(jié)點(diǎn)的評價值,并將根節(jié)點(diǎn)的評價值作為每一搜索路徑的負(fù)載均衡預(yù)測值; 步驟B,選擇負(fù)載均衡預(yù)測值最小的搜索路徑作為目標(biāo)搜索路徑,將目標(biāo)搜索路徑對應(yīng)的執(zhí)行順序作為目標(biāo)執(zhí)行順序;步驟C判斷目標(biāo)搜索路徑中是否還存在未進(jìn)行負(fù)載均衡預(yù)測值計(jì)算的葉節(jié)點(diǎn);如果否,將目標(biāo)執(zhí)行順序作為最優(yōu)執(zhí)行順序(步驟E);如果是,將目標(biāo)搜索路徑中當(dāng)前目標(biāo)節(jié)點(diǎn)的下一葉節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),計(jì)算目標(biāo)節(jié)點(diǎn)的評價值作為所屬搜索路徑的負(fù)載均衡預(yù)測值(步驟D),返回選擇負(fù)載均衡預(yù)測值最小的搜索路徑作為目標(biāo)搜索路徑的步驟(步驟B)。下面,請參見圖5b,本文將以作業(yè)等待隊(duì)列中有P個(P = 5)作業(yè),這5個作業(yè)的ID分別是jobl-job5為例(P決定了全局搜索樹的層數(shù)或者說是高度,全局搜索樹的層數(shù)或高度為p+l ),對啟發(fā)式的搜索策略進(jìn)行更詳細(xì)的介紹。S501,計(jì)算根節(jié)點(diǎn)的評價值f (O);
S502,在根節(jié)點(diǎn)基礎(chǔ)上,擴(kuò)展P個葉節(jié)點(diǎn),并針對每一個葉節(jié)點(diǎn),計(jì)算每一葉節(jié)點(diǎn)的評價值。需要說明的是,在步驟S502中,全局搜索樹中的所有搜索路徑都分別為目標(biāo)搜索路徑(因?yàn)槊恳凰阉髀窂降膄 (O)都相等),而各搜索路徑中的第I個葉節(jié)點(diǎn)均分別為目標(biāo)節(jié)點(diǎn)。至于具體如何計(jì)算評價值,本文后續(xù)將進(jìn)行詳細(xì)的介紹。S503,在已經(jīng)擴(kuò)展的搜索樹的葉節(jié)點(diǎn)中找到評價值最小的節(jié)點(diǎn),并擴(kuò)展該節(jié)點(diǎn)的下層節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),計(jì)算評價值。假設(shè),在執(zhí)行步驟S502 后,jobO_>jobl_>job3_>job5_>job4_>job2 這一作業(yè)執(zhí)行序列中jobl對應(yīng)的評價值最小。則擴(kuò)展jobl對應(yīng)的葉節(jié)點(diǎn)的下層節(jié)點(diǎn)。擴(kuò)展的下一層葉節(jié)點(diǎn)分別是job2、job3、job4、job5對應(yīng)的葉節(jié)點(diǎn),并分別計(jì)算各葉節(jié)點(diǎn)的評價值。S504,循環(huán)直到擴(kuò)展到全局搜索樹的第P+1層,即找到了最優(yōu)作業(yè)執(zhí)行序列,則搜索過程結(jié)束。下面將介紹如何計(jì)算評價值。假設(shè)在某一目標(biāo)搜索路徑中,目標(biāo)節(jié)點(diǎn)是第M層節(jié)點(diǎn)。針對每一目標(biāo)節(jié)點(diǎn),都可用如下函數(shù)計(jì)算其評價值f (M):f (M) =g (M) +h (M)(公式一)其中:
g (M)表示目標(biāo)節(jié)點(diǎn)對應(yīng)的作業(yè)執(zhí)行時,從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)所涉及的所有作業(yè)的負(fù)載均衡值的和(包括初始狀態(tài)的負(fù)載均衡值)。g(M)可用下式予以計(jì)算:
權(quán)利要求
1.一種數(shù)據(jù)并行處理方法,其特征在于,基于服務(wù)器集群,所述服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力; 所述方法包括: 將用戶通過客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集所述作業(yè)的數(shù)據(jù)分布信息;所述作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,并分別存儲于所述服務(wù)器集群中的服務(wù)器上,每一所述數(shù)據(jù)塊對應(yīng)一個數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)分布信息包括所述作業(yè)對應(yīng)的數(shù)據(jù)塊的分布信息; 當(dāng)所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)所述數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配所述作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序; 對所述作業(yè)等待隊(duì)列中的作業(yè)按所述最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空; 按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處理任務(wù); 所述按照計(jì)算本地化策略分配包括: 針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù)塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。
2.如權(quán)利要求1所述的方法,其特征在于,還包括: 周期性檢查所述服務(wù)器集群中各服務(wù)器的空閑時間; 從任務(wù)數(shù)最多的服務(wù)器上調(diào)度數(shù)據(jù)處理任務(wù)至空閑時間超過第二閾值的服務(wù)器上。
3.如權(quán)利要求2所述的方法,其特征在于: 所述預(yù)測所述作業(yè)等待隊(duì)列中的作業(yè)在不同執(zhí)行順序下所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序包括: 構(gòu)造全局搜索樹,所述全局搜索樹包括共享同一根節(jié)點(diǎn)的多條搜索路徑,每一搜索路徑中包括葉節(jié)點(diǎn);所述根節(jié)點(diǎn)表征服務(wù)器集群當(dāng)前的負(fù)載均衡狀態(tài);所述葉節(jié)點(diǎn)表征所述作業(yè)等待隊(duì)列中的作業(yè),不同的搜索路徑表征不同的執(zhí)行順序; 計(jì)算不同搜索路徑的負(fù)載均衡預(yù)測值,將負(fù)載均衡預(yù)測值最小的搜索路徑對應(yīng)的執(zhí)行順序作為最優(yōu)執(zhí)行順序;所述負(fù)載均衡預(yù)測值用于表征所述系統(tǒng)總體負(fù)載均衡狀態(tài)。
4.如權(quán)利要求3所述的方法,其特征在于:所述計(jì)算不同搜索路徑的負(fù)載均衡預(yù)測值,將負(fù)載均衡預(yù)測值最小的搜索路徑對應(yīng)的執(zhí)行順序作為最優(yōu)執(zhí)行順序包括: 將根節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),計(jì)算所述目標(biāo)節(jié)點(diǎn)的評價值,并將根節(jié)點(diǎn)的評價值作為每一搜索路徑的負(fù)載均衡預(yù)測值; 選擇負(fù)載均衡預(yù)測值最小的搜索路徑作為目標(biāo)搜索路徑,將目標(biāo)搜索路徑對應(yīng)的執(zhí)行順序作為目標(biāo)執(zhí)行順序; 判斷所述目標(biāo)搜索路徑中是否還存在未進(jìn)行負(fù)載均衡預(yù)測值計(jì)算的葉節(jié)點(diǎn);如果否,將所述目標(biāo)執(zhí)行順序作為最優(yōu)執(zhí)行順序;如果是,將所述目標(biāo)搜索路徑中當(dāng)前目標(biāo)節(jié)點(diǎn)的下一葉節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),計(jì)算所述目標(biāo)節(jié)點(diǎn)的評價值作為所屬搜索路徑的負(fù)載均衡預(yù)測值,并返回所述選擇負(fù)載均衡預(yù)測值最小的搜索路徑作為目標(biāo)搜索路徑的步驟。
5.如權(quán)利要求4所述的方法,其特征在于:所述作業(yè)等待隊(duì)列中的作業(yè)數(shù)量為P個,所述P為正整數(shù); 在所述目標(biāo)搜索路徑中,所述目標(biāo)節(jié)點(diǎn)是第M層節(jié)點(diǎn),M不小于1,不大于P+1 ; 所述計(jì)算所述目標(biāo)節(jié)點(diǎn)的評價值包括: 使用公式f (M) =g (M)+h (M)計(jì)算所述目標(biāo)節(jié)點(diǎn)的評價值f (M); 其中:
6.如權(quán)利要求5所述的方法,其特征在于,所述負(fù)載用任務(wù)數(shù)表征。
7.一種數(shù)據(jù)并行處理系統(tǒng),其特征在于,包括服務(wù)器集群和負(fù)載均衡調(diào)度器; 所述服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力; 所述負(fù)載均衡調(diào)度器包括: 預(yù)處理單元,用于將用戶通過客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集所述作業(yè)的數(shù)據(jù)分布信息;所述作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,并分別存儲于所述服務(wù)器集群中的服務(wù)器上,每一所述數(shù)據(jù)塊對應(yīng)一個數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)分布信息包括所述作業(yè)對應(yīng)的數(shù)據(jù)塊的分布信息; 預(yù)測單元,用于當(dāng)所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)所述數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配所述作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序; 作業(yè)調(diào)度單元,用于對所述作業(yè)等待隊(duì)列中的作業(yè)按所述最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度重新排序后的作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空; 第一任務(wù)調(diào)度單元,用于按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處理任務(wù); 所述按照計(jì)算本地化策略分配包括: 針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù)塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。
8.一種負(fù)載均衡調(diào)度器,其特征在于,與服務(wù)器集群相配合,所述服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力;所述負(fù)載均衡調(diào)度器包括: 預(yù)處理單元,用于將用戶通過客戶端提交的作業(yè)放入作業(yè)等待隊(duì)列,并收集所述作業(yè)的數(shù)據(jù)分布信息;所述作業(yè)所需處理的數(shù)據(jù)被劃分為多個數(shù)據(jù)塊,并分別存儲于所述服務(wù)器集群中的服務(wù)器上,每一所述數(shù)據(jù)塊對應(yīng)一個數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)分布信息包括所述作業(yè)對應(yīng)的數(shù)據(jù)塊的分布信息; 預(yù)測單元,用于當(dāng)所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)小于第一閾值時,根據(jù)所述數(shù)據(jù)分布信息,預(yù)測在不同執(zhí)行順序下按照計(jì)算本地化策略分配所述作業(yè)等待隊(duì)列中的作業(yè)所導(dǎo)致的系統(tǒng)總體負(fù)載均衡狀態(tài),獲取最優(yōu)執(zhí)行順序; 作業(yè)調(diào)度單元,用于對所述作業(yè)等待隊(duì)列中的作業(yè)按所述最優(yōu)執(zhí)行順序進(jìn)行重新排序,并按照重新排序后的順序依次調(diào)度重新排序后的作業(yè)等待隊(duì)列中的作業(yè)進(jìn)入執(zhí)行狀態(tài),直至所述服務(wù)器集群正在執(zhí)行的作業(yè)數(shù)達(dá)到第一閾值或者等待作業(yè)隊(duì)列為空; 第一任務(wù)調(diào)度單元,用于按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè),以便服務(wù)器執(zhí)行數(shù)據(jù)處理任務(wù); 所述按照計(jì)算本地化策略分配包括: 針對作業(yè)所需處理的數(shù)據(jù)的每一個數(shù)據(jù)塊創(chuàng)建一個數(shù)據(jù)處理任務(wù),并將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上。
全文摘要
本發(fā)明實(shí)施例公開了數(shù)據(jù)并行處理方法、系統(tǒng)及負(fù)載均衡調(diào)度器,在本發(fā)明實(shí)施例中,服務(wù)器集群中的任一服務(wù)器具有執(zhí)行任務(wù)和存儲數(shù)據(jù)的能力。在此基礎(chǔ)上,在作業(yè)調(diào)度層面上,本發(fā)明實(shí)施例按照計(jì)算本地化策略預(yù)測不同執(zhí)行順序下的系統(tǒng)總體負(fù)載均衡狀態(tài),選擇出可令系統(tǒng)總體負(fù)載均衡狀態(tài)最優(yōu)的執(zhí)行順序,并按此順序調(diào)度作業(yè)。在任務(wù)調(diào)度層面,本發(fā)明實(shí)施例按照計(jì)算本地化策略分配每一進(jìn)入執(zhí)行狀態(tài)的作業(yè)。由于計(jì)算本地化策略是將每一數(shù)據(jù)處理任務(wù)分配至存儲其對應(yīng)的數(shù)據(jù)塊的服務(wù)器上,這樣,在處理任務(wù)時,同一服務(wù)器既作為存儲數(shù)據(jù)塊的服務(wù)器節(jié)點(diǎn)又作為執(zhí)行任務(wù)的服務(wù)器節(jié)點(diǎn),減少了服務(wù)器節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸,提升了數(shù)據(jù)處理的性能。
文檔編號G06F9/38GK103226467SQ201310195179
公開日2013年7月31日 申請日期2013年5月23日 優(yōu)先權(quán)日2013年5月23日
發(fā)明者楊樹強(qiáng), 華中杰, 賈焰, 尹洪, 趙輝, 李愛平, 陳志坤, 金松昌, 周斌, 韓偉紅, 韓毅, 舒琦 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)