一種Hadoop集群中的作業(yè)調(diào)度方法和作業(yè)調(diào)度器的制造方法
【專利摘要】本發(fā)明公開了一種Hadoop集群中的作業(yè)調(diào)度方法和作業(yè)調(diào)度器,該方法包括以下步驟:S1、獲取Hadoop集群中的各個資源池的資源使用量,根據(jù)各個資源池的資源使用量,選擇當前資源池;S2、選擇所述當前資源池中任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè);S3、判斷所述當前作業(yè)是否是小作業(yè),如果是,則執(zhí)行步驟S4;否則,執(zhí)行步驟S5;S4、從所述當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源;S5、根據(jù)所述當前資源池中的空閑資源的位置以及所述當前作業(yè)的等待時間,向所述當前作業(yè)分配空閑資源。本發(fā)明能夠避免將非本地節(jié)點的空閑資源資源分配給小作業(yè)帶來的數(shù)據(jù)傳輸延遲和帶寬消耗,提高了小作業(yè)的運行效率和系統(tǒng)的整體性能。
【專利說明】一種Hadoop集群中的作業(yè)調(diào)度方法和作業(yè)調(diào)度器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,具體涉及一種Hadoop集群中的作業(yè)調(diào)度方法和作業(yè)調(diào)度器。
【背景技術(shù)】
[0002]Hadoop集群是一種具有高可靠性和良好的擴展性的分布式系統(tǒng),在數(shù)據(jù)處理領(lǐng)域得到了廣泛的應(yīng)用。在Hadoop集群得到應(yīng)用的初期階段,使用FIFO(First In First Out,先入先出)調(diào)度機制分配任務(wù),將所有作業(yè)統(tǒng)一提交到一個隊列中,并按照提交的先后順序依次運行隊列中的作業(yè)。但隨著Hadoop用戶及應(yīng)用程序種類的不斷增加,F(xiàn)IFO調(diào)度機制無法有效地利用集群中的資源,也不能滿足不同應(yīng)用程序的服務(wù)質(zhì)量要求。
[0003]現(xiàn)有技術(shù)中,通常使用公平調(diào)度機制分配任務(wù),按照資源池來組織作業(yè),使得每個用戶擁有獨立的資源池,并通過設(shè)置各種約束條件防止單個用戶或者應(yīng)用程序獨占資源。
[0004]然而,當集群中出現(xiàn)很多小作業(yè)時,會出現(xiàn)滿足資源條件的節(jié)點不是本地節(jié)點的情況,導致整個集群的吞吐率會出現(xiàn)明顯的下降。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種Hadoop集群中的作業(yè)調(diào)度方法和作業(yè)調(diào)度器,用以解決現(xiàn)有技術(shù)中小作業(yè)調(diào)度影響集群的整體吞吐率的問題
[0006]本發(fā)明提供了一種Hadoop集群中的作業(yè)調(diào)度方法,包括以下步驟:
[0007]S1、獲取Hadoop集群中的各個資源池的資源使用量,根據(jù)各個資源池的資源使用量,選擇當前資源池;
[0008]S2、選擇所述當前資源池中任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè);
[0009]S3、判斷所述當前作業(yè)是否是小作業(yè),如果是,則執(zhí)行步驟S4 ;否則,執(zhí)行步驟S5 ;
[0010]S4、從所述當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源;
[0011]S5、根據(jù)所述當前資源池中的空閑資源的位置以及所述當前作業(yè)的等待時間,向所述當前作業(yè)分配空閑資源。
[0012]可選地,所述根據(jù)各個資源池的資源使用量,選擇當前資源池,具體為:
[0013]判斷所述Hadoop集群中是否存在資源使用量小于預定的最小資源使用量的資源池,如果是,則選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;否則,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
[0014]可選地,所述選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池之前,還包括:
[0015]根據(jù)最小資源使用量和各個資源池中正在運行的任務(wù)數(shù)量,計算所述各個資源池的資源使用率;
[0016]所述選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池之前,還包括:
[0017]根據(jù)各個資源池中的任務(wù)的優(yōu)先級,計算所述各個資源池的任務(wù)權(quán)重比。
[0018]可選地,所述選擇所述當前資源池中任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè)之前,還包括:
[0019]獲取當前資源池中的各個作業(yè)的任務(wù)權(quán)重比。
[0020]可選地,所述步驟S5,具體包括:
[0021]S51、對當前資源池中各個作業(yè)的等待時間進行初始化,并對各個作業(yè)的等待時間進行計時;
[0022]S52、判斷當前資源池中是否存在空閑資源,如果是,則執(zhí)行步驟S53 ;否則,結(jié)束流程;
[0023]S53、判斷當前資源池中的空閑資源是否為本地節(jié)點的空閑資源,如果是,則執(zhí)行步驟S54 ;否則,執(zhí)行步驟S55 ;
[0024]S54、將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);
[0025]S55、對當前資源池中各個作業(yè)的等待時間進行判斷,如果等待時間小于第一預設(shè)時長,則執(zhí)行步驟S56 ;如果等待時間不小于第一預設(shè)時長且小于第二預設(shè)時長,則執(zhí)行步驟S57 ;如果等待時間不小于第二預設(shè)時長,則執(zhí)行步驟S54 ;
[0026]S56、將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并返回步驟S52 ;
[0027]S57、判斷當前資源池中的空閑資源是否為本機架節(jié)點的空閑資源,如果是,則執(zhí)行步驟S54 ;否則,執(zhí)行步驟S56。
[0028]本發(fā)明還提供了一種Hadoop集群中的作業(yè)調(diào)度器,包括:
[0029]第一獲取模塊,用于獲取Hadoop集群中的各個資源池的資源使用量;
[0030]第一選擇模塊,根據(jù)所述第一獲取模塊獲取到的各個資源池的資源使用量,選擇當前資源池;
[0031]第二選擇模塊,用于從所述第一選擇模塊選擇出的所述當前資源池中,選擇任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè);
[0032]判斷模塊,用于判斷所述第二選擇模塊選擇出的所述當前作業(yè)是否是小作業(yè);
[0033]第三選擇模塊,用于在所述判斷模塊判斷出當前作業(yè)不是小作業(yè)時,從所述當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源;
[0034]分配模塊,用于在所述判斷模塊判斷出當前作業(yè)是小作業(yè)時,根據(jù)所述當前資源池中的空閑資源的位置以及所述當前作業(yè)的等待時間,向所述當前作業(yè)分配空閑資源。
[0035]可選地,所述第一選擇模塊,包括:
[0036]第一判斷子模塊,用于判斷所述Hadoop集群中是否存在資源使用量小于預定的最小資源使用量的資源池;
[0037]選擇子模塊,用于在所述第一判斷子模塊判斷出所述Hadoop集群中存在資源使用量小于最小資源使用量的資源池時,選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;在所述第一判斷子模塊判斷出所述Hadoop集群中不存在資源使用量小于最小資源使用量的資源池時,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
[0038]可選地,所述第一選擇模塊,還包括:
[0039]第一計算子模塊,用于根據(jù)最小資源使用量和各個資源池中正在運行的任務(wù)數(shù)量,計算所述各個資源池的資源使用率;
[0040]第二計算子模塊,用于根據(jù)各個資源池中的任務(wù)的優(yōu)先級,計算所述各個資源池的任務(wù)權(quán)重比;
[0041]所述選擇子模塊,具體用于在所述第一判斷子模塊判斷出所述Hadoop集群中存在資源使用量小于最小資源使用量的資源池時,根據(jù)所述第一計算子模塊計算得到的各個資源池的資源使用率,選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;在所述第一判斷子模塊判斷出所述Hadoop集群中不存在資源使用量小于最小資源使用量的資源池時,根據(jù)所述第二計算子模塊計算出的各個資源池的任務(wù)權(quán)重比,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
[0042]可選地,所述的作業(yè)調(diào)度器,還包括:
[0043]第二獲取模塊,用于獲取當前資源池中的各個作業(yè)的任務(wù)權(quán)重比;
[0044]所述第二選擇模塊,具體用于根據(jù)所述第二獲取模塊獲取到的所述當前資源池中的各個作業(yè)的任務(wù)權(quán)重比,從所述第一選擇模塊選擇出的所述當前資源池中,選擇任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè)。
[0045]可選地,所述分配模塊,包括:
[0046]初始化子模塊,用于對當前資源池中各個作業(yè)的等待時間進行初始化;
[0047]計時子模塊,用于在所述初始化子模塊對各個作業(yè)的等待時間進行初始化后,對各個作業(yè)的等待時間進行計時;
[0048]第二判斷子模塊,用于判斷當前資源池中是否存在空閑資源;
[0049]第三判斷子模塊,用于在所述第二判斷子模塊判斷出當前資源池中存在空閑資源,判斷當前資源池中的空閑資源是否為本地節(jié)點的空閑資源;
[0050]第四判斷子模塊,用于在所述第三判斷子模塊判斷出當前資源池中的空閑資源不是本地節(jié)點的空閑資源時,對當前資源池中各個作業(yè)的等待時間進行判斷;
[0051]第五判斷子模塊,用于在所述第四判斷子模塊判斷出等待時間不小于第一預設(shè)時長且小于第二預設(shè)時長時,判斷當前資源池中的空閑資源是否為本機架節(jié)點的空閑資源;
[0052]分配子模塊,用于在所述第三判斷子模塊判斷出當前資源池中的空閑資源是本地節(jié)點的空閑資源時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在所述第四判斷子模塊判斷出等待時間小于第一預設(shè)時長時,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并觸發(fā)所述第二判斷子模塊;在所述第四判斷子模塊判斷出等待時間不小于第二預設(shè)時長時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在所述第五判斷子模塊判斷出當前資源池中的空閑資源是本機架節(jié)點的空閑資源時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在所述第五判斷子模塊判斷出當前資源池中的空閑資源不是本機架節(jié)點的空閑資源時,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并觸發(fā)所述第二判斷子模塊。
[0053]本發(fā)明將本地節(jié)點的空閑資源資源分配給小作業(yè),避免將非本地節(jié)點的空閑資源資源分配給小作業(yè)帶來的數(shù)據(jù)傳輸延遲和帶寬消耗,縮短了小作業(yè)的執(zhí)行時間,優(yōu)化了小作業(yè)的選擇策略,提高了小作業(yè)的運行效率,增加了 Hadoop集群的整體吞吐率,提高了系統(tǒng)的整體性能。
【專利附圖】
【附圖說明】
[0054]圖1為本發(fā)明實施例中的一種Hadoop集群中的作業(yè)調(diào)度方法流程圖;
[0055]圖2為本發(fā)明實施例中的一種分配空閑資源的方法流程圖;
[0056]圖3為本發(fā)明實施例中的一種Hadoop集群中的作業(yè)調(diào)度器的結(jié)構(gòu)示意圖;
[0057]圖4為本發(fā)明實施例中的一種分配模塊360的結(jié)構(gòu)示意圖。
【具體實施方式】
[0058]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0059]需要說明的是,如果不沖突,本發(fā)明實施例以及實施例中的各個特征可以相互結(jié)合,均在本發(fā)明的保護范圍之內(nèi)。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0060]本發(fā)明實施例中提出了一種Hadoop集群中的作業(yè)調(diào)度方法,在安裝Hadoop組件并開啟HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))服務(wù)后,使用資源池來組織作業(yè),并將集群資源分配到資源池中。每個用戶擁有一個獨立的資源池,以使所有用戶都能獲得等同的集群資源。
[0061 ] 在完成上述設(shè)置后,可對Hadoop集群進行作業(yè)調(diào)度,具體流程如圖1所示,包括以下步驟:
[0062]步驟101,獲取Hadoop集群中的各個資源池的資源使用量。
[0063]步驟102,根據(jù)Hadoop集群中的各個資源池的資源使用量,判斷Hadoop集群中是否存在資源使用量小于預定的最小資源使用量的資源池,如果是,則執(zhí)行步驟103 ;否則,執(zhí)行步驟105。
[0064]步驟103,根據(jù)最小資源使用量和各個資源池中正在運行的任務(wù)數(shù)量,計算各個資源池的資源使用率。
[0065]具體地,可以獲取Hadoop集群中的各個資源池中正在運行的任務(wù)數(shù)量與最小資源使用量的比值,將該比值作為各個資源池的資源使用率。
[0066]步驟104,選擇Hadoop集群中資源使用率最低的資源池作為當前資源池,并執(zhí)行步驟107。
[0067]具體地,可以對各個隊列的資源使用率進行對比和排序,選擇資源使用率最低的隊列作為當前隊列。
[0068]步驟105,根據(jù)各個資源池中的任務(wù)的優(yōu)先級,計算各個資源池的任務(wù)權(quán)重比。
[0069]具體地,可以獲取Hadoop集群中的各個資源池中所有正在運行的任務(wù)的優(yōu)先級之和與各個資源池中所有任務(wù)的優(yōu)先級之和的比值,將該比值作為各個資源池的任務(wù)權(quán)重t匕。其中,各個任務(wù)的優(yōu)先級是預先設(shè)定的。
[0070]步驟106,選擇Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池,并執(zhí)行步驟107。
[0071]步驟107,獲取當前資源池中的各個作業(yè)的任務(wù)權(quán)重比。
[0072]具體地,可以獲取當前資源池中的各個作業(yè)正在運行的任務(wù)數(shù)量與各個作業(yè)的權(quán)重的比值,將該比值作為各個作業(yè)的任務(wù)權(quán)重比。其中,各個作業(yè)的權(quán)重是預先設(shè)定的。
[0073]步驟108,選擇當前資源池中任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè)。
[0074]步驟109,判斷當前作業(yè)是否是小作業(yè),如果是,則執(zhí)行步驟111 ;否則,執(zhí)行步驟110。
[0075]具體地,可以判斷當前作業(yè)對應(yīng)的標志位是否為預設(shè)值,如果是,則確定當前作業(yè)是小作業(yè);否則,確定當前作業(yè)不是小作業(yè)。例如,預設(shè)值為“true”。
[0076]相應(yīng)地,本發(fā)明實施例中,在提交小作業(yè)時,設(shè)置該小作業(yè)對應(yīng)的標志位為預設(shè)值。
[0077]步驟110,從當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源。
[0078]步驟111,根據(jù)當前資源池中的空閑資源的位置以及當前作業(yè)的等待時間,向當前作業(yè)分配空閑資源。
[0079]具體地,向當前作業(yè)分配空閑資源的具體流程,如圖2所示,包括以下步驟:
[0080]步驟201,對當前資源池中各個作業(yè)的等待時間進行初始化,并對各個作業(yè)的等待時間進行計時。
[0081]步驟202,判斷當前資源池中是否存在空閑資源,如果是,則執(zhí)行步驟203 ;否則,
結(jié)束流程。
[0082]步驟203,判斷當前資源池中的空閑資源是否為本地節(jié)點的空閑資源,如果是,則執(zhí)行步驟204 ;否則,執(zhí)行步驟205。
[0083]步驟204,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù)。
[0084]步驟205,對當前資源池中各個作業(yè)的等待時間進行判斷,如果等待時間小于第一預設(shè)時長,則執(zhí)行步驟206 ;如果等待時間不小于第一預設(shè)時長且小于第二預設(shè)時長,則執(zhí)行步驟207 ;如果等待時間不小于第二預設(shè)時長,則執(zhí)行步驟204。
[0085]其中,第一預設(shè)時長小于第二預設(shè)時長。
[0086]步驟206,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并返回步驟202。
[0087]步驟207,判斷當前資源池中的空閑資源是否為本機架節(jié)點的空閑資源,如果是,則執(zhí)行步驟204 ;否則,執(zhí)行步驟206。
[0088]本發(fā)明實施例將本地節(jié)點的空閑資源資源分配給小作業(yè),避免將非本地節(jié)點的空閑資源資源分配給小作業(yè)帶來的數(shù)據(jù)傳輸延遲和帶寬消耗,縮短了小作業(yè)的執(zhí)行時間,優(yōu)化了小作業(yè)的選擇策略,提高了小作業(yè)的運行效率,增加了 Hadoop集群的整體吞吐率,提高了系統(tǒng)的整體性能。
[0089]基于上述作業(yè)調(diào)度方法,本發(fā)明實施例還提出了一種Hadoop集群中的作業(yè)調(diào)度器,如圖3所示,包括:
[0090]第一獲取模塊310,用于獲取Hadoop集群中的各個資源池的資源使用量;
[0091]第一選擇模塊320,根據(jù)第一獲取模塊310獲取到的各個資源池的資源使用量,選擇當前資源池;
[0092]第二選擇模塊330,用于從第一選擇模塊320選擇出的所述當前資源池中,選擇任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè);
[0093]判斷模塊340,用于判斷第二選擇模塊330選擇出的所述當前作業(yè)是否是小作業(yè);
[0094]第三選擇模塊350,用于在判斷模塊340判斷出當前作業(yè)不是小作業(yè)時,從所述當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源;
[0095]分配模塊360,用于在判斷模塊340判斷出當前作業(yè)是小作業(yè)時,根據(jù)所述當前資源池中的空閑資源的位置以及所述當前作業(yè)的等待時間,向所述當前作業(yè)分配空閑資源。
[0096]具體地,上述第一選擇模塊320,包括:
[0097]第一判斷子模塊321,用于判斷所述Hadoop集群中是否存在資源使用量小于預定的最小資源使用量的資源池;
[0098]選擇子模塊322,用于在第一判斷子模塊321判斷出所述Hadoop集群中存在資源使用量小于最小資源使用量的資源池時,選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;在第一判斷子模塊321判斷出所述Hadoop集群中不存在資源使用量小于最小資源使用量的資源池時,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
[0099]進一步,上述第一選擇模塊320,還包括:
[0100]第一計算子模塊323,用于根據(jù)最小資源使用量和各個資源池中正在運行的任務(wù)數(shù)量,計算各個資源池的資源使用率;
[0101]具體地,第一計算子模塊323,具體用于獲取Hadoop集群中的各個資源池中正在運行的任務(wù)數(shù)量與最小資源使用量的比值,將該比值作為各個資源池的資源使用率。
[0102]第二計算子模塊324,用于根據(jù)各個資源池中的任務(wù)的優(yōu)先級,計算各個資源池的任務(wù)權(quán)重比;
[0103]具體地,第二計算子模塊324,具體用于獲取Hadoop集群中的各個資源池中所有正在運行的任務(wù)的優(yōu)先級之和與各個資源池中所有任務(wù)的優(yōu)先級之和的比值,將該比值作為各個資源池的任務(wù)權(quán)重比。
[0104]相應(yīng)地,上述選擇子模塊322,具體用于在第一判斷子模塊321判斷出所述Hadoop集群中存在資源使用量小于最小資源使用量的資源池時,根據(jù)第一計算子模塊323計算得到的各個資源池的資源使用率,選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;在第一判斷子模塊321判斷出所述Hadoop集群中不存在資源使用量小于最小資源使用量的資源池時,根據(jù)第二計算子模塊324計算出的各個資源池的任務(wù)權(quán)重比,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
[0105]進一步地,上述作業(yè)調(diào)度器,還包括:
[0106]第二獲取模塊370,用于獲取當前資源池中的各個作業(yè)的任務(wù)權(quán)重比;
[0107]相應(yīng)地,上述第二選擇模塊330,具體用于根據(jù)第二獲取模塊370獲取到的所述當前資源池中的各個作業(yè)的任務(wù)權(quán)重比,從第一選擇模塊320選擇出的所述當前資源池中,選擇任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè)。
[0108]進一步地,上述分配模塊360,如圖4所示,包括:
[0109]初始化子模塊361,用于對當前資源池中各個作業(yè)的等待時間進行初始化;
[0110]計時子模塊362,用于在初始化子模塊361對各個作業(yè)的等待時間進行初始化后,對各個作業(yè)的等待時間進行計時;
[0111]第二判斷子模塊363,用于判斷當前資源池中是否存在空閑資源;
[0112]第三判斷子模塊364,用于在第二判斷子模塊363判斷出當前資源池中存在空閑資源,判斷當前資源池中的空閑資源是否為本地節(jié)點的空閑資源;
[0113]第四判斷子模塊365,用于在第三判斷子模塊364判斷出當前資源池中的空閑資源不是本地節(jié)點的空閑資源時,對計時子模塊362計時得到的當前資源池中各個作業(yè)的等待時間進行判斷;
[0114]第五判斷子模塊366,用于在第四判斷子模塊365判斷出等待時間不小于第一預設(shè)時長且小于第二預設(shè)時長時,判斷當前資源池中的空閑資源是否為本機架節(jié)點的空閑資源;
[0115]分配子模塊367,用于在第三判斷子模塊364判斷出當前資源池中的空閑資源是本地節(jié)點的空閑資源時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在第四判斷子模塊365判斷出等待時間小于第一預設(shè)時長時,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并觸發(fā)第二判斷子模塊363 ;在第四判斷子模塊365判斷出等待時間不小于第二預設(shè)時長時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在第五判斷子模塊366判斷出當前資源池中的空閑資源是本機架節(jié)點的空閑資源時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在第五判斷子模塊366判斷出當前資源池中的空閑資源不是本機架節(jié)點的空閑資源時,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并觸發(fā)第二判斷子模塊363。
[0116]本發(fā)明實施例將本地節(jié)點的空閑資源資源分配給小作業(yè),避免將非本地節(jié)點的空閑資源資源分配給小作業(yè)帶來的數(shù)據(jù)傳輸延遲和帶寬消耗,縮短了小作業(yè)的執(zhí)行時間,優(yōu)化了小作業(yè)的選擇策略,提高了小作業(yè)的運行效率,增加了 Hadoop集群的整體吞吐率,提高了系統(tǒng)的整體性能。
[0117]結(jié)合本文中所公開的實施例描述的方法中的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或【技術(shù)領(lǐng)域】內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
[0118]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。
【權(quán)利要求】
1.一種Hadoop集群中的作業(yè)調(diào)度方法,其特征在于,包括以下步驟: 51、獲取Hadoop集群中的各個資源池的資源使用量,根據(jù)各個資源池的資源使用量,選擇當前資源池; 52、選擇所述當前資源池中任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè); 53、判斷所述當前作業(yè)是否是小作業(yè),如果是,則執(zhí)行步驟S4;否則,執(zhí)行步驟S5 ; 54、從所述當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源; 55、根據(jù)所述當前資源池中的空閑資源的位置以及所述當前作業(yè)的等待時間,向所述當前作業(yè)分配空閑資源。
2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)各個資源池的資源使用量,選擇當前資源池,具體為: 判斷所述Hadoop集群中是否存在資源使用量小于預定的最小資源使用量的資源池,如果是,則選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;否則,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
3.如權(quán)利要求2所述的方法,其特征在于,所述選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池之前,還包括: 根據(jù)最小資源使用量和各個資源池中正在運行的任務(wù)數(shù)量,計算所述各個資源池的資源使用率; 所述選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池之前,還包括: 根據(jù)各個資源池中的任務(wù)的優(yōu)先級,計算所述各個資源池的任務(wù)權(quán)重比。
4.如權(quán)利要求1所述的方法,其特征在于,所述選擇所述當前資源池中任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè)之前,還包括: 獲取當前資源池中的各個作業(yè)的任務(wù)權(quán)重比。
5.如權(quán)利要求1所述的方法,其特征在于,所述步驟S5,具體包括: 551、對當前資源池中各個作業(yè)的等待時間進行初始化,并對各個作業(yè)的等待時間進行計時; 552、判斷當前資源池中是否存在空閑資源,如果是,則執(zhí)行步驟S53;否則,結(jié)束流程; 553、判斷當前資源池中的空閑資源是否為本地節(jié)點的空閑資源,如果是,則執(zhí)行步驟S54 ;否則,執(zhí)行步驟S55 ; 554、將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù); 555、對當前資源池中各個作業(yè)的等待時間進行判斷,如果等待時間小于第一預設(shè)時長,則執(zhí)行步驟S56 ;如果等待時間不小于第一預設(shè)時長且小于第二預設(shè)時長,則執(zhí)行步驟S57 ;如果等待時間不小于第二預設(shè)時長,則執(zhí)行步驟S54 ; 556、將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并返回步驟S52 ; 557、判斷當前資源池中的空閑資源是否為本機架節(jié)點的空閑資源,如果是,則執(zhí)行步驟S54 ;否則,執(zhí)行步驟S56。
6.一種Hadoop集群中的作業(yè)調(diào)度器,其特征在于,包括: 第一獲取模塊,用于獲取Hadoop集群中的各個資源池的資源使用量; 第一選擇模塊,根據(jù)所述第一獲取模塊獲取到的各個資源池的資源使用量,選擇當前資源池; 第二選擇模塊,用于從所述第一選擇模塊選擇出的所述當前資源池中,選擇任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè); 判斷模塊,用于判斷所述第二選擇模塊選擇出的所述當前作業(yè)是否是小作業(yè); 第三選擇模塊,用于在所述判斷模塊判斷出當前作業(yè)不是小作業(yè)時,從所述當前作業(yè)中選擇一個本地任務(wù),向選擇的本地任務(wù)分配空閑資源; 分配模塊,用于在所述判斷模塊判斷出當前作業(yè)是小作業(yè)時,根據(jù)所述當前資源池中的空閑資源的位置以及所述當前作業(yè)的等待時間,向所述當前作業(yè)分配空閑資源。
7.如權(quán)利要求6所述的作業(yè)調(diào)度器,其特征在于,所述第一選擇模塊,包括: 第一判斷子模塊,用于判斷所述Hadoop集群中是否存在資源使用量小于預定的最小資源使用量的資源池; 選擇子模塊,用于在所述第一判斷子模塊判斷出所述Hadoop集群中存在資源使用量小于最小資源使用量的資源池時,選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;在所述第一判斷子模塊判斷出所述Hadoop集群中不存在資源使用量小于最小資源使用量的資源池時,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
8.如權(quán)利要求7所述的作業(yè)調(diào)度器,其特征在于,所述第一選擇模塊,還包括: 第一計算子模塊,用于根據(jù)最小資源使用量和各個資源池中正在運行的任務(wù)數(shù)量,計算所述各個資源池的資源使用率; 第二計算子模塊,用于根據(jù)各個資源池中的任務(wù)的優(yōu)先級,計算所述各個資源池的任務(wù)權(quán)重比; 所述選擇子模塊,具體用于在所述第一判斷子模塊判斷出所述Hadoop集群中存在資源使用量小于最小資源使用量的資源池時,根據(jù)所述第一計算子模塊計算得到的各個資源池的資源使用率,選擇所述Hadoop集群中資源使用率最低的資源池作為當前資源池;在所述第一判斷子模塊判斷出所述Hadoop集群中不存在資源使用量小于最小資源使用量的資源池時,根據(jù)所述第二計算子模塊計算出的各個資源池的任務(wù)權(quán)重比,選擇所述Hadoop集群中任務(wù)權(quán)重比最小的資源池作為當前資源池。
9.如權(quán)利要求6所述的作業(yè)調(diào)度器,其特征在于,還包括: 第二獲取模塊,用于獲取當前資源池中的各個作業(yè)的任務(wù)權(quán)重比; 所述第二選擇模塊,具體用于根據(jù)所述第二獲取模塊獲取到的所述當前資源池中的各個作業(yè)的任務(wù)權(quán)重比,從所述第一選擇模塊選擇出的所述當前資源池中,選擇任務(wù)權(quán)重比最小的作業(yè)作為當前作業(yè)。
10.如權(quán)利要求6所述的作業(yè)調(diào)度器,其特征在于,所述分配模塊,包括: 初始化子模塊,用于對當前資源池中各個作業(yè)的等待時間進行初始化; 計時子模塊,用于在所述初始化子模塊對各個作業(yè)的等待時間進行初始化后,對各個作業(yè)的等待時間進行計時; 第二判斷子模塊,用于判斷當前資源池中是否存在空閑資源; 第三判斷子模塊,用于在所述第二判斷子模塊判斷出當前資源池中存在空閑資源,判斷當前資源池中的空閑資源是否為本地節(jié)點的空閑資源; 第四判斷子模塊,用于在所述第三判斷子模塊判斷出當前資源池中的空閑資源不是本地節(jié)點的空閑資源時,對當前資源池中各個作業(yè)的等待時間進行判斷; 第五判斷子模塊,用于在所述第四判斷子模塊判斷出等待時間不小于第一預設(shè)時長且小于第二預設(shè)時長時,判斷當前資源池中的空閑資源是否為本機架節(jié)點的空閑資源; 分配子模塊,用于在所述第三判斷子模塊判斷出當前資源池中的空閑資源是本地節(jié)點的空閑資源時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在所述第四判斷子模塊判斷出等待時間小于第一預設(shè)時長時,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并觸發(fā)所述第二判斷子模塊;在所述第四判斷子模塊判斷出等待時間不小于第二預設(shè)時長時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在所述第五判斷子模塊判斷出當前資源池中的空閑資源是本機架節(jié)點的空閑資源時,將當前資源池中的空閑資源分配給當前作業(yè)的任務(wù);在所述第五判斷子模塊判斷出當前資源池中的空閑資源不是本機架節(jié)點的空閑資源時,將前資源池中的空閑資源分配給當前資源池中的其他作業(yè)中的任務(wù),并觸發(fā)所述第二判斷子模塊。
【文檔編號】G06F9/50GK104268018SQ201410486616
【公開日】2015年1月7日 申請日期:2014年9月22日 優(yōu)先權(quán)日:2014年9月22日
【發(fā)明者】宗棟瑞, 郭美思, 吳楠 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司