專利名稱:一種任務(wù)調(diào)度方法及其系統(tǒng)和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域的數(shù)據(jù)處理技術(shù),尤其涉及一種任務(wù)調(diào)度方法及其系統(tǒng)和設(shè) 備。
背景技術(shù):
MapReduce是一種分布式的用于處理海量數(shù)據(jù)集的并行編程系統(tǒng),可以自動將 MapReduce數(shù)據(jù)處理任務(wù)并行化為多個子任務(wù),并調(diào)度到一個由普通節(jié)點(如PC)構(gòu)建的集 群上并發(fā)執(zhí)行;同時,系統(tǒng)自動解決對節(jié)點失效、任務(wù)失效及節(jié)點間數(shù)據(jù)交換等問題,使得 MapReduce應(yīng)用可以不必關(guān)心此問題,而通過定義相應(yīng)的Map (映射)和Reduce (化簡)函 數(shù)即可實現(xiàn)分布式數(shù)據(jù)處理的功能。MapReduce系統(tǒng)主要由三個模塊組成,其系統(tǒng)架構(gòu)如圖1所示??蛻舳?Client) 用于將用戶布置的并行處理作業(yè)(Job)提交至主節(jié)點(Master) ;Master自動將客戶端提交 的Job分解為多個具有相同處理功能(但輸入數(shù)據(jù)可能不同)的Map任務(wù)和多個具有相同 處理功能(但處理的數(shù)據(jù)可能不同)的Reduce任務(wù),其中,Map任務(wù)的輸出數(shù)據(jù)作為Reduce 任務(wù)的輸入數(shù)據(jù),并將任務(wù)調(diào)度到工作節(jié)點(Worker) ;Worker向Master請求任務(wù)并執(zhí)行請 求到的任務(wù)。由于MapReduce系統(tǒng)一般構(gòu)建在大規(guī)模計算資源上(如千級別節(jié)點規(guī)模的網(wǎng)絡(luò)系 統(tǒng)),Master無法獲取所有Worker的負載信息并進行任務(wù)的調(diào)度,所以,在MapReduce系統(tǒng) 中,由Worker根據(jù)事先部署的配置文件,主動向Master請求任務(wù)。Master根據(jù)隊列配置 和作業(yè)優(yōu)先級等信息選擇任務(wù)并調(diào)度給Worker執(zhí)行。其具體調(diào)度流程可以如圖2所示,包 括步驟201、Worker觸發(fā)心跳消息發(fā)送流程,觸發(fā)條件可以是周期性設(shè)定或事件觸 發(fā),如當(dāng)某個任務(wù)執(zhí)行完畢系統(tǒng)有空余資源時,可以主動觸發(fā)發(fā)送心跳消息;步驟202、Worker檢查預(yù)先部署的配置文件,預(yù)先部署的配置文件中記錄有 Worker可以執(zhí)行的最大任務(wù)數(shù)配額;步驟203、Worker根據(jù)配置文件,判斷是否請求新的任務(wù),當(dāng)Worker執(zhí)行的任務(wù)數(shù) 未達配額時,將向Master請求執(zhí)行新的任務(wù);步驟204、Worker根據(jù)判斷結(jié)果向Master發(fā)送心跳消息,其中帶有“是否請求任 務(wù)”的標(biāo)記。當(dāng)Worker請求執(zhí)行新的任務(wù)時,該標(biāo)記被設(shè)置為true ;否則該標(biāo)記被設(shè)置為 false。步驟205、Master接收到Worker發(fā)送的心跳消息后,檢查“是否請求任務(wù)”的標(biāo)記, 當(dāng)該標(biāo)記為true時,Master選擇將某個任務(wù)調(diào)度給該Worker。Master上的調(diào)度任務(wù)的策 略可配置,如具備將任務(wù)調(diào)度至其所處理數(shù)據(jù)較近的節(jié)點、失敗任務(wù)的重新調(diào)度、瓶頸任務(wù) 的冗余調(diào)度等等。步驟206、Master向Worker返回心跳響應(yīng),并在Worker請求任務(wù)時,向Worker返 回任務(wù)。
發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)MapReduce系統(tǒng)現(xiàn)有的任務(wù)調(diào)度機制存在以 下問題(I)Worker完全根據(jù)預(yù)先部署的配置信息請求執(zhí)行新任務(wù),隨著節(jié)點規(guī)模的不斷 增加和設(shè)備的更新?lián)Q代,以及不同MapReduce作業(yè)所需資源的異構(gòu)性,僅僅依靠預(yù)先部署 的配置文件進行任務(wù)調(diào)度會造成以下問題當(dāng)Worker的硬件配置較低或其上運行的任務(wù)占用較多的資源,如正在運行的任 務(wù)占用了大量的系統(tǒng)資源(CPU或/和內(nèi)存等)時,如果Worker尚未達到其預(yù)先配置的最 大任務(wù)配額,其仍然會向Master請求執(zhí)行新任務(wù),在這種情況下,不僅可能出現(xiàn)新任務(wù)由 于內(nèi)存不足不能正常執(zhí)行的情況,而且還會影響到正在執(zhí)行的任務(wù),甚至?xí)?dǎo)致Worker發(fā) 生故障;當(dāng)Worker的硬件配置較高或其上運行的任務(wù)占用較少的資源時,如果Worker已 經(jīng)達到其預(yù)先配置的最大任務(wù)配額,其將不再向Master請求執(zhí)行新任務(wù),在這種情況下, 會造成Worker資源的浪費。(2)對于Master,當(dāng)Master接收到來自Worker的任務(wù)請求時,根據(jù)自身策略將某 個任務(wù)調(diào)度給該Worker。由于MapReduce系統(tǒng)中的作業(yè)特性不同,其任務(wù)處理所需的資源 量有較大差異,容易導(dǎo)致Master分配給Worker的任務(wù)所需資源量超出該Worker的可以資 源量,導(dǎo)致任務(wù)執(zhí)行失敗,同時會影響在該Worker上運行的其他任務(wù)??偠灾?,當(dāng)前MapReduce系統(tǒng)的任務(wù)調(diào)度機制中,一方面,Worker僅僅依賴預(yù) 先部署的配置信息進行調(diào)度,從而在節(jié)點配置和任務(wù)類型不同時造成Worker的過載或負 載不足造成資源浪費;另一方面,Master無法將任務(wù)調(diào)度至負載合適的Worker,從而導(dǎo)致 Worker的過載或負載不足,降低了 MapReduce系統(tǒng)的運行效率。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種任務(wù)調(diào)度方法及其系統(tǒng)和設(shè)備,用以解決現(xiàn)有數(shù)據(jù)處理 系統(tǒng)的任務(wù)調(diào)度機制中因未考慮工作節(jié)點負載所導(dǎo)致的工作節(jié)點過載或資源利用率低的 問題。本發(fā)明實施例提供的任務(wù)調(diào)度方法,應(yīng)用于設(shè)置有主節(jié)點和多個工作節(jié)點的數(shù)據(jù) 處理系統(tǒng),其中,主節(jié)點用于任務(wù)調(diào)度,工作節(jié)點用于執(zhí)行任務(wù),該方法包括如下步驟工作節(jié)點向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶該工作節(jié)點的可用資源量以及 該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量;所述主節(jié)點根據(jù)各工作節(jié)點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量, 確定該主節(jié)點上各類任務(wù)的資源需求量,并根據(jù)確定出的各類任務(wù)的資源需求量以及發(fā)送 所述請求的工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。本發(fā)明實施例提供的數(shù)據(jù)處理系統(tǒng),包括主節(jié)點設(shè)備和多個工作節(jié)點設(shè)備;所述工作節(jié)點設(shè)備,用于向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶該工作節(jié)點的 可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量信息;所述主節(jié)點設(shè)備,用于根據(jù)各工作節(jié)點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資 源使用量,確定該主節(jié)點上各類任務(wù)的資源需求量,并根據(jù)確定出的各類任務(wù)的資源需求 量以及發(fā)送所述請求的工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。
本發(fā)明實施例提供的主節(jié)點設(shè)備,應(yīng)用于設(shè)置有主節(jié)點設(shè)備和多個工作節(jié)點設(shè)備 的數(shù)據(jù)處理系統(tǒng),其中,工作節(jié)點設(shè)備用于執(zhí)行主節(jié)點設(shè)備分配的任務(wù),所述主節(jié)點設(shè)備包 括任務(wù)信息統(tǒng)計模塊,用于在接收到工作節(jié)點發(fā)送的獲取任務(wù)的請求后,根據(jù)各工 作節(jié)點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量,確定該主節(jié)點上各類任務(wù)的資 源需求量;任務(wù)調(diào)度模塊,用于根據(jù)所述任務(wù)信息統(tǒng)計模塊確定出的各類任務(wù)的資源需求 量,以及接收到的請求中所攜帶的所述工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。本發(fā)明的上述實施例中,工作節(jié)點向主節(jié)點發(fā)送自身的可用資源量和其上執(zhí)行的 各任務(wù)各自的資源使用量,使主節(jié)點在為該工作節(jié)點進行任務(wù)調(diào)度時,能夠根據(jù)各工作節(jié) 點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量,預(yù)算出該主節(jié)點上各類任務(wù)的資源 需求量,從而可根據(jù)各類任務(wù)的資源需求量以及發(fā)送請求的工作節(jié)點的可用資源量,為工 作節(jié)點進行任務(wù)調(diào)度。由于在任務(wù)調(diào)度時引入了工作節(jié)點負載以及任務(wù)需求量作為任務(wù)調(diào) 度依據(jù),因此可以根據(jù)工作節(jié)點實際負載來分配資源需求量相適應(yīng)的任務(wù),從而一方面可 以避免工作節(jié)點過載的情況,另一方面可以提高工作節(jié)點的資源利用率,從而提高整個數(shù) 據(jù)處理系統(tǒng)的運行效率。本發(fā)明實施例還提供了一種工作節(jié)點設(shè)備,以實現(xiàn)向主節(jié)點設(shè)備發(fā)送工作節(jié)點的 可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量,作為主節(jié)點設(shè)備進行任務(wù) 調(diào)度的依據(jù)。本發(fā)明實施例提供的工作節(jié)點設(shè)備,應(yīng)用于設(shè)置有主節(jié)點設(shè)備和多個工作節(jié)點設(shè) 備的數(shù)據(jù)處理系統(tǒng),其中,主節(jié)點設(shè)備用于任務(wù)調(diào)度,工作節(jié)點設(shè)備包括任務(wù)執(zhí)行模塊,用 于執(zhí)行主節(jié)點分配的任務(wù),所述工作節(jié)點設(shè)備還包括資源監(jiān)控模塊,用于監(jiān)控工作節(jié)點的可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù) 各自的資源使用量;發(fā)送模塊,用于向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶所述資源監(jiān)控模塊監(jiān)控 到的該工作節(jié)點的可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量。本發(fā)明的上述實施例,通過在向主節(jié)點發(fā)送獲取任務(wù)的請求時,將工作節(jié)點的可 用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量發(fā)送給主節(jié)點設(shè)備,為主節(jié)點 設(shè)備采用任務(wù)的資源需求量和工作節(jié)點的可用資源量為依據(jù)進行任務(wù)調(diào)度提供了保證。
圖1為現(xiàn)有MapReduce系統(tǒng)的架構(gòu)示意圖;圖2為現(xiàn)有MapReduce系統(tǒng)任務(wù)調(diào)度流程示意圖;圖3為本發(fā)明實施例提供的MapIteduce系統(tǒng)中的Worker和Master的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例提供的MapReduce系統(tǒng)任務(wù)調(diào)度流程示意圖。
具體實施例方式針對現(xiàn)有MepReduce系統(tǒng)的任務(wù)調(diào)度機制存在的上述問題,本發(fā)明實施例提出了一種適用于MapReduce系統(tǒng)并基于Worker實際負載的任務(wù)調(diào)度方案。所述任務(wù)調(diào)度方案可以被實現(xiàn)為一種任務(wù)調(diào)度方法,也可以被實現(xiàn)為一種 MapReduce系統(tǒng),以及相關(guān)的設(shè)備;并且,可以被實現(xiàn)為硬件,也可以被實現(xiàn)為軟件,或者被 實現(xiàn)為軟件和硬件的結(jié)合。下面結(jié)合附圖以及具體實施例對本發(fā)明進行詳細描述。本發(fā)明實施例所提供的MapReduce系統(tǒng)的架構(gòu)如圖1所示,但對其中的Worker和 Master分別進行了改進。對于Worker,增加了以下功能Worker能夠根據(jù)自身負載情況或資源使用情況,決定是否向Master請求執(zhí)行新 任務(wù),從而當(dāng)Worker負載較高時,即使其未達到配置文件所規(guī)定的最大任務(wù)配額,仍然不 請求執(zhí)行新的任務(wù),而當(dāng)Worker負載較低時,即使其已達到最大任務(wù)配額,仍然請求執(zhí)行 新任務(wù);Worker向Master請求任務(wù)時,同時向Master匯報自身的可用資源量,以及其上運 行的每個任務(wù)的資源使用量統(tǒng)計信息,作為Master進行任務(wù)調(diào)度的依據(jù)。對于Master,增加了以下功能Master根據(jù)Worker匯報的任務(wù)執(zhí)行所用資源的信息,統(tǒng)計分析每類任務(wù)執(zhí)行所 需的資源量。由于在Mapreduce系統(tǒng)中,同一個Job的所有同類任務(wù),如所有Map任務(wù)和所 有Reduce任務(wù)的輸入數(shù)據(jù)可能不同但處理流程相同,因此同一個作業(yè)的多個Map任務(wù)和多 個Reduce任務(wù)具有類似的資源需求量,所以某個Map任務(wù)或Reduce任務(wù)在某個Worker上 執(zhí)行時所用的資源量能夠反映該類任務(wù)執(zhí)行時所需的資源量。通過Worker向Master匯報 其上執(zhí)行的任務(wù)所用資源量的信息,Master可以逐步精確掌握該類任務(wù)資源需求量,從而 為任務(wù)調(diào)度提供依據(jù);Master接收到Worker獲取新任務(wù)的請求時,根據(jù)該Worker匯報的該Worker自身 的可用資源量,以及Master統(tǒng)計出的各類任務(wù)執(zhí)行所需的資源使用量,為該Worker分配合 適的任務(wù),以使分配給該Worker的任務(wù)的資源需求量盡量不會超過該Worker的負載承受 范圍,并且盡量充分利用該Worker的負載能力。根據(jù)Worker和Master所實現(xiàn)的上述功能,Worker和Master的內(nèi)部模塊結(jié)構(gòu)以 及連接關(guān)系可如圖3所示,圖3僅示出了 Master與一個Worker的結(jié)構(gòu)以及各模塊之間的 連接關(guān)系。如圖3所示,Worker中除了包括收發(fā)模塊301(該模塊用于信號的接收和發(fā)送 處理,如心跳信號的發(fā)送和心跳響應(yīng)信號的接收)、任務(wù)執(zhí)行模塊302(該模塊用于執(zhí)行從 Master請求到的任務(wù))等常規(guī)模塊以外,還包括資源監(jiān)控模塊303和任務(wù)請求決策模塊 304,其中,資源監(jiān)控模塊303是新增模塊,任務(wù)請求決策模塊304可以在原有任務(wù)請求決策 模塊的基礎(chǔ)上進行改進而得到。資源監(jiān)控模塊303 —方面,監(jiān)控Worker本身的負載,包括CPU、Mem(內(nèi)存)或 Disk (磁盤)等的資源量使用情況,如已使用的資源量和剩余可使用的資源量,并可將監(jiān)控 結(jié)果提供給任務(wù)請求決策模塊304 ;另一方面,監(jiān)控Worker上每個任務(wù)所使用的資源量,可 以包括CPU、Mem(內(nèi)存)或Disk(磁盤)等的資源使用情況,并可將每個任務(wù)使用的資源量 以及該Worker的可用資源量,通過收發(fā)模塊301發(fā)送給Master。對于Worker上的每個任 務(wù),可以監(jiān)控并統(tǒng)計在一段時間內(nèi)任務(wù)執(zhí)行時所使用的資源量,較佳地可以將該段時間內(nèi)統(tǒng)計得到的該任務(wù)執(zhí)行時所使用的最大資源量作為該任務(wù)執(zhí)行所使用的資源量進行上報, 這樣可以盡量避免由于對任務(wù)執(zhí)行所使用的資源量統(tǒng)計結(jié)果不準(zhǔn)確(如統(tǒng)計結(jié)果低于該 任務(wù)實際運行所需的最大資源量)而造成的Master將任務(wù)調(diào)度至剩余資源不足的Worker 的情況。任務(wù)請求決策模塊304 排除原有基于預(yù)先配置文件所規(guī)定的任務(wù)配額的任務(wù)請 求決策規(guī)則,而改進為根據(jù)資源監(jiān)控模塊303所監(jiān)控到的節(jié)點負載情況判斷是否請求新的 任務(wù),并可將決策結(jié)果發(fā)送給收發(fā)模塊301以便其生成心跳信號發(fā)送給Master。具體的,如 果判斷滿足特定條件,即節(jié)點負載量不超過設(shè)定的負載量閾值,則向Master請求執(zhí)行新任 務(wù),否則將不請求新任務(wù);該特定條件可以表示為(LCPU < TCPU) && (LMEM < TMEM) && (LDISK < TDISK)其中,L*是Worker當(dāng)前的負載,Τ*是系統(tǒng)預(yù)算設(shè)置的閾值;該條件表明當(dāng)Worker 的CPU使用量不超過系統(tǒng)設(shè)定的CPU使用量閾值,并且Worker的內(nèi)存使用量不超過系統(tǒng)設(shè) 定的內(nèi)存使用量閾值,以及Worker的磁盤使用量不超過系統(tǒng)設(shè)定的磁盤使用量閾值時,則 可以請求執(zhí)行新的任務(wù)。以上條件表達式僅是一個實例,事實上,可以對該表達式進行變形,如減少其中的 判斷因子(如不對磁盤使用量進行判斷),或者增加其他判斷因子,只要能夠通過表達式判 斷出Worker的負載量是否超過系統(tǒng)設(shè)定的負載量閾值,都應(yīng)該在本發(fā)明的保護范圍之內(nèi)。如圖3所示,Master中除了包括收發(fā)模塊310 (該模塊用于信號的接收和發(fā)送處 理,如心跳信號的接收和心跳響應(yīng)信號的發(fā)送)等常規(guī)模塊以外,還包括任務(wù)信息統(tǒng)計模 塊311和任務(wù)調(diào)度模塊312,其中,任務(wù)信息統(tǒng)計模塊311是新增模塊,任務(wù)調(diào)度模塊312可 以在原有任務(wù)調(diào)度模塊的基礎(chǔ)上進行改進而得到。任務(wù)信息統(tǒng)計模塊311 主要用于接收各個Worker發(fā)送的關(guān)于任務(wù)執(zhí)行所用資源 的信息,并進行統(tǒng)計分析,從而得到每類任務(wù)執(zhí)行所需的資源量,作為任務(wù)調(diào)度模塊312進 行任務(wù)調(diào)度的依據(jù);任務(wù)調(diào)度模塊312 與現(xiàn)有任務(wù)調(diào)度模塊進行任務(wù)調(diào)度時,并未考慮每個任務(wù)執(zhí) 行所需的資源量相比,改進后的任務(wù)調(diào)度模塊312,在接收到Worker發(fā)送的獲取任務(wù)的 請求以及Worker發(fā)送的其節(jié)點的可用資源量后,根據(jù)任務(wù)信息統(tǒng)計模塊311所統(tǒng)計出的 每類任務(wù)執(zhí)行所需的資源量,選擇所需資源量小于該Worker可用資源量的任務(wù)分配給該 Worker0需要說明的是,以上Worker和Master的模塊劃分方式僅是各種可能的模塊劃分 方式中的一種,本領(lǐng)域技術(shù)人員應(yīng)該能夠理解,只要使Worker和Master具備上述功能,其 是否劃分為不同的模塊或者如何劃分模塊,都不會對本發(fā)明的保護范圍構(gòu)成限制。下面以圖3所示的Worker和Master的結(jié)構(gòu)為例,并結(jié)合圖4所示的流程,對任務(wù) 調(diào)度過程進行詳細描述。如圖4所示,該流程包括步驟401、Worker觸發(fā)心跳消息發(fā)送流程。可以是周期性觸發(fā)心跳消息的發(fā)送,也 可以是基于事件觸發(fā)心跳消息的發(fā)送,如當(dāng)某個任務(wù)執(zhí)行完畢系統(tǒng)有空余資源時或者節(jié)點 剩余資源量(如DISK)不足時,可以主動觸發(fā)發(fā)送心跳消息。步驟402、Worker中的任務(wù)請求決策模塊304從資源監(jiān)控模塊303讀取當(dāng)前自身 負載量(如CPU/MEM/DISK等)以及其上運行的每個任務(wù)占用資源量的統(tǒng)計信息。
其中,資源監(jiān)控模塊303可以通過統(tǒng)計任務(wù)的每個進程在節(jié)點上使用某類資源 (如CPU)的平均值等方法來計算。資源監(jiān)控模塊303可按照設(shè)定的統(tǒng)計周期進行監(jiān)控和統(tǒng) 計。步驟403、Worker中的任務(wù)請求決策模塊304根據(jù)從資源監(jiān)控模塊303獲取到的 節(jié)點負載量分析判斷是否請求執(zhí)行新任務(wù)。如果節(jié)點負載量未超過系統(tǒng)規(guī)定的負載量閾 值,則請求執(zhí)行新任務(wù),否則不請求執(zhí)行新任務(wù)。步驟404、Worker的收發(fā)模塊301向Master發(fā)送心跳消息,心跳消息中帶有“是 否請求任務(wù)”標(biāo)記、資源監(jiān)控模塊303所監(jiān)控和統(tǒng)計到的Worker節(jié)點可用資源量以及其上 運行的每個任務(wù)占用的資源量信息。當(dāng)Worker的任務(wù)請求決策模塊304確定執(zhí)行新的任 務(wù)時,該標(biāo)記被設(shè)置為true ;否則該標(biāo)記被設(shè)置為false。步驟405、Master的收發(fā)模塊310接收Worker發(fā)送的心跳消息,任務(wù)信息統(tǒng)計 模塊311根據(jù)心跳消息中攜帶的該Worker上運行的每個任務(wù)占用的資源量,并參照其他 Worker發(fā)送的其各自節(jié)點上運行的每個任務(wù)占用的資源量,計算每類任務(wù)執(zhí)行所需的資源量。步驟406、Master的任務(wù)調(diào)度模塊312檢查心跳消息中的“是否請求任務(wù)”標(biāo)記和 Worker的節(jié)點可用資源量。當(dāng)“是否請求任務(wù)”標(biāo)記值為true時,Master根據(jù)任務(wù)信息統(tǒng) 計模塊311計算出的每類任務(wù)執(zhí)行所需的資源量,選取資源需求量不超過Worker節(jié)點可用 資源量的任務(wù)集,并從該任務(wù)集中選擇任務(wù)并調(diào)度給該Worker。步驟407、Master向Worker返回心跳響應(yīng),如果Master為Worker分配了任務(wù),則 將為該Worker分配的任務(wù)返回給Worker。Worker接收到Master返回的任務(wù)后,任務(wù)執(zhí)行模塊302執(zhí)行接收到的任務(wù)。上述流程中,如果步驟406中Master中當(dāng)前沒有資源需求量不超過Worker節(jié)點 可用資源量的任務(wù),則可以向Worker返回任務(wù)調(diào)度失敗的信息,并結(jié)束該流程。根據(jù)以上描述可以看出,與現(xiàn)有方案相比,一方面,Worker根據(jù)實際負載情況確定 是否請求執(zhí)行新的任務(wù),一定程度上消除了現(xiàn)有方案中僅基于預(yù)先部署的配置文件進行判 斷所帶來的Worker節(jié)點過載或負載不足的問題,從而可以更好保證Worker正常、高效執(zhí) 行;另一方面,Master根據(jù)Worker發(fā)送的關(guān)于每個任務(wù)使用資源量的信息,統(tǒng)計分析每類 任務(wù)所使用的資源量,從而可以較精確的將合適的任務(wù)調(diào)度給Worker,一定程度上避免了 Worker由于剩余資源不足而又執(zhí)行新的任務(wù)造成的過載現(xiàn)象。本發(fā)明的另一實施例中,Worker的任務(wù)請求決策模塊依然采用現(xiàn)有方式判斷是 否請求執(zhí)行新的任務(wù),即,如果Worker上的任務(wù)數(shù)量沒有達到任務(wù)量配額時則請求執(zhí)行新 的任務(wù),但與現(xiàn)有技術(shù)不同的是,隨心跳消息還發(fā)送資源監(jiān)控模塊所監(jiān)控到的該節(jié)點的可 用資源量和該節(jié)點上執(zhí)行的任務(wù)的資源使用量;Master在接收到Worker發(fā)送的執(zhí)行新任 務(wù)的請求后,任務(wù)信息統(tǒng)計模塊根據(jù)各Worker上報的各自節(jié)點上執(zhí)行的任務(wù)的資源使用 量,確定Master上各任務(wù)的資源需求量,然后由任務(wù)調(diào)度模塊根據(jù)任務(wù)信息統(tǒng)計模塊確定 出的各任務(wù)的資源需求量和該Worker的可用資源量進行任務(wù)調(diào)度,具體的,將資源需求量 小于Worker當(dāng)前可用資源量的任務(wù)分配給該Worker,如果沒有這樣的任務(wù)可以分配,則 Master可以返回任務(wù)分配失敗的響應(yīng)。該實施例針對Worker在請求任務(wù)時,其負載已經(jīng)較大的情況,可以將資源需求量相對較小的任務(wù)分配給該Worker,或者不分配新的任務(wù)給該Worker,從而與現(xiàn)有任務(wù)調(diào)度 機制相比可以一定程度上緩解Worker的負載壓力;針對Worker在請求任務(wù)時,其負載較小 的情況,可以將資源需求量相對較大的任務(wù)分配給該Worker,從而與現(xiàn)有任務(wù)調(diào)度機制相 比可以一定程度上提高Worker的資源利用率。本發(fā)明的上述實施例不僅適用于MapReduce系統(tǒng),還可適用于類似結(jié)構(gòu)的數(shù)據(jù)處 理系統(tǒng),如設(shè)置有主節(jié)點和多個工作節(jié)點的數(shù)據(jù)處理系統(tǒng),其中,主節(jié)點用于任務(wù)調(diào)度,工 作節(jié)點用于執(zhí)行任務(wù)。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種任務(wù)調(diào)度方法,應(yīng)用于設(shè)置有主節(jié)點和多個工作節(jié)點的數(shù)據(jù)處理系統(tǒng),其中,主 節(jié)點用于任務(wù)調(diào)度,工作節(jié)點用于執(zhí)行任務(wù),其特征在于,包括如下步驟工作節(jié)點向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶該工作節(jié)點的可用資源量以及該工 作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量;所述主節(jié)點根據(jù)各工作節(jié)點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量,確定 該主節(jié)點上各類任務(wù)的資源需求量,并根據(jù)確定出的各類任務(wù)的資源需求量以及發(fā)送所述 請求的工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。
2.如權(quán)利要求1所述的方法,其特征在于,所述主節(jié)點為所述工作節(jié)點進行任務(wù)調(diào)度 時,將資源需求量不超過該工作節(jié)點的可用資源量的任務(wù)分配給該工作節(jié)點。
3.如權(quán)利要求1所述的方法,其特征在于,工作節(jié)點發(fā)送給主節(jié)點的任務(wù)的資源使用 量是該任務(wù)在設(shè)定時長內(nèi)的最大資源使用量。
4.如權(quán)利要求1所述的方法,其特征在于,工作節(jié)點在觸發(fā)發(fā)送心跳消息時,通過心跳 消息發(fā)送獲取任務(wù)的請求;各工作節(jié)點中的每個節(jié)點在觸發(fā)發(fā)送心跳消息時,將其上執(zhí)行的各任務(wù)各自的資源使 用量通過心跳消息發(fā)送給主節(jié)點。
5.如權(quán)利要求1至4任一項所述的方法,其特征在于,工作節(jié)點在判斷其自身的負載量 不超過設(shè)定的負載量閾值時,向主節(jié)點發(fā)送獲取任務(wù)的請求。
6.如權(quán)利要求1至4任一項所述的方法,其特征在于,所述數(shù)據(jù)處理系統(tǒng)為MapReduce 系統(tǒng)。
7.一種工作節(jié)點設(shè)備,應(yīng)用于設(shè)置有主節(jié)點設(shè)備和多個工作節(jié)點設(shè)備的數(shù)據(jù)處理系 統(tǒng),其中,主節(jié)點設(shè)備用于任務(wù)調(diào)度,工作節(jié)點設(shè)備包括任務(wù)執(zhí)行模塊,用于執(zhí)行主節(jié)點分 配的任務(wù),其特征在于,所述工作節(jié)點設(shè)備還包括資源監(jiān)控模塊,用于監(jiān)控工作節(jié)點的可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自 的資源使用量;發(fā)送模塊,用于向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶所述資源監(jiān)控模塊監(jiān)控到的 該工作節(jié)點的可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量。
8.如權(quán)利要求7所述的工作節(jié)點設(shè)備,其特征在于,所述發(fā)送模塊具體用于將所述資 源監(jiān)控模塊監(jiān)控到的在設(shè)定時長內(nèi)任務(wù)的最大資源使用量進行發(fā)送。
9.如權(quán)利要求7所述的工作節(jié)點設(shè)備,其特征在于,所述發(fā)送模塊具體用于在觸發(fā)發(fā) 送心跳消息時,通過心跳消息發(fā)送獲取任務(wù)的請求。
10.如權(quán)利要求7至9任一項所述的工作節(jié)點設(shè)備,其特征在于,還包括任務(wù)請求決策模塊,用于在根據(jù)所述資源監(jiān)控模塊監(jiān)控到的工作節(jié)點的可用資源量, 判斷該工作節(jié)點的負載量不超過設(shè)定的負載量閾值時,指示所述發(fā)送模塊發(fā)送獲取任務(wù)的 請求;所述發(fā)送模塊進一步用于,根據(jù)所述任務(wù)請求決策模塊的指示發(fā)送獲取任務(wù)的請求。
11.一種主節(jié)點設(shè)備,應(yīng)用于設(shè)置有主節(jié)點設(shè)備和多個工作節(jié)點設(shè)備的數(shù)據(jù)處理系統(tǒng), 其中,工作節(jié)點設(shè)備用于執(zhí)行主節(jié)點設(shè)備分配的任務(wù),其特征在于,所述主節(jié)點設(shè)備包括任務(wù)信息統(tǒng)計模塊,用于在接收到工作節(jié)點發(fā)送的獲取任務(wù)的請求后,根據(jù)各工作節(jié) 點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量,確定該主節(jié)點上各類任務(wù)的資源需求量;任務(wù)調(diào)度模塊,用于根據(jù)所述任務(wù)信息統(tǒng)計模塊確定出的各類任務(wù)的資源需求量,以 及接收到的請求中所攜帶的所述工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。
12.如權(quán)利要求11所述的主節(jié)點設(shè)備,其特征在于,所述任務(wù)調(diào)度模塊具體用于將資 源需求量不超過該工作節(jié)點的可用資源量的任務(wù)分配給該工作節(jié)點。
13.如權(quán)利要求11所述的主節(jié)點設(shè)備,其特征在于,所述任務(wù)信息統(tǒng)計模塊具體用于 接收各工作節(jié)點在觸發(fā)發(fā)送心跳消息時,從心跳消息中解析出工作節(jié)點上執(zhí)行的各任務(wù)各 自的資源使用量。
14.一種數(shù)據(jù)處理系統(tǒng),其特征在于,包括主節(jié)點設(shè)備和多個工作節(jié)點設(shè)備;所述工作節(jié)點設(shè)備,用于向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶該工作節(jié)點的可用 資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量信息;所述主節(jié)點設(shè)備,用于根據(jù)各工作節(jié)點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使 用量,確定該主節(jié)點上各類任務(wù)的資源需求量,并根據(jù)確定出的各類任務(wù)的資源需求量以 及發(fā)送所述請求的工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。
15.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其特征在于,所述主節(jié)點為所述工作節(jié)點進 行任務(wù)調(diào)度時,將資源需求量不超過該工作節(jié)點的可用資源量的任務(wù)分配給該工作節(jié)點。
16.如權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其特征在于,所述工作節(jié)點在判斷其自身的 負載量不超過設(shè)定的負載量閾值時,向主節(jié)點發(fā)送獲取任務(wù)的請求。
17.如權(quán)利要求14至16任一項所述的數(shù)據(jù)處理系統(tǒng),其特征在于,所述數(shù)據(jù)處理系統(tǒng) 為 MapReduce 系統(tǒng)。
全文摘要
本發(fā)明公開了一種任務(wù)調(diào)度方法及其系統(tǒng)和設(shè)備,本發(fā)明方法應(yīng)用于設(shè)置有主節(jié)點和多個工作節(jié)點的數(shù)據(jù)處理系統(tǒng),其中,主節(jié)點用于任務(wù)調(diào)度,工作節(jié)點用于執(zhí)行任務(wù),該方法包括如下步驟工作節(jié)點向主節(jié)點發(fā)送獲取任務(wù)的請求,其中攜帶該工作節(jié)點的可用資源量以及該工作節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量;所述主節(jié)點根據(jù)各工作節(jié)點發(fā)送的各自節(jié)點上執(zhí)行的各任務(wù)各自的資源使用量,確定該主節(jié)點上各類任務(wù)的資源需求量,并根據(jù)確定出的各類任務(wù)的資源需求量以及發(fā)送所述請求的工作節(jié)點的可用資源量,為所述工作節(jié)點進行任務(wù)調(diào)度。采用本發(fā)明,可以避免工作節(jié)點過載,以及提高工作節(jié)點的資源利用率,從而提高數(shù)據(jù)處理系統(tǒng),尤其是MapReduce系統(tǒng)的運行效率。
文檔編號H04L29/08GK102096602SQ20091024248
公開日2011年6月15日 申請日期2009年12月15日 優(yōu)先權(quán)日2009年12月15日
發(fā)明者孫宏偉, 郭磊濤 申請人:中國移動通信集團公司