專利名稱:一種基于容量的多任務調(diào)度方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明屬于數(shù)據(jù)處理技術領域,尤其涉及一種基于容量的多任務調(diào)度方法及系統(tǒng)。
背景技術:
映射化簡(MapReduce)是一種分布式的用于處理大規(guī)模數(shù)據(jù)集的并行編程模式或者通用框架。通過定義相應的映射(Map)和化簡(Reduce)函數(shù)來實現(xiàn)分布式數(shù)據(jù)處理的功能。在現(xiàn)有基于MapReduce框架的任務調(diào)度系統(tǒng)中,包括調(diào)度節(jié)點(JobTracker)和若干個任務執(zhí)行節(jié)點(TaskTracker),其網(wǎng)絡架構(gòu)如圖1所示,其中,客戶端用于將用戶布置的并行處理作業(yè)提交至調(diào)度節(jié)點,調(diào)度節(jié)點將客戶端提交的作業(yè)分解為多個具有相同處理功能(但輸入數(shù)據(jù)可能不同)的Map任務和多個具有相同處理功能(但處理的數(shù)據(jù)可能不同)的Reduce任務,并將分解的任務緩存在內(nèi)存中。當任務執(zhí)行節(jié)點沒有達到其任務執(zhí)行能力時,即當前執(zhí)行的任務數(shù)低于可執(zhí)行任務數(shù)時,任務執(zhí)行節(jié)點向調(diào)度節(jié)點請求任務,調(diào)度節(jié)點從分解出的任務中調(diào)度一個任務給任務執(zhí)行節(jié)點。在現(xiàn)有技術中,當任務執(zhí)行節(jié)點的硬件配置較低或者其上運行的任務占用的資源較多,如正在運行的任務占用了大量的系統(tǒng)資源(CPU負載過重和/或內(nèi)存不足等)時,如果任務執(zhí)行節(jié)點尚未達到其預先配置的最大任務配額,其仍然會向調(diào)度節(jié)點請求執(zhí)行新任務,在這種情況下,不僅可能出現(xiàn)新任務由于內(nèi)存不足不能正常執(zhí)行的情況,而且還會影響到正在執(zhí)行的任務,甚至會導致調(diào)度節(jié)點發(fā)生故障。另外,對于任務執(zhí)行節(jié)點的硬件配置較高或者其上運行的任務占用資源較少,如果任務執(zhí)行節(jié)點已經(jīng)達到其預先配置的最大任務配額,其將不再向調(diào)度節(jié)點請求執(zhí)行新任務,·從而造成任務執(zhí)行節(jié)點資源的浪費??傊诂F(xiàn)有基于MapReduce框架的任務調(diào)度系統(tǒng)中,任務執(zhí)行節(jié)點僅根據(jù)預先部署的配置信息請求任務,容易造成任務執(zhí)行節(jié)點過載、負載及內(nèi)存不足等問題,影響任務調(diào)度和執(zhí)行的效率。
發(fā)明內(nèi)容
本發(fā)明提供一種多任務調(diào)度方法,以解決現(xiàn)有基于MapReduce框架的任務調(diào)度系統(tǒng)容易造成任務執(zhí)行節(jié)點過載、負載及內(nèi)存不足的問題。本發(fā)明是這樣實現(xiàn)的,一種多任務調(diào)度方法,所述方法包括:任務執(zhí)行節(jié)點向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間;調(diào)度節(jié)點判斷所述負載值是否小于一閾值,若是,根據(jù)所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間,為該任務執(zhí)行節(jié)點進行任務調(diào)度。一種任務調(diào)度設備,所述設備包括:請求信息接收單元,用于接收任務執(zhí)行節(jié)點發(fā)送的獲取任務的請求,所述請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間;第一判斷單元,用于判斷所述負載值是否小于一閾值;第二判斷單元,用于在所述第一判斷單元判斷結(jié)果為是時,判斷是否存在內(nèi)存需求量小于或者等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的待分配任務;分配單元,用于在所述第二判斷單元判斷結(jié)果為是時,將將內(nèi)存需求量小于或等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的任務分配給該任務執(zhí)行節(jié)點。一種任務執(zhí)行設備,所述設備包括:請求信息發(fā)送單元,用于向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間;任務接收單元,用于接收調(diào)度節(jié)點分配的任務。一種多任務調(diào)度系統(tǒng),其特征在于,所述系統(tǒng)包括所述任務調(diào)度設備以及至少一個所述任務執(zhí)行設備。從上述技術方案可以看出,本發(fā)明根據(jù)任務執(zhí)行節(jié)點上報的負載值以及可用內(nèi)存空間進行任務調(diào)度,將任務分配給負載合適及內(nèi)存充足的任務執(zhí)行節(jié)點,從而可有效避免任務執(zhí)行節(jié)點過載、負載及內(nèi)存不足等問題,提高任務執(zhí)行節(jié)點資源的利用率以及任務調(diào)度和執(zhí)行的效率。
為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是現(xiàn)有基于MapReduce框架的任務調(diào)度系統(tǒng)的示意圖;圖2是本發(fā)明實施例一提供的多任務調(diào)度系統(tǒng)的組成結(jié)構(gòu)圖。圖3是本發(fā)明實施例二提供的多任務調(diào)度方法的實現(xiàn)流程圖;圖4是本發(fā)明實施例三提供的任務調(diào)度設備的組成結(jié)構(gòu)圖;圖5是本發(fā)明實施例四提供的任務執(zhí)行設備的組成結(jié)構(gòu)圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下對照附圖并結(jié)合實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。為了說明本發(fā)明所述的技術方案,下面通過具體實施例來進行說明。實施例一:
圖2示出了本發(fā)明實施例一提供的多任務調(diào)度系統(tǒng)的組成結(jié)構(gòu),為了便于說明,僅不出了與本發(fā)明實施例相關的部分。該多任務調(diào)度系統(tǒng)I包括任務調(diào)度設備11以及至少一個任務執(zhí)行設備12。該多任務調(diào)度系統(tǒng)系統(tǒng)是基于MapReduce架構(gòu)的。所述任務調(diào)度設備11通過有線或者無線方式與任務執(zhí)行設備12連接通信,用于接收任務執(zhí)行設備12發(fā)送的攜帶有當前負載值、可用內(nèi)存空間等信息的任務請求,并根據(jù)攜帶的負載值、可用內(nèi)存空間等信息對任務執(zhí)行設備12進行任務調(diào)度。所述任務執(zhí)行設備12用于向任務調(diào)度設備11發(fā)送攜帶有當前負載值、可用內(nèi)存空間等信息的任務請求,并接收任務調(diào)度設備11分配的任務。實施例二:圖3示出了本發(fā)明實施例二提供的多任務調(diào)度方法的實現(xiàn)流程,該方法過程詳述如下:在步驟S301中,任務執(zhí)行節(jié)點向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間。在本實施例中,任務執(zhí)行節(jié)點在觸發(fā)發(fā)送心跳消息時,通過心跳信息向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間
坐寸ο其中,所述任務執(zhí)行節(jié)點當前的負載值指的是任務執(zhí)行節(jié)點當前的處理性能,例如任務執(zhí)行節(jié)點CPU的使用率等。所述任務執(zhí)行節(jié)點當前的可用內(nèi)存空間的計算公式為:可用內(nèi)存空間=實際內(nèi)存空間-已使用內(nèi)存空間-任務執(zhí)行節(jié)點系統(tǒng)預留內(nèi)存空間-已分配任務預留內(nèi)存空間。在步驟S302中,調(diào)度節(jié)點判斷所述負載值是否小于一閾值,若判斷結(jié)果為“是”,則執(zhí)行步驟S304,若判斷結(jié)果為“否”,則執(zhí)行步驟S303。
該一閾值可為一預設閾值,也可以為動態(tài)閾值,包括但不限于系統(tǒng)平均負載值。舉例說明(但不以該舉例為限),當任務執(zhí)行節(jié)點的負載值通過CPU使用率來反映時,判斷任務執(zhí)行節(jié)點當前的CPU使用率是否小于一預設閾值(例如60% ),當小于時,執(zhí)行步驟S304,否則,執(zhí)行步驟S303。在步驟S303中,拒絕向該任務執(zhí)行節(jié)點分配任務。在本實施例中,為了避免任務執(zhí)行節(jié)點負載過重,影響任務的執(zhí)行效率,調(diào)度節(jié)點拒絕負載值大于或等于一閾值的任務執(zhí)行節(jié)點的任務分配請求。在步驟S304中,根據(jù)所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間,為該任務執(zhí)行節(jié)點進行任務調(diào)度。在本實施例中,為了避免新分配的任務內(nèi)存需求量過大,導致任務執(zhí)行節(jié)點內(nèi)存不足不能正常執(zhí)行,以及影響正在執(zhí)行的任務,導致調(diào)度節(jié)點發(fā)生故障等情況。本實施例調(diào)度節(jié)點在任務隊列中依次掃描每個待分配任務,判斷其中是否存在內(nèi)存需求量小于或者等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的待分配任務,在存在時,調(diào)度節(jié)點將內(nèi)存需求量小于或等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的任務分配給該任務執(zhí)行節(jié)點;在不存在時,拒絕向該任務執(zhí)行節(jié)點分配任務。在本實施例中,判斷是否存在內(nèi)存需求量小于或者等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的待分配任務具體為:判斷任務執(zhí)行節(jié)點中實際內(nèi)存空間-已使用內(nèi)存空間-任務執(zhí)行節(jié)點系統(tǒng)預留內(nèi)存空間-已分配任務預留內(nèi)存空間-準備分配但未下發(fā)任務的內(nèi)存空間的結(jié)果是否大于等于零,若是,則表示任務執(zhí)行節(jié)點內(nèi)存充足,調(diào)度節(jié)點可以下發(fā)該任務;反之則表示任務執(zhí)行節(jié)點內(nèi)存不足,調(diào)度節(jié)點拒絕向該任務執(zhí)行節(jié)點下發(fā)任務,直至該任務執(zhí)行節(jié)點重新申請任務。
在本發(fā)明實施例中,任務執(zhí)行節(jié)點仍可根據(jù)預先部署的配置信息向調(diào)度節(jié)點請求任務,但在請求中會攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間,調(diào)度節(jié)點根據(jù)該任務執(zhí)行節(jié)點的負載值以及可用內(nèi)存空間來決定是否向該任務執(zhí)行節(jié)點分配任務,以及在分配任務時選擇合適的任務進行分配,從而有效避免了任務執(zhí)行節(jié)點過載、負載及內(nèi)存不足等問題,提高了任務執(zhí)行節(jié)點資源的利用率以及任務調(diào)度和執(zhí)行的效率。實施例三:圖4示出了本發(fā)明實施例三提供的任務調(diào)度設備的組成結(jié)構(gòu),為了便于說明,僅不出了與本發(fā)明實施例相關的部分。該任務調(diào)度設備可以是運行于多任務調(diào)度系統(tǒng)內(nèi)的軟件單元、硬件單元或者軟硬件相結(jié)合的單元,也可以作為獨立的掛件集成到多任務調(diào)度系統(tǒng)中或者運行于多任務調(diào)度系統(tǒng)的應用系統(tǒng)中。該任務調(diào)度設備4包括請求信息接收單元41、第一判斷單元42、第二判斷單元43以及分配單元44,其具體功能如下:請求信息接收單元41,用于接收任務執(zhí)行節(jié)點發(fā)送的獲取任務的請求,所述請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間;第一判斷單元42,用于判斷所述負載值是否小于一閾值;第二判斷單元43,用于在所述第一判斷單元42判斷結(jié)果為是時,判斷是否存在內(nèi)存需求量小于或者等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的待分配任務;分配單元44,用于在所述第二判斷單元43判斷結(jié)果為是時,將將內(nèi)存需求量小于或等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的任務分配給該任務執(zhí)行節(jié)點。進一步的,為避免任務執(zhí)行節(jié)點負載過重或內(nèi)存不足問題,提高任務執(zhí)行節(jié)點資源的利用率以及任務調(diào)度和執(zhí)行的`效率,所述調(diào)度節(jié)點4還包括拒絕分配單元45,用于在所述任務執(zhí)行節(jié)點當前的負載值大于或者等于所述一閾值,或者待分配任務的內(nèi)存需求量都大于所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間時,拒絕向該任務執(zhí)行節(jié)點分配任務。本實施例提供的任務調(diào)度設備可以使用在前述對應的多任務調(diào)度方法中,詳情參見上述多任務調(diào)度方法實施例二的相關描述,在此不再贅述。實施例四:圖5示出了本發(fā)明實施例四提供的任務執(zhí)行設備的組成結(jié)構(gòu),為了便于說明,僅不出了與本發(fā)明實施例相關的部分。該任務執(zhí)行設備可以是運行于多任務調(diào)度系統(tǒng)內(nèi)的軟件單元、硬件單元或者軟硬件相結(jié)合的單元,也可以作為獨立的掛件集成到多任務調(diào)度系統(tǒng)中或者運行于多任務調(diào)度系統(tǒng)的應用系統(tǒng)中。該任務執(zhí)行設備5包括請求信息發(fā)送單元51和任務接收單元52,其具體功能如下:請求信息發(fā)送單元51,用于向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間;任務接收單元52,用于接收調(diào)度節(jié)點分配的任務。在本實施例中,所述任務執(zhí)行節(jié)點當前的可用內(nèi)存空間的計算公式為:可用內(nèi)存空間=實際內(nèi)存空間-已使用內(nèi)存空間-任務執(zhí)行節(jié)點系統(tǒng)預留內(nèi)存空間-已分配任務預留內(nèi)存空間。本實施例提供的任務執(zhí)行設備可以使用在前述對應的多任務調(diào)度方法中,詳情參見上述多任務調(diào)度方法實施例二的相關描述,在此不再贅述。本領域普通技術人員可以理解為實施例三和四設備所包括的各個單元只是按照功能邏輯進行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護范圍。綜上所述,本發(fā)明基于容量的任務調(diào)度算法以任務內(nèi)存設置的最大值作為任務是否被分發(fā)的依據(jù),通過將各個節(jié)點的負載情況、任務執(zhí)行進度以及相應的任務的內(nèi)存占用進行記錄。節(jié)點收集的狀態(tài)信息在索取任務時上報給控制節(jié)點的任務調(diào)度器,任務調(diào)度器根據(jù)計算節(jié)點的狀態(tài)從當前可執(zhí)行任務隊列中選擇符合要求的任務下發(fā)給計算節(jié)點,從而有效避免了任務執(zhí)行節(jié)點過載、負載及內(nèi)存不足等問題,提高了任務執(zhí)行節(jié)點資源的利用率以及任務調(diào)度和執(zhí)行的效率。本發(fā)明實現(xiàn)簡單,實用性強。
本領域普通技術人員還可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以在存儲于一計算機可讀取存儲介質(zhì)中,所述的存儲介質(zhì),包括R0M/RAM、磁盤、光盤等。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種多任務調(diào)度方法,其特征在于,所述方法包括: 任務執(zhí)行節(jié)點向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間; 調(diào)度節(jié)點判斷所述負載值是否小于一閾值,若是,根據(jù)所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間,為該任務執(zhí)行節(jié)點進行任務調(diào)度。
2.如權利要求1所述的方法,其特征在于,所述根據(jù)所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間,為該任務執(zhí)行節(jié)點進行任務調(diào)度具體包括: 判斷調(diào)度節(jié)點中是否存在內(nèi)存需求量小于或者等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的待分配任務; 若是,調(diào)度節(jié)點將內(nèi)存需求量小于或等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的任務分配給該任務執(zhí)行節(jié)點; 若否,拒絕向該任務執(zhí)行節(jié)點分配任務。
3.如權利要求1所述的方法,其特征在于,所述方法還包括: 當調(diào)度節(jié)點判定所述任務執(zhí)行節(jié)點當前的負載值大于或者等于所述一閾值時,拒絕向該任務執(zhí)行節(jié)點分配任務。
4.如權利要求1所述的方法,其特征在于,所述任務執(zhí)行節(jié)點當前的可用內(nèi)存空間的計算公式為: 可用內(nèi)存空間=實際內(nèi)存空間-已使用內(nèi)存空間-任務執(zhí)行節(jié)點系統(tǒng)預留內(nèi)存空間-已分配任務預留內(nèi)存空·間。
5.一種任務調(diào)度設備,其特征在于,所述設備包括: 請求信息接收單元,用于接收任務執(zhí)行設備發(fā)送的獲取任務的請求,所述請求中攜帶有該任務執(zhí)行設備當前的負載值以及可用內(nèi)存空間; 第一判斷單元,用于判斷所述負載值是否小于一閾值; 第二判斷單元,用于在所述第一判斷單元判斷結(jié)果為是時,判斷是否存在內(nèi)存需求量小于或者等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的待分配任務; 分配單元,用于在所述第二判斷單元判斷結(jié)果為是時,將將內(nèi)存需求量小于或等于所述任務執(zhí)行節(jié)點當前可用內(nèi)存空間的任務分配給該任務執(zhí)行節(jié)點。
6.如權利要求5所述的設備,其特征在于,所述設備還包括: 拒絕分配單元,用于在所述任務執(zhí)行節(jié)點當前的負載值大于或者等于所述一閾值,或者待分配任務的內(nèi)存需求量都大于所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間時,拒絕向該任務執(zhí)行節(jié)點分配任務。
7.一種任務執(zhí)行設備,其特征在于,所述設備包括: 請求信息發(fā)送單元,用于向任務調(diào)度設備發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行設備當前的負載值以及可用內(nèi)存空間; 任務接收單元,用于接收任務調(diào)度設備分配的任務。
8.如權利要求7所述的設備,其特征在于,所述任務執(zhí)行節(jié)點當前的可用內(nèi)存空間的計算公式為: 可用內(nèi)存空間=實際內(nèi)存空間-已使用內(nèi)存空間-任務執(zhí)行節(jié)點系統(tǒng)預留內(nèi)存空間-已分配任務預留內(nèi)存空間。
9.一種多任務調(diào)度系統(tǒng),其特征在于,所述系統(tǒng)包括如權利要求5或6任一所述的任務調(diào)度設備以及至少一個如權利要求7或8所述的任務執(zhí)行設備。
10.如權利要求9所述 的系統(tǒng),其特征在于,該系統(tǒng)是基于MapReduce架構(gòu)的。
全文摘要
本發(fā)明適用于數(shù)據(jù)處理技術領域,提供了一種基于容量的多任務調(diào)度方法及系統(tǒng),所述方法包括任務執(zhí)行節(jié)點向調(diào)度節(jié)點發(fā)送獲取任務的請求,該請求中攜帶有該任務執(zhí)行節(jié)點當前的負載值以及可用內(nèi)存空間;調(diào)度節(jié)點判斷所述負載值是否小于一閾值,若是,根據(jù)所述任務執(zhí)行節(jié)點的當前可用內(nèi)存空間,為該任務執(zhí)行節(jié)點進行任務調(diào)度。通過本發(fā)明,可有效避免任務執(zhí)行節(jié)點過載、負載及內(nèi)存不足等問題,提高任務執(zhí)行節(jié)點資源的利用率以及任務調(diào)度和執(zhí)行的效率。
文檔編號G06F9/46GK103246550SQ201210028768
公開日2013年8月14日 申請日期2012年2月9日 優(yōu)先權日2012年2月9日
發(fā)明者徐釗, 趙彥榮, 郭瑋, 李均, 趙偉, 張書彬, 洪坤乾 申請人:深圳市騰訊計算機系統(tǒng)有限公司