本發(fā)明涉及數(shù)據(jù)處理,尤其涉及數(shù)據(jù)存取的任務調(diào)度。
背景技術:
隨著計算機、手機、平板電腦等終端設備的普及,在人們對這些終端設備、以及互聯(lián)網(wǎng)的使用過程中產(chǎn)生了極大量的數(shù)據(jù),這些數(shù)據(jù)的集合作為可利用的信息資產(chǎn)又被稱作為大數(shù)據(jù)(bigdata)。為了應對針對海量增長的大數(shù)據(jù)進行有效地捕捉、管理、和處理的需求,大數(shù)據(jù)處理平臺應運而生。
大數(shù)據(jù)處理平臺被用于根據(jù)當前集群中各個節(jié)點上的資源(例如cpu的空閑狀況、內(nèi)存的剩余狀況)以及根據(jù)各個用戶作業(yè)的服務質(zhì)量(qualityofservice,qos)的需求,在資源和作業(yè)之間做出最優(yōu)的配置。換句話說,大數(shù)據(jù)處理平臺所進行的上述調(diào)度由兩部分組成:任務調(diào)度、以及資源分配。其中,“任務調(diào)度”指的是,根據(jù)分配給作業(yè)的節(jié)點集的空閑狀況,在其中某節(jié)點存在空閑計算資源時,選擇該作業(yè)中的一個合適的任務放在該節(jié)點上運行。而如何減少作業(yè)的執(zhí)行時間是進行任務調(diào)度時所需要考慮的關鍵問題。
目前已存在一些現(xiàn)有技術提出了針對如何減少作業(yè)的執(zhí)行時間的優(yōu)化方案,其大體上被分為兩類:
一類是利用讀取本地磁盤的速度通常比讀取遠端磁盤的速度更快的這一特點,使得數(shù)據(jù)更多地在本地使用從而降低作業(yè)的執(zhí)行時間。例如2010年,mateizaharia等人在proceedingsofthe5theuropeanconferenceoncomputersystems上發(fā)表的“delayscheduling:asimpletechniqueforachievinglocalityandfairnessinclusterscheduling”,該方案在遇到請求任務的節(jié)點無法滿足節(jié)點本地性要求的情況時,先不調(diào)度任務而是等待一段時間,若在等待的時間內(nèi)出現(xiàn)了來自滿足該節(jié)點本地性的計算節(jié)點,則將該任務調(diào)度所述計算節(jié)點,若沒有等到,則為該任務隨機地分配一個請求任務的節(jié)點。然而,這樣的方案僅考慮了數(shù)據(jù)本地性,而沒有考慮不同類型的存儲設備對于輸入輸出密集的任務(i/o-intensive)的執(zhí)行效率的影響,如本領域所知地,在相同條件下固態(tài)硬盤(solidstatedrive,ssd)的存取速度要優(yōu)于機械硬盤(harddiskdrive,hdd),并且一般情況下ssd的價格高于hdd且ssd的使用壽命低于hdd。僅采用一種固定的存儲設備,例如僅采用hdd或僅采用ssd往往難以滿足實際使用時的存儲需求。
另一類是利用將固態(tài)硬盤(solidstatedrive,ssd)和機械硬盤(harddiskdrive,hdd)結合在一起形成異構的存儲環(huán)境,在異構環(huán)境中進行任務調(diào)度。例如,hdfs在hadoop2.3.0版本中引入的異構存儲方式,根據(jù)存儲設備的特征用來滿足上層應用的不同存儲需求,以其中的one_ssd為例,其將任務的一份副本存儲在ssd上,將相同任務的另外兩份副本存儲在hdd上。然而,并沒有一種針對這樣的異構存儲方式的專用任務調(diào)度方法。發(fā)明人發(fā)現(xiàn),在針對上述one_ssd采用傳統(tǒng)任務調(diào)度策略時,盡管已在ssd上存儲了全部任務的副本(任務數(shù)量為900個),卻僅有36.4%的任務數(shù)據(jù)是從ssd上讀取的,剩余63.6%的任務數(shù)據(jù)均是從hdd上讀取的。可見,雖然hdfs已經(jīng)區(qū)分了異構存儲資源,但是采用傳統(tǒng)的任務調(diào)度方式無法完全地發(fā)揮異構存儲資源所帶來的優(yōu)勢。
技術實現(xiàn)要素:
因此,本發(fā)明的目的在于克服上述現(xiàn)有技術的缺陷,提供一種針對異構存儲的任務調(diào)度方法,包括:
1)根據(jù)用戶作業(yè)確定需要執(zhí)行的各個任務;
2)針對擁有計算資源的每一個節(jié)點,根據(jù)每一個所述任務的數(shù)據(jù)的存儲介質(zhì),判斷假使所述任務在所述節(jié)點上執(zhí)行時所述任務的任務類型;
3)根據(jù)各種任務類型的優(yōu)先級,為所述擁有計算資源的每一個節(jié)點設置執(zhí)行所述任務的優(yōu)先順序。
優(yōu)選地,根據(jù)所述方法,其中步驟2)還包括:
2-1)判斷所述擁有計算資源的節(jié)點上是否存儲有所述任務的數(shù)據(jù),以根據(jù)所述任務在所述節(jié)點上執(zhí)行時是否為本地任務,判斷假使所述任務在所述節(jié)點上執(zhí)行時所述任務的任務類型。
優(yōu)選地,根據(jù)所述方法,其中步驟3)包括:
3-1)針對所述擁有計算資源的節(jié)點,對所述各個任務中尚未被執(zhí)行的任務進行以下判斷:
根據(jù)確定的各種任務類型的優(yōu)先級,判斷出優(yōu)先順序最高的任務,以將所述任務作為所述節(jié)點的待執(zhí)行任務;
3-2)執(zhí)行所確定的待執(zhí)行任務。
優(yōu)選地,根據(jù)所述方法,其中步驟3)包括:
3-3)針對所述擁有計算資源的每一個節(jié)點,根據(jù)確定的各種任務類型的優(yōu)先級,分別判斷所述節(jié)點執(zhí)行每一個所述任務的優(yōu)先順序;
3-4)由各個所述節(jié)點依據(jù)所述優(yōu)先順序執(zhí)行所述各個任務。
優(yōu)選地,根據(jù)所述方法,其中步驟2)包括:
2-2a)判斷所述任務的數(shù)據(jù)存儲在異構存儲中的何種存儲介質(zhì)上,所述異構存儲的存儲介質(zhì)包括:ssd、和hdd,以根據(jù)所述存儲介質(zhì),判斷假使所述任務在所述節(jié)點上執(zhí)行時所述任務被劃分為何種任務類型。
優(yōu)選地,根據(jù)所述方法,其中所述各種任務類型的優(yōu)先級包括:本地的ssd任務>本地的hdd任務>遠端的hdd任務>遠端的ssd任務。
優(yōu)選地,根據(jù)所述方法,其中步驟2)包括:
2-2b)判斷所述任務的數(shù)據(jù)存儲在異構存儲中的何種存儲介質(zhì)上,所述異構存儲的存儲介質(zhì)包括:ssd、hdd、ram_disk、archive,以根據(jù)所述存儲介質(zhì),判斷假使所述任務在所述節(jié)點上執(zhí)行時所述任務被劃分為何種任務類型。
優(yōu)選地,根據(jù)所述方法,其中所述各種任務類型的優(yōu)先級包括:本地ram_disk任務>本地的ssd任務>本地的hdd任務>遠端的hdd任務>遠端的ssd任務>遠端ram_disk任務>archive任務。
以及,一種計算機可讀存儲介質(zhì),其中存儲有計算機程序,所述計算機程序在被執(zhí)行時用于實現(xiàn)如前述任意一項所述的方法。
以及,一種用于針對異構存儲的任務調(diào)度的系統(tǒng),包括:
處理器、和存儲裝置,
其中,所述存儲裝置用于存儲計算機程序,所述計算機程序在被所述處理器執(zhí)行時用于實現(xiàn)如前述任意一項所述的方法。
與現(xiàn)有技術相比,本發(fā)明的優(yōu)點在于:
將數(shù)據(jù)所對應的存儲介質(zhì)特征添加到任務調(diào)度中,綜合地考慮數(shù)據(jù)的本地性和其存儲介質(zhì)特征以對任務進行分類,并重新定義了不同類型任務的調(diào)度優(yōu)先級,充分發(fā)揮了異構存儲資源的優(yōu)勢,從而減少作業(yè)執(zhí)行時間。
附圖說明
以下參照附圖對本發(fā)明實施例作進一步說明,其中:
圖1(a)為本地任務以及遠端任務在hdd上的執(zhí)行時間的對比圖;
圖1(b)為本地任務以及遠端任務在ssd上的執(zhí)行時間的對比圖;
圖2(a)為采用grep負載時其數(shù)據(jù)在hdfs中所使用的存儲策略分別為hot、one_ssd、all_ssd的執(zhí)行時間的對比圖;
圖2(b)為為采用grep負載時其數(shù)據(jù)在hdfs中所使用的存儲策略分別為hot、one_ssd、all_ssd的單個任務的平均執(zhí)行時間,其中一個grep負載由多個任務組成;
圖3是現(xiàn)有的針對ssd+hdd異構存儲的進行任務調(diào)度的示意圖;
圖4是根據(jù)本發(fā)明的一個實施例針對ssd+hdd異構存儲的進行任務調(diào)度的示意圖;
圖5是根據(jù)本發(fā)明的一個實施例針對異構存儲的任務調(diào)度方法的流程圖;
圖6是hdd任務的執(zhí)行并行度對于任務執(zhí)行效率的影響的仿真測試結果;
圖7是根據(jù)本發(fā)明的方法與傳統(tǒng)任務調(diào)度方式應用在異構存儲上的性能對比測試圖。
具體實施方式
下面結合附圖和具體實施方式對本發(fā)明作詳細說明。
發(fā)明人在研究了現(xiàn)有技術的基礎上進行了以下實驗。
首先,測試了本地任務以及遠端任務在hdd和ssd上的執(zhí)行時間。
圖1(a)示出了在萬兆網(wǎng)中本地任務以及遠端任務在hdd上的執(zhí)行時間。可以看到當數(shù)據(jù)存儲在hdd上時,網(wǎng)絡延遲對于遠端數(shù)據(jù)讀取的影響較小,本地執(zhí)行的任務和遠端執(zhí)行的任務的平均時間基本上相同。相比之下,圖1(b)示出了在萬兆網(wǎng)中本地任務以及遠端任務在ssd上的執(zhí)行時間。可以看出,當數(shù)據(jù)存儲在ssd上時,本地執(zhí)行的任務所平均消耗時間要小于遠端執(zhí)行的任務所平均消耗的時間。
并且,發(fā)明人還通過測試比較了當全部采用hdd進行存儲的“hot”方案、采用將一份任務副本存儲在ssd上并將兩份任務副本存儲在hdd上的“one_ssd”方案、全部采用ssd進行存儲的“all_ssd”方案時任務的平均執(zhí)行時間。圖2(a)示出了采用grep負載時“hot”、“one_ssd”、和“all_ssd”的執(zhí)行時間。可以看到,one_ssd的執(zhí)行時間要遠大于all_ssd,而只比hot的執(zhí)行時間降低了約13.33%。圖2(b)示出了采用grep負載時“hot”、“one_ssd”、和“all_ssd”的執(zhí)行單個任務的平均執(zhí)行時間。參考圖2(b),可以看出其所顯示出的趨勢與圖2(a)基本吻合;可以肯定的是hot下所有任務都是讀取hdd上的數(shù)據(jù),并且在all_ssd下所有任務都是讀取ssd上的數(shù)據(jù);而對于one_ssd而言,其任務的執(zhí)行時間更接近于hot,這是由于如背景技術中所述,僅有36.4%的任務數(shù)據(jù)是從ssd上讀取的,這樣的使用率并不能使得one_ssd這樣的異構存儲資源發(fā)揮其最大的效用,無法達到大幅降低任務的平均執(zhí)行時間的目的,例如大幅低于hot的執(zhí)行時間而接近于all_ssd的執(zhí)行時間。
圖3示出了現(xiàn)有的異構存儲方式進行任務調(diào)度的示意圖。如圖3所示,任務數(shù)據(jù)被存儲在hdfs層中的各個從節(jié)點中,在需要執(zhí)行所述任務時,從hdfs層中讀取相應的任務數(shù)據(jù),并在各個節(jié)點上執(zhí)行所述任務??梢钥吹?,在所述現(xiàn)有技術中,其在hdfs層中,采用異構的方式在各個節(jié)點上存儲數(shù)據(jù),因而可以區(qū)分數(shù)據(jù)是被存儲在ssd上還是存儲在hdd上,例如所述one_ssd。然而,在任務調(diào)度層中,其并不區(qū)分節(jié)點將要執(zhí)行的任務的數(shù)據(jù)是存儲在ssd上還是存儲在hdd上,而是統(tǒng)一地將任務調(diào)度為在ssd上的任務或者統(tǒng)一地將任務調(diào)度為在hdd上的任務。
從圖中可以看出,所述現(xiàn)有技術在任務調(diào)度階段已經(jīng)失去了關于數(shù)據(jù)的存儲信息,因此無法區(qū)分任務所讀取的數(shù)據(jù)是從哪種類型的存儲設備上而來。并且,在異構的存儲環(huán)境下,傳統(tǒng)的任務調(diào)度方式只考慮了網(wǎng)絡(數(shù)據(jù)本地性),而沒有考慮存儲介質(zhì)對于任務執(zhí)行效率的影響。發(fā)明人認為,由于任務調(diào)度層并未有針對性地考慮存儲介質(zhì)與數(shù)據(jù)本地性對任務執(zhí)行效率的影響,因而出現(xiàn)了如前文中所述的在one_ssd的方式下僅有36.4%的任務數(shù)據(jù)是從ssd上讀取的情況。
通過上述實驗和分析,發(fā)明人提出了一種針對異構存儲的任務調(diào)度方法,以期望使得諸如one_ssd這樣的異構存儲獲得更優(yōu)的效用。發(fā)明人認為,位于底層的hdfs用于存儲信息,對于其所存儲的任務數(shù)據(jù)而言,可以將任務傳至較高的任務調(diào)度層進行處理。通過綜合考慮存儲介質(zhì)、以及數(shù)據(jù)本地性來對任務進行分類,并且根據(jù)需要確定每類任務的執(zhí)行優(yōu)先級,例如基于各類任務在執(zhí)行時的消耗時間,來調(diào)度各個任務的執(zhí)行順序,從而充分地利用異構存儲中的高性能存儲設備、提升任務的執(zhí)行效率、降低作業(yè)的執(zhí)行時間。
所述每類任務的執(zhí)行優(yōu)先級可以根據(jù)需要進行預先設定,也可以以效用優(yōu)先的方式來設置優(yōu)先級,例如參考如圖1(a)和圖1(b)所示出的本地任務以及遠端任務在hdd上和ssd上的執(zhí)行時間,為執(zhí)行時間短的任務設置更高的優(yōu)先級。
例如,針對“ssd+hdd”的異構存儲方式,可以根據(jù)任務的本地性、以及任務數(shù)據(jù)所采用的存儲介質(zhì)以對任務進行分類??紤]到任務的本地性可以將任務區(qū)分為本地的任務以及遠端的任務,其中,本地的任務指的是數(shù)據(jù)與計算資源在同一個節(jié)點上;遠端的任務指的是數(shù)據(jù)與計算資源不在同一個節(jié)點上,需要通過遠程讀取的方式進行數(shù)據(jù)的讀取,之后再進行計算。此外,以任務數(shù)據(jù)所采用的存儲介質(zhì)又可以將任務區(qū)分為ssd任務以及hdd任務。以hdfs中one_ssd的方式為例,在hdfs中存在三副本策略,即一份數(shù)據(jù)存在三個副本,并且可以使用不同的存儲策略進行三副本的存儲,因此一份數(shù)據(jù)的執(zhí)行方式可以是上述任務的本地性與存儲介質(zhì)性的組合。
綜合地進行考慮,則存在至少以下四種任務類型:i)本地的ssd任務;ii)遠端的ssd任務;iii)本地的hdd任務;v)遠端的hdd任務。
由于,每個任務都對應一份數(shù)據(jù),而一份數(shù)據(jù)存在不同的執(zhí)行方式,只有當為該份數(shù)據(jù)盡量選擇執(zhí)行時間較短的方式,才能使得作業(yè)的時間最小。
參考為執(zhí)行時間短的任務設置更高的優(yōu)先級的這一原則,可以將“本地的ssd任務”的優(yōu)先級設置最高。
對于“遠端的ssd任務”而言,由于ssd的使用代價較高(造價高、使用壽命有限),因此優(yōu)選地將“遠端的ssd任務”的優(yōu)先級設置為最低,以增加ssd任務在本地執(zhí)行的概率,提高ssd的效用。
參考圖1(a)可知,“本地的hdd任務”與“遠端的hdd任務”的執(zhí)行時間相差不大,因此可以將這兩者設置為具有相同的優(yōu)先級。在本發(fā)明的一些實施例中,還可以將“本地的hdd任務”的優(yōu)先級設置為高于“遠端的hdd任務”的優(yōu)先級,以避免不必要的開銷,例如占用網(wǎng)絡帶寬。
基于上述分析,可以將上述四類任務的優(yōu)選級設置為:
本地的ssd任務>本地的hdd任務>遠端的hdd任務>遠端的ssd任務。
圖4示出了根據(jù)本發(fā)明的一個實施例的針對ssd+hdd異構存儲的任務調(diào)度方法的示意圖。該方案與圖3的區(qū)別在于,在任務調(diào)度層中各個節(jié)點需要根據(jù)認為數(shù)據(jù)的存儲介質(zhì)的不同來區(qū)分出不同的任務類型,以根據(jù)不同的任務類型來確定任務在該節(jié)點上的執(zhí)行順序。換句話說,本發(fā)明是對hdfs的所在層存儲的信息上調(diào)至任務調(diào)度層,根據(jù)不同任務之間的優(yōu)先級來調(diào)度任務。
圖5示出了根據(jù)本發(fā)明的一個實施例的針對異構存儲的任務調(diào)度方法,參考圖5,所述方法包括:
s1:根據(jù)用戶作業(yè)確定需要執(zhí)行的各個任務;
在針對異構存儲進行任務調(diào)度時,首先需要根據(jù)接收到的用戶作業(yè)來確定可以將該用戶作業(yè)劃分為哪些任務。在本發(fā)明中可以采用任意現(xiàn)有方式來對用戶作業(yè)進行劃分,以確定需要執(zhí)行的各個任務。
可以在單作業(yè)場景下為每個作業(yè)分配相應的資源,使得作業(yè)享有整個大數(shù)據(jù)平臺的資源,并且在多作業(yè)場景下分別為每個作業(yè)進行資源分配,例如采用公平調(diào)度的方式根據(jù)每個作業(yè)的權重進行資源的分配。
s2:針對擁有計算資源的每一個節(jié)點,判斷假使每一個所述任務在所述節(jié)點上執(zhí)行時所述任務被劃分為何種任務類型;
如圖4所示出的示例,在大數(shù)據(jù)處理平臺中的節(jié)點可被用于存儲數(shù)據(jù),對于所述節(jié)點中擁有空閑計算資源的節(jié)點還可被用于執(zhí)行上述由用戶作業(yè)所劃分出的任務。本發(fā)明可以采用任意現(xiàn)有方式來判斷哪些節(jié)點擁有空閑的計算資源。
假設,每個從節(jié)點的資源都是固定的,則所有任務的調(diào)度都是在中心節(jié)點上進行,每當中心節(jié)點為某一個從節(jié)點分配一個任務,則該從節(jié)點上的空閑資源就會相應地減少。
在此步驟中,可以由大數(shù)據(jù)處理平臺中的中心節(jié)點來確定除該中心節(jié)點之外的各個重節(jié)點中的哪些節(jié)點可被用于執(zhí)行所述任務。并且,還可以由所述中心節(jié)點或相應的處理模塊來評估假使每一個所述任務在某一個擁有計算資源的節(jié)點上執(zhí)行時,所述任務將被劃分為何種類型的任務,例如在ssd+hdd的異構存儲形式中,可以根據(jù)任務的存儲介質(zhì)以及數(shù)據(jù)是否存儲在本地而劃分出四種任務類型:本地的ssd任務、本地的hdd任務、遠端的hdd任務、遠端的ssd任務。
在判斷假使每一個所述任務在所述節(jié)點上執(zhí)行時所述任務被劃分為何種任務類型時,可以依據(jù)所述任務的數(shù)據(jù)存儲在何種存儲介質(zhì)上,判斷假使所述任務在所述節(jié)點上執(zhí)行時被劃分為諸如ssd任務、hdd任務等。發(fā)明人認為,若盡可能地讓執(zhí)行時間短的任務被調(diào)度執(zhí)行,則可以防止由于節(jié)點的計算資源被某一執(zhí)行速度過慢的任務所占用而無法被其他任務所使用而造成計算資源的浪費、從而增加用戶作業(yè)的執(zhí)行時間。例如,在不考慮耗材成本的情況下,可以優(yōu)先執(zhí)行耗間相對較短的ssd任務,再執(zhí)行耗時相對較長的hdd任務。
并且,還可以判斷所述擁有計算資源的節(jié)點上是否存儲有所述任務的數(shù)據(jù):若該節(jié)點上存儲了針對所述任務的數(shù)據(jù),則認為假設所述任務在該節(jié)點上執(zhí)行時,可以從所述節(jié)點直接獲取數(shù)據(jù),因此可以將所述任務劃分為本地的任務;相反地,若該節(jié)點上并未存儲所述任務的數(shù)據(jù),則認為假設所述任務在該節(jié)點上執(zhí)行時,需要從其他節(jié)點調(diào)取針對所述任務的數(shù)據(jù),應當將所述任務劃分為遠端的任務。如前文中所述,通常狀況下,優(yōu)先執(zhí)行本地任務可以避免占用網(wǎng)絡帶寬、提高網(wǎng)絡的使用效率,從而降低完成用戶作業(yè)的耗時。
綜合考慮上述兩點,還可以在判斷存儲介質(zhì)的同時判斷任務所需數(shù)據(jù)的本地性,從而細化對任務的分類。例如,如前文中所述地,將在ssd+hdd的異構存儲形式中,由擁有計算資源的節(jié)點所可能執(zhí)行的任務劃分為四類,并可以預先地將其優(yōu)先級確定為:本地的ssd任務>本地的hdd任務>遠端的hdd任務>遠端的ssd任務。在進行判斷時,可以針對每一個擁有計算資源的節(jié)點,分別判斷假使每一個所述任務在該節(jié)點上執(zhí)行時,可以將該任務確定為上述四種任務類型中的哪一種。
s3:根據(jù)所確定的各種任務類型的優(yōu)先級,為所述擁有計算資源的每一個節(jié)點設置執(zhí)行所述任務的優(yōu)先順序。
所述確定的各種任務類型的優(yōu)先級,如前文所述其可以是由數(shù)據(jù)的存儲介質(zhì)所決定、可以由數(shù)據(jù)的本地性所決定、還可以由數(shù)據(jù)的存儲介質(zhì)和數(shù)據(jù)的本地性這兩種共同決定。并且所述優(yōu)先級既可以是預先確定存儲在系統(tǒng)中,也可以依據(jù)在步驟s2中所實際確定的各種任務類型來確定。
根據(jù)本發(fā)明的一個實施例,在執(zhí)行步驟s3時,可以首先完成針對每一個擁有計算資源的節(jié)點確定其所執(zhí)行各個任務的優(yōu)先順序。例如圖4中所示,節(jié)點1優(yōu)先執(zhí)行本地的ssd任務1、次優(yōu)先執(zhí)行本地的hdd任務2、最低優(yōu)先執(zhí)行本地的hdd任務3,類似地也為節(jié)點2和節(jié)點3確定其所執(zhí)行各個任務的優(yōu)先順序。
在已確定完所述優(yōu)先順序后,對用戶作業(yè)所需執(zhí)行的各個任務進行統(tǒng)一地調(diào)度。例如參考圖4,在時刻1,由節(jié)點1執(zhí)行任務1、節(jié)點2執(zhí)行任務2、節(jié)點3執(zhí)行任務3;在時刻2時,節(jié)點1已完成了任務1、并且節(jié)點2尚未完成任務2、節(jié)點3尚未完成任務3,則由節(jié)點1開始執(zhí)行針對該節(jié)點處于第二優(yōu)先級的任務2,這里可以由節(jié)點1和節(jié)點2共同完成任務2以加快處理速度,也可以由節(jié)點1和節(jié)點2分別單獨地執(zhí)行任務2以降低控制的復雜性;在時刻3時,節(jié)點3完成了任務3、并且節(jié)點1和節(jié)點2已完成了任務2,至此全部任務均已完成。
根據(jù)本發(fā)明的又一個實施例,在執(zhí)行步驟s3時,還可以在由節(jié)點執(zhí)行任務的同時進行任務調(diào)度。例如,針對擁有計算資源的節(jié)點,判斷在當前狀況下尚未被執(zhí)行的任務中優(yōu)先級最高的一個任務,以將所述任務作為該節(jié)點的待執(zhí)行任務,并由該節(jié)點執(zhí)行所述待執(zhí)行任務。采用這種方式的優(yōu)點在于,不必執(zhí)行完整的排序算法,例如不必執(zhí)行完整地冒泡算法而只需逐個地比較優(yōu)先級的高低,在判斷出優(yōu)先級最高的一個任務后便可立即開始執(zhí)行任務,從而進一步地加快用戶作業(yè)的執(zhí)行速度。相較于前一實施例,該方法的執(zhí)行速度更快,然而對于任務數(shù)量較大的情況,對控制的要求較高。與前一實施例類似地,在本實施中也可以由多個節(jié)點共同完成一個任務以加快處理速度。
進一步地,在實際地執(zhí)行上述各個任務時,由于節(jié)點存在并行地執(zhí)行任務的情況,因此對于一個遠程任務而言,可能存在該遠程任務所需的數(shù)據(jù)內(nèi)容已在一個本地節(jié)點被其他任務所調(diào)用的情況。從便捷的角度考慮,這里可以選擇從包含所述遠程任務所對應的數(shù)據(jù)最多的節(jié)點來讀取所述遠程任務的數(shù)據(jù)。
上述方式對于具有強并發(fā)能力的ssd而言尤為適用,而對于并發(fā)能力相對較差的存儲介質(zhì),例如hdd,則需要具體情況具體分析。
對此,發(fā)明人對任務執(zhí)行并行度對于任務執(zhí)行效率的影響進行了測試。圖6示出了hdd任務的執(zhí)行并行度對于任務執(zhí)行效率的影響。其中,single表示一次性執(zhí)行完相應的任務數(shù)量(并行度=任務數(shù)量)的場景,multiple表示經(jīng)過多輪執(zhí)行完相應的任務數(shù)量(并行度為6)的場景。可以看出,在一定范圍內(nèi),增加并行度相較于多輪執(zhí)行還是存在優(yōu)勢(<48),但是超出該范圍,增加并行度則會適得其反(>48)。
因此,在本發(fā)明中還可以針對hdd的遠程任務,選擇從包含所述遠程任務所對應的數(shù)據(jù)最多的節(jié)點,統(tǒng)計該節(jié)點當前服務任務讀取數(shù)據(jù)的個數(shù)n;如果n大于閾值x,則選擇第二多的節(jié)點,并重復上述判斷;如果n小于閾值x,則進行遠程任務的數(shù)據(jù)讀取。
通過上述實施例,可以看出,本發(fā)明根據(jù)數(shù)據(jù)的存儲介質(zhì)、數(shù)據(jù)的本地性,對在擁有計算資源的節(jié)點上可能執(zhí)行的任務進行了類別的劃分,并針對不同的類別確定不同的優(yōu)先級,以確定每個擁有計算資源的節(jié)點上執(zhí)行任務的優(yōu)先順序。
在上述實施例中,以ssd+hdd的異構存儲形式為例。然而應當理解,本發(fā)明中還可以針對其他的異構存儲形式進行任務調(diào)度,例如,目前hdfs所支持的四種存儲介質(zhì)包括:ssd、hdd、ram_disk、archive。針對所述四種存儲設備的異構存儲形式,還可能存在七種任務類型:本地ram_disk任務、本地的ssd任務、本地的hdd任務、遠端的hdd任務、遠端的ssd任務、遠端ram_disk任務、archive任務,其中,archive指的是采用高密度存儲數(shù)據(jù)的介質(zhì)來解決數(shù)據(jù)量的容量擴增的問題,一般用于數(shù)據(jù)的歸檔和備份,因此在任務類別中可以不區(qū)分針對archive的任務是屬于本地任務還是遠端任務。
與前文中類似地,由于ram_disk的并發(fā)能力優(yōu)于ssd致使其處理速度比ssd更快,因此可以將所述七種任務的優(yōu)先級確定為:
本地ram_disk任務>本地的ssd任務>本地的hdd任務>遠端的hdd任務>遠端的ssd任務>遠端ram_disk任務>archive任務。
為了驗證本發(fā)明的效果,發(fā)明人進行了測試實驗,對比了本發(fā)明與傳統(tǒng)任務調(diào)度方式應用在異構存儲上的性能,其中分別比較了在使用grep(~600gb)、sort(~400gb)、wordcount(~500gb)三種負載時的用戶作業(yè)的平均執(zhí)行時間。參考圖7可以看出,在采用hdfsi/o-intensive負載grep時,本發(fā)明的用戶作業(yè)的執(zhí)行時間相比于傳統(tǒng)任務調(diào)度策略減少了73.6%;對于shuffle-intensive負載sort,本發(fā)明的用戶作業(yè)的執(zhí)行時間相比于傳統(tǒng)任務調(diào)度策略減少了4.2%;對于cpu-intensive負載wordcount,本發(fā)明的用戶作業(yè)的執(zhí)行時間相比于傳統(tǒng)任務調(diào)度策略減少了6.5%。
綜上所述,本發(fā)明所提出的基于異構存儲的任務調(diào)度方法,將數(shù)據(jù)所對應的存儲介質(zhì)特征添加到任務調(diào)度中,綜合地考慮數(shù)據(jù)的本地性和其存儲介質(zhì)特征以對任務進行分類,并重新定義了不同類型任務的調(diào)度優(yōu)先級,充分發(fā)揮了異構存儲資源的優(yōu)勢,從而減少作業(yè)執(zhí)行時間。
需要說明的是,上述實施例中介紹的各個步驟并非都是必須的,本領域技術人員可以根據(jù)實際需要進行適當?shù)娜∩帷⑻鎿Q、修改等。
最后所應說明的是,以上實施例僅用以說明本發(fā)明的技術方案而非限制。盡管上文參照實施例對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解,對本發(fā)明的技術方案進行修改或者等同替換,都不脫離本發(fā)明技術方案的精神和范圍,其均應涵蓋在本發(fā)明的權利要求范圍當中。