亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法及識別系統(tǒng)的制作方法

文檔序號:10511996閱讀:305來源:國知局
基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法及識別系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,包括:在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列;根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù);通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。本發(fā)明還提供了一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)。本發(fā)明能縮短已提交作業(yè)在集群中的等待時間,降低作業(yè)的失敗率,提高節(jié)點的執(zhí)行效率,提高資源的使用率。
【專利說明】
基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法及識別系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法及識別系統(tǒng)。
【背景技術(shù)】
[0002]作業(yè)調(diào)度算法負(fù)責(zé)集群內(nèi)部的資源分配和數(shù)據(jù)本地化的相關(guān)操作。作業(yè)調(diào)度算法實現(xiàn)了對系統(tǒng)資源的高效分配,減輕集群負(fù)載壓力,對集群有著非常大的影響,自業(yè)界最早提出在Hadoop集群中使用先來先出調(diào)度算法以來,學(xué)者們紛紛提出了各種各樣Hadoop集群的作業(yè)調(diào)度算法,其中最主要的是如下幾個:
[0003](I)公平調(diào)度算法:公平調(diào)度算法適用于多個用戶同時使用集群,確保作業(yè)都可以相對公平的為作業(yè)分配其所需的資源。確保作業(yè)在運(yùn)行的過程,分配到最小的運(yùn)行資源以此來支持其運(yùn)行。在資源使用效率和作業(yè)吞吐率方面,公平算法有很大程度的提高。
[0004](2)自適應(yīng)調(diào)度算法:2014年Amr M.Elkholy和Elsayed A.H Sallam提出了一種自適應(yīng)調(diào)度算法。自適應(yīng)調(diào)度算法將用戶期待的運(yùn)行時間作為目標(biāo),對資源的異構(gòu)性和對不同節(jié)點所擁有的不同計算能力進(jìn)行動態(tài)的調(diào)整和適應(yīng)。自適應(yīng)調(diào)度算法會通過計算節(jié)點所控制的不同數(shù)量的Map或Reduce插槽來動態(tài)的擴(kuò)展或縮小TaskTracker所擁有的計算能力。通過對節(jié)點所占用插槽的數(shù)量的控制,來對剩余資源和未執(zhí)行作業(yè)進(jìn)行動態(tài)分配資源,從而保證在規(guī)定的時間內(nèi)完成作業(yè)。
[0005](3 )]\&?(]0¥61—1^11六8 8丨811算法:Hadoop的作業(yè)的分配問題是一個NP問題,算法利用快速迭代,產(chǎn)生一系列不同的分配方案,在迭代出的多種資源分配策略中選取相對最優(yōu)的方案,這個最優(yōu)方案并不是最優(yōu)解,只能與最優(yōu)解無限接近,并且選出的分配策略保證數(shù)據(jù)的本地化性良好。
[0006]但是上述這些現(xiàn)有的算法不夠理想,都有一定的局限性,即用戶所提交的作業(yè)在等待分配系統(tǒng)資源時等待時間過長,而且在多作業(yè)情況下會導(dǎo)致資源分配不均衡,這兩方面的缺點會導(dǎo)致集群中作業(yè)失敗率提高,節(jié)點執(zhí)行效率低和資源使用率低的問題。
[0007]因此,亟需設(shè)計一種資源調(diào)度方法和系統(tǒng),以提高節(jié)點的執(zhí)行效率,提高資源的使用率。

【發(fā)明內(nèi)容】

[0008]有鑒于此,本發(fā)明實施例的目的在于提供一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法及識別系統(tǒng),旨在解決現(xiàn)有技術(shù)中集群作業(yè)失敗率較高,且節(jié)點執(zhí)行效率低和資源使用率低的問題。
[0009]本發(fā)明實施例是這樣實現(xiàn)的,一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,包括:
[0010]在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列;
[0011]根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù);
[0012]通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。
[0013]優(yōu)選的,所述在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列的步驟具體包括:
[0014]在集群的每一個心跳周期中,利用集群內(nèi)的從節(jié)點向集群內(nèi)的主節(jié)點發(fā)送的心跳信息來確定節(jié)點是否有空閑資源,并在有空閑資源時將擁有空閑資源的節(jié)點加入到所述節(jié)點隊列中并按照順序排列;
[0015]在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間以及計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間;
[0016]如果所述剩余時間小于所述傳輸時間,則取消此次數(shù)據(jù)塊的傳輸操作并將所述當(dāng)前節(jié)點作為失敗節(jié)點添加到失敗隊列中,如果所述剩余時間大于所述傳輸時間,則將所述當(dāng)前節(jié)點添加到所述節(jié)點隊列中并按照順序排列。
[0017]優(yōu)選的,所述根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù)的步驟具體包括:
[0018]讀取最新更新的所述節(jié)點隊列中的信息,選出在所述節(jié)點隊列中位于隊首位置的節(jié)點作為目標(biāo)節(jié)點;
[0019]輪詢所述失敗隊列,如果所述失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則結(jié)束算法,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù);
[0020]如果所述失敗隊列為空,則在已提交但未分配資源的提交作業(yè)隊列中選擇作業(yè),并將符合選擇條件的作業(yè)的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果在未執(zhí)行任務(wù)中存在本地化任務(wù)則結(jié)束算法,如果在未執(zhí)行任務(wù)中不存在本地化任務(wù)則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。
[0021 ]優(yōu)選的,所述通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行的步驟具體包括:
[0022]通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合;
[0023]根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點;
[0024]將所述預(yù)備作業(yè)任務(wù)運(yùn)行所需的數(shù)據(jù)信息通過集群網(wǎng)絡(luò)傳輸?shù)剿瞿繕?biāo)節(jié)點;
[0025]通過分布式文件系統(tǒng)來管理傳輸?shù)剿瞿繕?biāo)節(jié)點的數(shù)據(jù)文件;
[0026]當(dāng)所述目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,在心跳周期內(nèi)使用指令通知主節(jié)點為所述目標(biāo)節(jié)點分配所述預(yù)備作業(yè)任務(wù)中的新作業(yè),并將所述新作業(yè)調(diào)度到指定位置。
[0027]另一方面,本發(fā)明還提供一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng),包括:
[0028]生成模塊,用于在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列;
[0029]選取模塊,用于根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù);
[0030]調(diào)度模塊,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。
[0031 ]優(yōu)選的,所述生成模塊具體包括:
[0032]第一排列子模塊,用于在集群的每一個心跳周期中,利用集群內(nèi)的從節(jié)點向集群內(nèi)的主節(jié)點發(fā)送的心跳信息來確定節(jié)點是否有空閑資源,并在有空閑資源時將擁有空閑資源的節(jié)點加入到所述節(jié)點隊列中并按照順序排列;
[0033]計算子模塊,用于在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間以及計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間;
[0034]第二排列子模塊,用于如果所述剩余時間小于所述傳輸時間,則取消此次數(shù)據(jù)塊的傳輸操作并將所述當(dāng)前節(jié)點作為失敗節(jié)點添加到失敗隊列中,如果所述剩余時間大于所述傳輸時間,則將所述當(dāng)前節(jié)點添加到所述節(jié)點隊列中并按照順序排列。
[0035]優(yōu)選的,所述選取模塊具體包括:
[0036]第一選擇子模塊,用于讀取最新更新的所述節(jié)點隊列中的信息,選出在所述節(jié)點隊列中位于隊首位置的節(jié)點作為目標(biāo)節(jié)點;
[0037]第二選擇子模塊,用于輪詢所述失敗隊列,如果所述失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則結(jié)束算法,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù);
[0038]判斷子模塊,用于如果所述失敗隊列為空,則在已提交但未分配資源的提交作業(yè)隊列中選擇作業(yè),并將符合選擇條件的作業(yè)的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果在未執(zhí)行任務(wù)中存在本地化任務(wù)則結(jié)束算法,如果在未執(zhí)行任務(wù)中不存在本地化任務(wù)則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。
[0039]優(yōu)選的,所述調(diào)度模塊具體包括:
[0040]第一標(biāo)記子模塊,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合;
[0041]第二標(biāo)記子模塊,用于根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點;
[0042]第一傳輸子模塊,用于將所述預(yù)備作業(yè)任務(wù)運(yùn)行所需的數(shù)據(jù)信息通過集群網(wǎng)絡(luò)傳輸?shù)剿瞿繕?biāo)節(jié)點;
[0043]第二傳輸子模塊,用于通過分布式文件系統(tǒng)來管理傳輸?shù)剿瞿繕?biāo)節(jié)點的數(shù)據(jù)文件;
[0044]分配子模塊,用于當(dāng)所述目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,在心跳周期內(nèi)使用指令通知主節(jié)點為所述目標(biāo)節(jié)點分配所述預(yù)備作業(yè)任務(wù)中的新作業(yè),并將所述新作業(yè)調(diào)度到指定位置。
[0045]在本發(fā)明實施例中,本發(fā)明提供的技術(shù)方案在作業(yè)還未進(jìn)行調(diào)度之前,對集群中的所有計算節(jié)點進(jìn)行排序,對計算節(jié)點釋放資源所需時間進(jìn)行排隊,每次選擇最先釋放資源的節(jié)點,接著對集群中的失敗作業(yè)或已提交但未執(zhí)行本地化的作業(yè)進(jìn)行選擇,最后對選擇的作業(yè)的三個數(shù)據(jù)副本進(jìn)行選擇,得到距離計算節(jié)點最近的數(shù)據(jù)文件進(jìn)行數(shù)據(jù)傳輸。本發(fā)明提供的技術(shù)方案能縮短已提交作業(yè)在集群中的等待時間,降低作業(yè)的失敗率,提高節(jié)點的執(zhí)行效率,提高資源的使用率。
【附圖說明】
[0046]圖1為本發(fā)明一實施方式中基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法流程圖;
[0047]圖2為本發(fā)明一實施方式中圖1所示步驟Sll的子步驟流程圖;
[0048]圖3為本發(fā)明一實施方式中圖1所示步驟S12的子步驟流程圖;
[0049]圖4為本發(fā)明一實施方式中圖1所示步驟S13的子步驟流程圖;
[0050]圖5為本發(fā)明一實施方式中基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)結(jié)構(gòu)示意圖;
[0051 ]圖6為本發(fā)明一實施方式中圖5所示生成模塊11的內(nèi)部結(jié)構(gòu)示意圖;
[0052]圖7為本發(fā)明一實施方式中圖5所示選取模塊12的內(nèi)部結(jié)構(gòu)示意圖;
[0053]圖8為本發(fā)明一實施方式中圖5所示調(diào)度模塊13的內(nèi)部結(jié)構(gòu)示意圖。
【具體實施方式】
[0054]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0055]本發(fā)明【具體實施方式】提供了一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,主要包括如下步驟:
[0056]S11、在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列;
[0057]S12、根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù);
[0058]S13、通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。
[0059]本發(fā)明所提供的一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,能縮短已提交作業(yè)在集群中的等待時間,降低作業(yè)的失敗率,提高節(jié)點的執(zhí)行效率,提高資源的使用率。
[0060]以下將對本發(fā)明所提供的一種基于數(shù)據(jù)預(yù)處理的資源調(diào)度方法進(jìn)行詳細(xì)說明。
[0061]請參閱圖1,為本發(fā)明一實施方式中基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法流程圖。
[0062]在步驟Sll中,在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列。
[0063]在本實施方式中,步驟Sll具體包括Slll、S112、S113這三個子步驟,如圖2所示。
[0064]請參閱圖2,為本發(fā)明一實施方式中圖1所示步驟Sll的子步驟流程圖。
[0065]在步驟Slll中,在集群的每一個心跳周期中,利用集群內(nèi)的從節(jié)點向集群內(nèi)的主節(jié)點發(fā)送的心跳信息來確定節(jié)點是否有空閑資源,并在有空閑資源時將擁有空閑資源的節(jié)點加入到所述節(jié)點隊列中并按照順序排列。
[0066]在本實施方式中,集群包括從節(jié)點與主節(jié)點,在集群的每一個心跳周期中,從節(jié)點向主節(jié)點發(fā)送心跳信息來確定節(jié)點是否有空閑資源,報告有空閑的資源時,此時該擁有空閑資源的節(jié)點會被加入到所述節(jié)點隊列中并按照順序排列。
[0067]在步驟S112中,在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間以及計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間。
[0068]在本實施方式中,當(dāng)集群中的主節(jié)點對從節(jié)點進(jìn)行輪詢時,沒有出現(xiàn)擁有空閑資源的節(jié)點時,則要依據(jù)節(jié)點釋放資源的速度進(jìn)行判斷。在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間,即通過作業(yè)的已使用時間和已完成百分率來計算作業(yè)完成所需的剩余時間,作業(yè)的執(zhí)行效率指的是已進(jìn)行資源分配的作業(yè)在單位時間內(nèi)所完成的進(jìn)度,其中,作業(yè)的執(zhí)行效率可表示為:Rate = Progress/(currentTime-startTime),其中,currentTime表不當(dāng)前時間,startTime表不開始時間,當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間通過以下公式計算得到:IeftTime = 1-progress/Rate,其中,IeftTime表示剩余時間。
[0069]在本實施方式中,集群內(nèi)部網(wǎng)絡(luò)是采用局域網(wǎng)高速互聯(lián),因此局域網(wǎng)內(nèi)部的理論傳輸速度是可以通過網(wǎng)絡(luò)設(shè)備自身的參數(shù)獲悉,也就是說可以通過網(wǎng)絡(luò)中的傳輸速率來計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間,每個數(shù)據(jù)塊在集群中的大小是固定的,即blockSize為64MB,當(dāng)局域網(wǎng)帶寬在100M時,集群的數(shù)據(jù)傳送效率約為每秒10兆,一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間可以表示為:tranTime =blockSize/transRate,其中,transRate表不數(shù)據(jù)傳送效率,transT ime表不傳輸時間。
[0070]在步驟S113中,如果所述剩余時間小于所述傳輸時間,則取消此次數(shù)據(jù)塊的傳輸操作并將所述當(dāng)前節(jié)點作為失敗節(jié)點添加到失敗隊列中,如果所述剩余時間大于所述傳輸時間,則將所述當(dāng)前節(jié)點添加到所述節(jié)點隊列中并按照順序排列。
[0071]請繼續(xù)參閱圖1,在步驟S12中,根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù)。
[0072]在本實施方式中,步驟S12具體包括S121、S122、S123這三個子步驟,如圖3所示。
[0073]請參閱圖3,為本發(fā)明一實施方式中圖1所示步驟S12的子步驟流程圖。
[0074]在步驟S121中,讀取最新更新的所述節(jié)點隊列(NodeQueue)中的信息,選出在所述節(jié)點隊列中位于隊首位置的節(jié)點作為目標(biāo)節(jié)點。
[0075]在本實施方式中,目標(biāo)節(jié)點是作業(yè)任務(wù)額外完成時間最小且擁有足夠的時間完成任務(wù)數(shù)據(jù)本地化。
[0076]在步驟S122中,輪詢所述失敗隊列,如果所述失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則結(jié)束算法,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。
[0077]在本實施方式中,運(yùn)行失敗的作業(yè)在集群內(nèi)擁有較高的優(yōu)先級,作業(yè)失敗后可以快速的被重新分配資源,從而提高作業(yè)的執(zhí)行進(jìn)度,集群會維護(hù)一個失敗作業(yè)(failedTask)的隊列,即失敗隊列,集群會為失敗任務(wù)賦予最高的優(yōu)先級,若失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與目標(biāo)節(jié)點(AimNode)進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則算法結(jié)束,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)(ReadyTask)。
[0078]在步驟S123中,如果所述失敗隊列為空,則在已提交但未分配資源的提交作業(yè)隊列中選擇作業(yè),并將符合選擇條件的作業(yè)的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果在未執(zhí)行任務(wù)中存在本地化任務(wù)則結(jié)束算法,如果在未執(zhí)行任務(wù)中不存在本地化任務(wù)則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。
[0079]在本實施方式中,如果預(yù)備作業(yè)(ReadyTask)為空,則表示當(dāng)前集群沒有失敗任務(wù)存在,于是在已提交但未分配資源的提交作業(yè)隊列(SubmitQueue)中選擇作業(yè),如果存在符合條件的作業(yè),就將此任務(wù)與之前所選出的目標(biāo)節(jié)點(AimNode)的數(shù)據(jù)進(jìn)行本地性判斷,如果未執(zhí)行任務(wù)中存在本地化任務(wù),則算法結(jié)束,反之,則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)(ReadyTask)。
[0080]請繼續(xù)參閱圖1,在步驟S13中,通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。
[0081 ] 在本實施方式中,步驟S13具體包括S131?S135這三個子步驟,如圖4所示。
[0082]請參閱圖4,為本發(fā)明一實施方式中圖1所示步驟S13的子步驟流程圖。
[0083]在步驟S131中,通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合。
[0084]在本實施方式中,通過調(diào)度算法找到的目標(biāo)節(jié)點和預(yù)備作業(yè)任務(wù),通過作業(yè)對應(yīng)的TaskInProgress來獲取作業(yè)所需資源的相關(guān)的元數(shù)據(jù)信息,通過獲取相關(guān)數(shù)據(jù)塊所在的目標(biāo)位置信息集來確定需要進(jìn)行數(shù)據(jù)傳輸?shù)墓?jié)點,在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合,記為 SourceNodes。
[0085]在步驟S132中,根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點。
[0086]在本實施方式中,通過讀取配置信息,得到網(wǎng)絡(luò)環(huán)境配置情況,判斷與目標(biāo)節(jié)點AimNode最近的預(yù)備作業(yè)的數(shù)據(jù)文件所在的位置,Hadoop中節(jié)點與數(shù)據(jù)文件存在以下的四種可能:位于同一個節(jié)點,即數(shù)據(jù)已經(jīng)完成了本地化操作;位于同一個機(jī)架,不同節(jié)點;位于同一個中心的其他機(jī)架上;位于不同的數(shù)據(jù)中心。這四種情況,數(shù)據(jù)進(jìn)行傳輸?shù)某杀臼遣煌?,所以要依?jù)數(shù)據(jù)不同的存儲位置,確定對其中哪一個數(shù)據(jù)塊進(jìn)行網(wǎng)絡(luò)傳輸操作。數(shù)據(jù)文件位置不同,所造成的傳輸成本不同,因此依據(jù)傳輸成本大小,來為其確定不同的權(quán)值。在本實施方式中,根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點。
[0087]在步驟S133中,將所述預(yù)備作業(yè)任務(wù)運(yùn)行所需的數(shù)據(jù)信息通過集群網(wǎng)絡(luò)傳輸?shù)剿瞿繕?biāo)節(jié)點。
[0088]在本實施方式中,通過在步驟S132的計算,從目標(biāo)位置信息集中選擇一個距離目標(biāo)節(jié)點最近節(jié)點,記為源節(jié)點(SourceNode),將目標(biāo)任務(wù)所需的輸入數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)侥繕?biāo)節(jié)點上。
[0089]在步驟S134中,通過分布式文件系統(tǒng)來管理傳輸?shù)剿瞿繕?biāo)節(jié)點的數(shù)據(jù)文件。[°09°]在本實施方式中,更新JobTracker的文件信息,通過分布式文件系統(tǒng)(HadoopDistributed File System,HDFS)來管理通過傳輸?shù)竭_(dá)目標(biāo)節(jié)點的數(shù)據(jù)文件。
[0091]在步驟S135中,當(dāng)所述目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,在心跳周期內(nèi)使用指令通知主節(jié)點為所述目標(biāo)節(jié)點分配所述預(yù)備作業(yè)任務(wù)中的新作業(yè),并將所述新作業(yè)調(diào)度到指定位置。
[0092]在本實施方式中,當(dāng)目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,會在心跳周期內(nèi),使用指令通知主節(jié)點為目標(biāo)節(jié)點分配新的作業(yè),此時,將ReadyTask中的作業(yè)調(diào)度到指定位置,此作業(yè)所需文件完成傳輸,保存在了本地,此時此任務(wù)相當(dāng)于已經(jīng)完成了數(shù)據(jù)本地化操作,無需等待,可以直接運(yùn)行。
[0093]本發(fā)明所提供的一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,能縮短已提交作業(yè)在集群中的等待時間,降低作業(yè)的失敗率,提高節(jié)點的執(zhí)行效率,提高資源的使用率。
[0094]本發(fā)明【具體實施方式】還提供一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)10,主要包括:
[0095]生成模塊11,用于在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列;
[0096]選取模塊12,用于根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù);
[0097]調(diào)度模塊13,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。
[0098]本發(fā)明所提供的一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)10,能縮短已提交作業(yè)在集群中的等待時間,降低作業(yè)的失敗率,提高節(jié)點的執(zhí)行效率,提高資源的使用率。
[0099]請參閱圖5,所示為本發(fā)明一實施方式中基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)10的結(jié)構(gòu)示意圖。在本實施方式中,基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)10包括生成模塊11、選取模塊12以及調(diào)度模塊13。
[0100]生成模塊11,用于在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列。
[0101]在本實施方式中,生成模塊11具體包括第一排列子模塊111、計算子模塊112、第二排列子模塊113這三個子模塊,如圖6所示。
[0102]請參閱圖6,為本發(fā)明一實施方式中圖5所示生成模塊11的內(nèi)部結(jié)構(gòu)示意圖。
[0103]第一排列子模塊111,用于在集群的每一個心跳周期中,利用集群內(nèi)的從節(jié)點向集群內(nèi)的主節(jié)點發(fā)送的心跳信息來確定節(jié)點是否有空閑資源,并在有空閑資源時將擁有空閑資源的節(jié)點加入到所述節(jié)點隊列中并按照順序排列。
[0104]在本實施方式中,集群包括從節(jié)點與主節(jié)點,在集群的每一個心跳周期中,從節(jié)點向主節(jié)點發(fā)送心跳信息來確定節(jié)點是否有空閑資源,報告有空閑的資源時,此時該擁有空閑資源的節(jié)點會被加入到所述節(jié)點隊列中并按照順序排列。
[0105]計算子模塊112,用于在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間以及計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間。
[0106]在本實施方式中,當(dāng)集群中的主節(jié)點對從節(jié)點進(jìn)行輪詢時,沒有出現(xiàn)擁有空閑資源的節(jié)點時,則要依據(jù)節(jié)點釋放資源的速度進(jìn)行判斷。在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間,即通過作業(yè)的已使用時間和已完成百分率來計算作業(yè)完成所需的剩余時間,作業(yè)的執(zhí)行效率指的是已進(jìn)行資源分配的作業(yè)在單位時間內(nèi)所完成的進(jìn)度,其中,作業(yè)的執(zhí)行效率可表示為:Rate = Progress/(currentT ime-startT ime),其中,currentTime 表不當(dāng)前時間,startTime 表不開始時間,當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間通過以下公式計算得到:IeftTime = Ι-progress/Rate,其中,IeftTime表示剩余時間。
[0107]在本實施方式中,集群內(nèi)部網(wǎng)絡(luò)是采用局域網(wǎng)高速互聯(lián),因此局域網(wǎng)內(nèi)部的理論傳輸速度是可以通過網(wǎng)絡(luò)設(shè)備自身的參數(shù)獲悉,也就是說可以通過網(wǎng)絡(luò)中的傳輸速率來計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間,每個數(shù)據(jù)塊在集群中的大小是固定的,即blockSize為64MB,當(dāng)局域網(wǎng)帶寬在100M時,集群的數(shù)據(jù)傳送效率約為每秒10兆,一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間可以表示為:tranT ime =blockSize/transRate,其中,transRate表不數(shù)據(jù)傳送效率,transT ime表不傳輸時間。
[0108]第二排列子模塊113,用于如果所述剩余時間小于所述傳輸時間,則取消此次數(shù)據(jù)塊的傳輸操作并將所述當(dāng)前節(jié)點作為失敗節(jié)點添加到失敗隊列中,如果所述剩余時間大于所述傳輸時間,則將所述當(dāng)前節(jié)點添加到所述節(jié)點隊列中并按照順序排列。
[0109]請繼續(xù)參閱圖5,選取模塊12,用于根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù)。
[0110]在本實施方式中,選取模塊12具體包括第一選擇子模塊121、第二選擇子模塊122、判斷子模塊123這三個子模塊,如圖7所示。
[0111]請參閱圖7,為本發(fā)明一實施方式中圖5所示選取模塊12的內(nèi)部結(jié)構(gòu)示意圖。
[0112]第一選擇子模塊121,用于讀取最新更新的所述節(jié)點隊列(NodeQueue)中的信息,選出在所述節(jié)點隊列中位于隊首位置的節(jié)點作為目標(biāo)節(jié)點。
[0113]在本實施方式中,目標(biāo)節(jié)點是作業(yè)任務(wù)額外完成時間最小且擁有足夠的時間完成任務(wù)數(shù)據(jù)本地化。
[0114]第二選擇子模塊122,用于輪詢所述失敗隊列,如果所述失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則結(jié)束算法,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。
[0115]在本實施方式中,運(yùn)行失敗的作業(yè)在集群內(nèi)擁有較高的優(yōu)先級,作業(yè)失敗后可以快速的被重新分配資源,從而提高作業(yè)的執(zhí)行進(jìn)度,集群會維護(hù)一個失敗作業(yè)(failedTask)的隊列,即失敗隊列,集群會為失敗任務(wù)賦予最高的優(yōu)先級,若失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與目標(biāo)節(jié)點(AimNode)進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則算法結(jié)束,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)(ReadyTask)。
[0116]判斷子模塊123,用于如果所述失敗隊列為空,則在已提交但未分配資源的提交作業(yè)隊列中選擇作業(yè),并將符合選擇條件的作業(yè)的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果在未執(zhí)行任務(wù)中存在本地化任務(wù)則結(jié)束算法,如果在未執(zhí)行任務(wù)中不存在本地化任務(wù)則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。
[0117]在本實施方式中,如果預(yù)備作業(yè)(ReadyTask)為空,則表示當(dāng)前集群沒有失敗任務(wù)存在,于是在已提交但未分配資源的提交作業(yè)隊列(SubmitQueue)中選擇作業(yè),如果存在符合條件的作業(yè),就將此任務(wù)與之前所選出的目標(biāo)節(jié)點(AimNode)的數(shù)據(jù)進(jìn)行本地性判斷,如果未執(zhí)行任務(wù)中存在本地化任務(wù),則算法結(jié)束,反之,則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)(ReadyTask)。
[0118]請繼續(xù)參閱圖5,調(diào)度模塊13,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。
[0119]在本實施方式中,調(diào)度模塊13具體包括第一標(biāo)記子模塊131、第二標(biāo)記子模塊132、第一傳輸子模塊133、第二傳輸子模塊134、分配子模塊135這五個子模塊,如圖8所不。
[0120]請參閱圖8,為本發(fā)明一實施方式中圖5所示調(diào)度模塊13的內(nèi)部結(jié)構(gòu)示意圖。
[0121 ]第一標(biāo)記子模塊131,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合。
[0122]在本實施方式中,通過調(diào)度算法找到的目標(biāo)節(jié)點和預(yù)備作業(yè)任務(wù),通過作業(yè)對應(yīng)的TaskInProgress來獲取作業(yè)所需資源的相關(guān)的元數(shù)據(jù)信息,通過獲取相關(guān)數(shù)據(jù)塊所在的目標(biāo)位置信息集來確定需要進(jìn)行數(shù)據(jù)傳輸?shù)墓?jié)點,在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合,記為 SourceNodes。
[0123]第二標(biāo)記子模塊132,用于根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點。
[0124]在本實施方式中,通過讀取配置信息,得到網(wǎng)絡(luò)環(huán)境配置情況,判斷與目標(biāo)節(jié)點AimNode最近的預(yù)備作業(yè)的數(shù)據(jù)文件所在的位置,Hadoop中節(jié)點與數(shù)據(jù)文件存在以下的四種可能:位于同一個節(jié)點,即數(shù)據(jù)已經(jīng)完成了本地化操作;位于同一個機(jī)架,不同節(jié)點;位于同一個中心的其他機(jī)架上;位于不同的數(shù)據(jù)中心。這四種情況,數(shù)據(jù)進(jìn)行傳輸?shù)某杀臼遣煌模砸罁?jù)數(shù)據(jù)不同的存儲位置,確定對其中哪一個數(shù)據(jù)塊進(jìn)行網(wǎng)絡(luò)傳輸操作。數(shù)據(jù)文件位置不同,所造成的傳輸成本不同,因此依據(jù)傳輸成本大小,來為其確定不同的權(quán)值。在本實施方式中,根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點。
[0125]第一傳輸子模塊133,用于將所述預(yù)備作業(yè)任務(wù)運(yùn)行所需的數(shù)據(jù)信息通過集群網(wǎng)絡(luò)傳輸?shù)剿瞿繕?biāo)節(jié)點。
[0126]在本實施方式中,通過在第二標(biāo)記子模塊132的計算,從目標(biāo)位置信息集中選擇一個距離目標(biāo)節(jié)點最近節(jié)點,記為源節(jié)點(SourceNode),將目標(biāo)任務(wù)所需的輸入數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)侥繕?biāo)節(jié)點上。
[0127]第二傳輸子模塊134,用于通過分布式文件系統(tǒng)來管理傳輸?shù)剿瞿繕?biāo)節(jié)點的數(shù)據(jù)文件。
[0128]在本實施方式中,更新JobTracker的文件信息,通過分布式文件系統(tǒng)(HadoopDistributed File System,HDFS)來管理通過傳輸?shù)竭_(dá)目標(biāo)節(jié)點的數(shù)據(jù)文件。
[0129]分配子模塊135,用于當(dāng)所述目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,在心跳周期內(nèi)使用指令通知主節(jié)點為所述目標(biāo)節(jié)點分配所述預(yù)備作業(yè)任務(wù)中的新作業(yè),并將所述新作業(yè)調(diào)度到指定位置。
[0130]在本實施方式中,當(dāng)目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,會在心跳周期內(nèi),使用指令通知主節(jié)點為目標(biāo)節(jié)點分配新的作業(yè),此時,將ReadyTask中的作業(yè)調(diào)度到指定位置,此作業(yè)所需文件完成傳輸,保存在了本地,此時此任務(wù)相當(dāng)于已經(jīng)完成了數(shù)據(jù)本地化操作,無需等待,可以直接運(yùn)行。
[0131]本發(fā)明所提供的一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)10,能縮短已提交作業(yè)在集群中的等待時間,降低作業(yè)的失敗率,提高節(jié)點的執(zhí)行效率,提高資源的使用率。
[0132]值得注意的是,上述實施例中,所包括的各個單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。
[0133]另外,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述各實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,相應(yīng)的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中,所述的存儲介質(zhì),如R0M/RAM、磁盤或光盤等。
[0134]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種基于關(guān)鍵資源數(shù)據(jù)預(yù)處理的資源調(diào)度方法,其特征在于,所述基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法包括: 在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列; 根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù); 通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。2.如權(quán)利要求1所述的基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,其特征在于,所述在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列的步驟具體包括: 在集群的每一個心跳周期中,利用集群內(nèi)的從節(jié)點向集群內(nèi)的主節(jié)點發(fā)送的心跳信息來確定節(jié)點是否有空閑資源,并在有空閑資源時將擁有空閑資源的節(jié)點加入到所述節(jié)點隊列中并按照順序排列; 在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間以及計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間; 如果所述剩余時間小于所述傳輸時間,則取消此次數(shù)據(jù)塊的傳輸操作并將所述當(dāng)前節(jié)點作為失敗節(jié)點添加到失敗隊列中,如果所述剩余時間大于所述傳輸時間,則將所述當(dāng)前節(jié)點添加到所述節(jié)點隊列中并按照順序排列。3.如權(quán)利要求2所述的基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,其特征在于,所述根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù)的步驟具體包括: 讀取最新更新的所述節(jié)點隊列中的信息,選出在所述節(jié)點隊列中位于隊首位置的節(jié)點作為目標(biāo)節(jié)點; 輪詢所述失敗隊列,如果所述失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則結(jié)束算法,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù); 如果所述失敗隊列為空,則在已提交但未分配資源的提交作業(yè)隊列中選擇作業(yè),并將符合選擇條件的作業(yè)的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果在未執(zhí)行任務(wù)中存在本地化任務(wù)則結(jié)束算法,如果在未執(zhí)行任務(wù)中不存在本地化任務(wù)則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。4.如權(quán)利要求3所述的基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度方法,其特征在于,所述通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行的步驟具體包括: 通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合;根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點; 將所述預(yù)備作業(yè)任務(wù)運(yùn)行所需的數(shù)據(jù)信息通過集群網(wǎng)絡(luò)傳輸?shù)剿瞿繕?biāo)節(jié)點; 通過分布式文件系統(tǒng)來管理傳輸?shù)剿瞿繕?biāo)節(jié)點的數(shù)據(jù)文件; 當(dāng)所述目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,在心跳周期內(nèi)使用指令通知主節(jié)點為所述目標(biāo)節(jié)點分配所述預(yù)備作業(yè)任務(wù)中的新作業(yè),并將所述新作業(yè)調(diào)度到指定位置。5.一種基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng),其特征在于,所述基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng)包括: 生成模塊,用于在集群執(zhí)行作業(yè)過程中生成節(jié)點隊列; 選取模塊,用于根據(jù)所述生成節(jié)點隊列選取目標(biāo)節(jié)點以及預(yù)備作業(yè)任務(wù); 調(diào)度模塊,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息調(diào)度所述預(yù)備作業(yè)任務(wù)中的作業(yè)進(jìn)行執(zhí)行。6.如權(quán)利要求5所述的基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng),其特征在于,所述生成模塊具體包括: 第一排列子模塊,用于在集群的每一個心跳周期中,利用集群內(nèi)的從節(jié)點向集群內(nèi)的主節(jié)點發(fā)送的心跳信息來確定節(jié)點是否有空閑資源,并在有空閑資源時將擁有空閑資源的節(jié)點加入到所述節(jié)點隊列中并按照順序排列; 計算子模塊,用于在沒有空閑資源時,利用節(jié)點釋放資源的速度來計算當(dāng)前節(jié)點的作業(yè)完成所需的剩余時間以及計算一個作業(yè)所需的數(shù)據(jù)塊在所述當(dāng)前節(jié)點中傳輸?shù)膫鬏敃r間; 第二排列子模塊,用于如果所述剩余時間小于所述傳輸時間,則取消此次數(shù)據(jù)塊的傳輸操作并將所述當(dāng)前節(jié)點作為失敗節(jié)點添加到失敗隊列中,如果所述剩余時間大于所述傳輸時間,則將所述當(dāng)前節(jié)點添加到所述節(jié)點隊列中并按照順序排列。7.如權(quán)利要求6所述的基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng),其特征在于,所述選取模塊具體包括: 第一選擇子模塊,用于讀取最新更新的所述節(jié)點隊列中的信息,選出在所述節(jié)點隊列中位于隊首位置的節(jié)點作為目標(biāo)節(jié)點; 第二選擇子模塊,用于輪詢所述失敗隊列,如果所述失敗隊列不為空,則從中選擇失敗次數(shù)最多的任務(wù),將選取出的失敗次數(shù)最多的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果是本地節(jié)點任務(wù)則結(jié)束算法,如果尚未完成本地化操作則將選取的任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù); 判斷子模塊,用于如果所述失敗隊列為空,則在已提交但未分配資源的提交作業(yè)隊列中選擇作業(yè),并將符合選擇條件的作業(yè)的任務(wù)與所述目標(biāo)節(jié)點進(jìn)行數(shù)據(jù)本地性判斷,如果在未執(zhí)行任務(wù)中存在本地化任務(wù)則結(jié)束算法,如果在未執(zhí)行任務(wù)中不存在本地化任務(wù)則將未執(zhí)行任務(wù)標(biāo)記為預(yù)備作業(yè)任務(wù)。8.如權(quán)利要求7所述的基于關(guān)鍵資源和數(shù)據(jù)預(yù)處理的資源調(diào)度系統(tǒng),其特征在于,所述調(diào)度模塊具體包括: 第一標(biāo)記子模塊,用于通過調(diào)度算法尋找所述目標(biāo)節(jié)點,并在所述預(yù)備作業(yè)任務(wù)中讀取相應(yīng)的任務(wù)信息,根據(jù)所述任務(wù)信息確定需要進(jìn)行數(shù)據(jù)傳輸?shù)乃泄?jié)點并將所述所有節(jié)點標(biāo)記為節(jié)點集合; 第二標(biāo)記子模塊,用于根據(jù)當(dāng)前集群的拓?fù)浣Y(jié)構(gòu),選擇距離所述預(yù)備作業(yè)任務(wù)最近的節(jié)點為源節(jié)點; 第一傳輸子模塊,用于將所述預(yù)備作業(yè)任務(wù)運(yùn)行所需的數(shù)據(jù)信息通過集群網(wǎng)絡(luò)傳輸?shù)剿瞿繕?biāo)節(jié)點; 第二傳輸子模塊,用于通過分布式文件系統(tǒng)來管理傳輸?shù)剿瞿繕?biāo)節(jié)點的數(shù)據(jù)文件; 分配子模塊,用于當(dāng)所述目標(biāo)節(jié)點上的作業(yè)執(zhí)行結(jié)束后,在心跳周期內(nèi)使用指令通知主節(jié)點為所述目標(biāo)節(jié)點分配所述預(yù)備作業(yè)任務(wù)中的新作業(yè),并將所述新作業(yè)調(diào)度到指定位 置。
【文檔編號】G06F9/48GK105868008SQ201610169538
【公開日】2016年8月17日
【申請日】2016年3月23日
【發(fā)明人】劉剛, 李旭煒, 毛睿
【申請人】深圳大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1