本發(fā)明屬于計算機軟件領(lǐng)域,涉及一種基于hadoop平臺下動態(tài)標(biāo)簽匹配dlms調(diào)度方法的設(shè)計與實現(xiàn)。
背景技術(shù):
早期hadoop版本由于將資源調(diào)度管理和mapreduce框架整合在一個模塊中,導(dǎo)致代碼的解耦性較差,不能很好的進行擴展,不支持多種框架。hadoop開源社區(qū)設(shè)計實現(xiàn)了一種全新架構(gòu)的新一代hadoop系統(tǒng),該系統(tǒng)為hadoop2.0版本,將資源調(diào)度抽取出來構(gòu)建了一個新的資源調(diào)度框架,即新一代的hadoop系統(tǒng)yarn。眾所周知在某一確定的環(huán)境下合適的調(diào)度算法能夠在滿足用戶作業(yè)請求的同時,有效的提升hadoop作業(yè)平臺的整體性能和系統(tǒng)的資源利用率。在yarn中默認(rèn)自帶三種調(diào)度器:先入先出(fifo)、公平調(diào)度器(fairscheduler)和計算能力調(diào)度器(capacityscheduler)。hadoop默認(rèn)采用的是fifo調(diào)度器,該算法采用先進先出的調(diào)度策略,簡單易實現(xiàn),但是不利于短作業(yè)的執(zhí)行,不支持共享集群和多用戶管理;由facebook提出的公平調(diào)度算法考慮不同用戶與作業(yè)資源配置需求的差異,支持用戶公平共享集群的資源,但是作業(yè)資源的配置策略不夠靈活,容易造成資源的浪費,并且不支持作業(yè)搶占;雅虎提出的計算能力調(diào)度算法支持多用戶共享多隊列,計算能力靈活,但是不支持作業(yè)搶占易陷入局部最優(yōu)。
然而在實際的企業(yè)生產(chǎn)中,隨著企業(yè)的數(shù)據(jù)量加大,每年集群都會加入一些新節(jié)點,但是集群節(jié)點的性能差異是顯著的,這種異構(gòu)集群在企業(yè)生產(chǎn)環(huán)境中很普遍。設(shè)想如果將一個計算量很大的機器學(xué)習(xí)的任務(wù)分配在cpu計算能力很差的機器節(jié)點上,顯然會影響作業(yè)的整體執(zhí)行時間。hadoop自帶的三種資源調(diào)度器并沒有很好地解決這個問題,本發(fā)明提出了一種節(jié)點性能和作業(yè)類別標(biāo)簽動態(tài)匹配的資源調(diào)度方法(dlms),將cpu性能比較好的機器貼上cpu標(biāo)簽,在磁盤io性能比較好的機器上面貼上io標(biāo)簽或者是兩者都一般的普通標(biāo)簽,作業(yè)根據(jù)分類可以貼上cpu標(biāo)簽、io標(biāo)簽任務(wù)或者普通標(biāo)簽,然后進入不同的標(biāo)簽隊列,調(diào)度器盡可能將相應(yīng)的標(biāo)簽節(jié)點的資源分配給相應(yīng)的標(biāo)簽作業(yè),從而可以減少作業(yè)的運行時間,提高系統(tǒng)資源利用率,提高系統(tǒng)整體效率。
技術(shù)實現(xiàn)要素:
本發(fā)明提出的調(diào)度方法將集群節(jié)點進行初始分類并賦予相應(yīng)的標(biāo)簽。nodemanager發(fā)送心跳前進行自我檢測并對原始標(biāo)簽進行動態(tài)調(diào)整,并使用機器學(xué)習(xí)分類算法對作業(yè)進行分類賦予相應(yīng)的標(biāo)簽,并根據(jù)用戶設(shè)定的作業(yè)優(yōu)先級,作業(yè)等待時間等屬性動態(tài)實現(xiàn)作業(yè)的排序,并將相應(yīng)標(biāo)簽的資源分配給相應(yīng)的標(biāo)簽隊列中的作業(yè)。
本發(fā)明所提出的調(diào)度方法主要包括以下模塊:
(1)集群節(jié)點原始分類及其動態(tài)分類標(biāo)簽
集群節(jié)點首先需要進行初始分類,根據(jù)節(jié)點的cpu和磁盤io性能進行分類。集群中每個節(jié)點都需要單獨運行一個指定類型的任務(wù)并記錄下該節(jié)點運行該類作業(yè)的時間,根據(jù)節(jié)點運行單個任務(wù)的時間與集群中所有節(jié)點運行時間平均值的大小關(guān)系將節(jié)點分成cpu型節(jié)點,磁盤io型節(jié)點,普通型節(jié)點。
在集群節(jié)點運行的過程中,如果一個節(jié)點運行部分作業(yè)導(dǎo)致負(fù)載過大,會對這個節(jié)點的標(biāo)簽進行降級處理,直接降級為普通節(jié)點。一個節(jié)點初始標(biāo)簽是cpu型標(biāo)簽,節(jié)點中運行cpu型任務(wù),雖然此節(jié)點還有部分資源未使用,但是此時環(huán)境中節(jié)點cpu性能優(yōu)勢已經(jīng)失去,為避免這種情況出現(xiàn),采取動態(tài)標(biāo)簽方法,在nodemanager向resourcemanager發(fā)送心跳的時候動態(tài)檢測該節(jié)點機器的cpu和io使用率,如果超過閾值,就將此節(jié)點標(biāo)簽貼上普通標(biāo)簽,每次發(fā)送心跳時都需要進行檢測一次,由此實現(xiàn)節(jié)點動態(tài)標(biāo)簽。此閾值可以在配置文件中自行配置,如果用戶未配置會參照系統(tǒng)默認(rèn)值。
(2)map執(zhí)行信息的獲取與回傳
hadoop作業(yè)通常分成map階段和reduce階段,通常大作業(yè)map數(shù)量在上百個甚至更多,一個作業(yè)主要時間是花費在map階段的計算上,但是每個map又是完全相同的執(zhí)行邏輯,所以會收集作業(yè)運行的第一個map進程的運行信息,這些信息在nodemanager向resourcemanager發(fā)送心跳時傳遞到調(diào)度器中,調(diào)度器根據(jù)傳回的信息進行作業(yè)的分類。
企業(yè)生產(chǎn)環(huán)境中,每天都會運行一些相同內(nèi)容邏輯的作業(yè),即用戶已知作業(yè)應(yīng)所屬的標(biāo)簽,在命令行或者代碼中為作業(yè)設(shè)置作業(yè)類型標(biāo)簽,在調(diào)度的時候調(diào)度器會進行檢查,如果用戶已經(jīng)對作業(yè)貼上標(biāo)簽,就省去作業(yè)分類的環(huán)節(jié),直接進行調(diào)度。
(3)多優(yōu)先級隊列
為滿足不同用戶的需求,防止小作業(yè)出現(xiàn)“饑餓”現(xiàn)象,采用作業(yè)優(yōu)先級方案。在調(diào)度器中新建5個隊列即:原始隊列、等待優(yōu)先級隊列、cpu優(yōu)先級隊列、io優(yōu)先級隊列和普通優(yōu)先級隊列。用戶提交作業(yè)首先是進入原始隊列中,先運行作業(yè)部分map并收集這部分map運行信息,然后作業(yè)進入等待優(yōu)先級隊列中等待map的運行信息回傳并進行分類,最后根據(jù)作業(yè)的分類類別標(biāo)簽進入到對應(yīng)標(biāo)簽的隊列中。
(3)作業(yè)分類
在分類之前需要對數(shù)據(jù)進行預(yù)處理,數(shù)據(jù)預(yù)處理是指在前期對數(shù)據(jù)進行一些處理。為提高數(shù)據(jù)挖掘的質(zhì)量產(chǎn)生了數(shù)據(jù)預(yù)處理技術(shù)。數(shù)據(jù)預(yù)處理技術(shù)有多種方法:數(shù)據(jù)清理、數(shù)據(jù)集成、數(shù)據(jù)變換和數(shù)據(jù)規(guī)約。這些數(shù)據(jù)處理技術(shù)在數(shù)據(jù)挖掘之前使用,大大提高數(shù)據(jù)挖掘模式的質(zhì)量,降低實際挖掘所需時間。本文數(shù)據(jù)預(yù)處理主要是在數(shù)據(jù)歸一化方面。數(shù)據(jù)歸一化就是把各個變量數(shù)據(jù)都線性地變換到一個新標(biāo)尺上,變換后變量最小值為0,最大值為1,這樣就保證所有的變量數(shù)據(jù)都小于等于1。
在作業(yè)分類方面選擇了簡單、使用比較普遍而且分類效果較好的樸素貝葉斯分類器進行分類。如果用戶在命令行和任務(wù)代碼中已經(jīng)添加作業(yè)的類型的話,這個步驟會省掉,直接進入相應(yīng)的隊列中等待分配資源。
(4)數(shù)據(jù)本地性
hadoop中遵循一個原則是“移動計算比移動數(shù)據(jù)更好”,移動到放置數(shù)據(jù)的計算節(jié)點要比把數(shù)據(jù)移動到一個計算節(jié)點更加節(jié)省成本,性能更好。關(guān)于數(shù)據(jù)本地性本發(fā)明采取了延時降級調(diào)度策略。
有益效果如下:
1.本發(fā)明針對異構(gòu)集群環(huán)境提出一種動態(tài)標(biāo)簽匹配的調(diào)度方法,通過對節(jié)點和作業(yè)進行分類,結(jié)合作業(yè)本身特性以及提交用戶的屬性共同組計算作業(yè)優(yōu)先級,在分配資源時將相同類型資源和節(jié)點進行匹配,考慮到節(jié)點的性能跟現(xiàn)階段運行的任務(wù)量的關(guān)系,采用自檢測方法動態(tài)調(diào)整節(jié)點標(biāo)簽。最后通過實驗來對算法性能進行對比分析。
2.本發(fā)明針對數(shù)據(jù)本地性問題,提出了延時降級的算法,降級分為當(dāng)前本節(jié)點、本機架節(jié)點和隨機節(jié)點三種,通過在一定的延時時間降低本地性等級來提高數(shù)據(jù)本地性。
3.本發(fā)明采用動態(tài)標(biāo)簽的方法,首先預(yù)先運行不同類型作業(yè),根據(jù)單節(jié)點運行的時間和集群所有節(jié)點的平均時間對比對節(jié)點進行分類,然后根據(jù)集群節(jié)點運行任務(wù)的負(fù)載情況對節(jié)點性能進行自檢測并生成相應(yīng)的新標(biāo)簽。
4.本發(fā)明提出對作業(yè)進行分類,由于mapreduce作業(yè)map部分都是相同的處理邏輯,所以可以根據(jù)作業(yè)預(yù)先執(zhí)行的部分信息對作業(yè)進行分類。
附圖說明
圖1作業(yè)調(diào)度整體框架流程圖;
圖2調(diào)度算法流程圖;
圖3不同調(diào)度算法下三種作業(yè)總運行時間對比圖;
圖4dlms下500m數(shù)據(jù)量下container分布數(shù)量圖;
圖5dlms下1g數(shù)據(jù)量下container分布數(shù)量圖;
圖6dlms下1.5g數(shù)據(jù)量下container分布數(shù)量圖;
圖7作業(yè)組在不同調(diào)度算法下運行時間對比圖;
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和特點更加清楚明白,以下結(jié)合具體實施例子,并參照附圖,對本發(fā)明進行進一步的細化說明。yarn調(diào)度框架如圖1所示。
各個步驟解釋如下:
(1)用戶向yarn提交應(yīng)用程序,其中包括用戶程序、啟動applicationmaster命令。
(2)resourcemanager為該應(yīng)用程序分配第一個container,并與對應(yīng)的nodemanager通信,要求它啟動應(yīng)用程序的applicationmaster。
(3)applicationmaster向resourcemanager注冊后,為各個任務(wù)申請資源,并監(jiān)控它們的運行狀態(tài),直到運行結(jié)束
(4)nodemanager發(fā)送心跳前進行自我檢測生成動態(tài)的節(jié)點標(biāo)簽,并向resourcemanager匯報資源。
(5)任務(wù)分類進入不同的標(biāo)簽隊列中,進行優(yōu)先級排序等待分配資源。
(6)applicationmaster通過rpc協(xié)議向resourcemanager申請和領(lǐng)取資源。
(7)根據(jù)nodemanager匯報的節(jié)點標(biāo)簽和資源,調(diào)度器將此節(jié)點的資源分配給對應(yīng)標(biāo)簽隊列的作業(yè)。
(8)applicationmaster申請到資源后,便與對應(yīng)的nodemanager通信,要求它啟動任務(wù)。
(9)nodemanager為任務(wù)設(shè)置好運行環(huán)境(環(huán)境變量、jar包、二進制程序等)后,將任務(wù)啟動命令寫到腳本中,并通過運行該腳本啟動任務(wù)。
(10)各個任務(wù)通過某個rpc協(xié)議向applicationmaster匯報自己的狀態(tài)和進度,可以在任務(wù)失敗時重新啟動任務(wù)。
(11)應(yīng)用程序運行完成后,applicationmaster向resourcemanager注銷并關(guān)閉自己。
首先對集群物理節(jié)點進行初始分類,分類的方法過程如下:
(1)設(shè)集群機器節(jié)點集為n={ni|i∈[1,n]}n為節(jié)點總數(shù)量,i為從1開始n的正整數(shù),ni表示集群中第i個物理機器。
(2)在每臺節(jié)點上都執(zhí)行一個相同的任務(wù)量的cpu、io和普通型作業(yè)并記錄作業(yè)執(zhí)行時間;tcpu(i)表示在第ni個節(jié)點上執(zhí)行cpu作業(yè)的花費時間;tio(i)表示在第ni個節(jié)點上執(zhí)行io作業(yè)的花費時間,tcom(i)表示在第ni個節(jié)點上執(zhí)行普通作業(yè)的花費時間。
(3)計算每種作業(yè)的集群平均時間,集群平均時間的計算公式如下:
設(shè)map的運行信息為m,它包括以下需要收集的信息m={min,mout,rate,acpu,mcpu,zcpu,mrate}min表示map輸入數(shù)據(jù)量,mout表示map輸出數(shù)據(jù)量,rate表示輸入數(shù)據(jù)量/輸出數(shù)據(jù)量,acpu表示cpu平均使用率,mcpu表示cpu中位數(shù),zcpu表示cpu使用率超過90%的平均數(shù),mrate表示內(nèi)存使用量,這些數(shù)據(jù)將成為以后這個作業(yè)分類的特征屬性。在實驗的過程中發(fā)現(xiàn)單純的計算cpu的平均時間不能很好反應(yīng)作業(yè)的特征,通過實驗發(fā)現(xiàn)cpu型作業(yè)的cpu使用率大于90%的次數(shù)比較多,其他類型的作業(yè)cpu使用率大于90%的次數(shù)相對較少,所以把這個信息也加入到map回傳的信息中。
在隊列優(yōu)先級方面采取用戶自定義雙層權(quán)重的設(shè)計方法,設(shè)作業(yè)的大小屬性所占的權(quán)重為worthnum,該屬性分成三個等級num∈{long,mid,short},作業(yè)的擁有者屬性所占權(quán)重為worthuser,該屬性分成兩個等級user∈{root,others},作業(yè)的緊急程度所占權(quán)重為worthemogence,該屬性可分成三個等級prority∈{highprority,midprority,lowprority},作業(yè)的等待時間所占的權(quán)重為worthwait,等待的計算公式為waittime=nowtime-submittime,賦予相應(yīng)的權(quán)重,最后計算出每個任務(wù)的優(yōu)先級數(shù),然后在相應(yīng)的隊列中進行排序。上述五種任務(wù)屬性權(quán)重相加和為100%,具體公式如下。
worthnum+worthuser+worthemogence+worthwtait=100%;
最后權(quán)重計算公式:
finalwort=worthnum*num+worthuser*user+worthemogence*prority+worthwait*waittime
在作業(yè)分類方面,采用樸素貝葉斯分類器,具體分類步驟如下:
(1)分別計算一個作業(yè)在某些條件下是cpu、io還是普通型作業(yè)下的條件概率:
p(job=labcpu|v1,v2,…,vn)
p(job=labio|v1,v2,…,vn)
p(job=labcom|v1,v2,…,vn)
其中job∈{cpu,io,com}表示作業(yè)類別標(biāo)簽;vi為作業(yè)的屬性特征。
(2)根據(jù)貝葉斯公式p(b|a)=p(ab)/p(a)得:
假設(shè)vi之間相對獨立,根據(jù)獨立假設(shè)其中
(3)實際計算中p(v1,v2,…,vn)與作業(yè)無關(guān)可忽略不計,因此最終可得
同理有
作業(yè)是cpu型作業(yè)、io型作業(yè)還是普通型作業(yè)取決于哪個概率值更大。
本地性本文采取了延時降級調(diào)度策略。該策略具體思想如下:
為每個作業(yè)增加一個延時時間屬性,設(shè)ti為第i個作業(yè)當(dāng)前的延時時間,i∈[1,n],n為集群的節(jié)點數(shù)目,tlocal表示本地節(jié)點延時時間閾值,track表示機架節(jié)點延時時間閾值。當(dāng)調(diào)度器分配資源給作業(yè)時,如果作業(yè)的執(zhí)行節(jié)點和數(shù)據(jù)輸入節(jié)點不在一個節(jié)點上,此時ti自增1,表示該作業(yè)有一次延時調(diào)度,此時將此資源分配給其它合適的作業(yè),直到當(dāng)ti>tlocal時,作業(yè)的本地性就會降低為機架本地性,此時只要是本機架內(nèi)的節(jié)點都可以將資源分配給該作業(yè);當(dāng)ti>track時,作業(yè)的本地性降低為隨機節(jié)點。其中的tlocal和track都采用配置文件的方式由用戶根據(jù)集群情況自行配置。采用延時的調(diào)度策略可以保證在一定的延時時間內(nèi)獲得較好的本地性。
dlms調(diào)度方法的基本思想是預(yù)先分配部分作業(yè)執(zhí)行,根據(jù)作業(yè)回傳的信息對作業(yè)進行分類,然后將節(jié)點標(biāo)簽的資源分配給相應(yīng)的隊列中的任務(wù),基本流程:
步驟1當(dāng)節(jié)點通過心跳向資源管理匯報資源的時候,如果原始隊列不為空,則遍歷原始隊列中作業(yè),將已經(jīng)在命令行或者程序中指定了作業(yè)類型標(biāo)簽的作業(yè)分配到相應(yīng)的標(biāo)簽優(yōu)先級隊列中,原始隊列移除此作業(yè)。
步驟2如果原始隊列不為空,則將此節(jié)點上的資源分配給原始隊列,作業(yè)進入等待隊列中等待下次分配資源,原始隊列移除此作業(yè),此輪分配結(jié)束。
步驟3如果等待優(yōu)先級隊列不為空,則對等待優(yōu)先級隊列中的作業(yè)進行分類進入相應(yīng)的標(biāo)簽優(yōu)先級隊列。
步驟4如果如節(jié)點性能標(biāo)簽相應(yīng)的作業(yè)類別隊列不為空,則將此節(jié)點的資源分配給此隊列,此輪分配結(jié)束。
步驟5設(shè)置查看資源訪問次數(shù)變量,如果超過集群的數(shù)量,則將節(jié)點的資源按cpu、io、普通、等待優(yōu)先級順序?qū)①Y源分配給相應(yīng)的隊列,此輪調(diào)度結(jié)束。本步驟可以防止出現(xiàn)類似以下情況,cpu隊列作業(yè)過多,導(dǎo)致cpu型節(jié)點資源已經(jīng)耗盡,其他標(biāo)簽的節(jié)點還有資源,但是作業(yè)無法分配資源的情況。
算法的流程圖如圖2所示。
實驗環(huán)境
本節(jié)將通過實驗來驗證本文提出的dlms調(diào)度器的實際效果。實驗環(huán)境為5臺pc機搭建而成的hadoop完全分布式集群,集群的節(jié)點機器配置統(tǒng)一為操作系統(tǒng)ubuntu-12.04.1,jdk1.6,hadoop2.5.1,內(nèi)存2g,硬盤50g。其中namenode的cpu的核數(shù)為2,datanode1的cpu核數(shù)為2,datanode2的cpu核數(shù)為4,datanode3的cpu核數(shù)為2,datanode4的cpu核數(shù)為4.
實驗結(jié)果與說明
首先準(zhǔn)備數(shù)據(jù)量為128m的wordcount(io型),kmeans(cpu型)作業(yè)各一個,分別在4臺節(jié)點上面運行6次,記錄下作業(yè)運行的時間。表1中s表示時間單位秒,avg表示該節(jié)點運行相應(yīng)標(biāo)簽任務(wù)的平均時間,allavg表示所有節(jié)點運行相應(yīng)標(biāo)簽任務(wù)的總平均時間,rate的計算公式如下:
負(fù)號表示平均時間相對于總平均時間的減少,正號表示平均時間相對于總平均時間的增加。
由表1可以看出datanode1在運行兩個任務(wù)的時間都是節(jié)省時間的,我們采取節(jié)省最多的cpu作業(yè)作為機器的原始標(biāo)簽,datanode2為io標(biāo)簽,datanode3、datanode4為普通機器。
表1原始分類實驗表
實驗結(jié)果及其分析
使用可以明顯區(qū)分作業(yè)類型的幾種作業(yè),wordcount在map階段需要大量的讀取數(shù)據(jù)和寫入中間數(shù)據(jù),map階段和reduce階段基本上沒有算數(shù)計算,所以將此種作業(yè)定性為io型作業(yè),kmeans在map階段和reduce階段都需要大量的計算點和點之間的距離,并沒有太多的中間數(shù)據(jù)的寫入,所以將此種作業(yè)定性為cpu型作業(yè),topk在reduce階段沒有大量的數(shù)據(jù)寫入磁盤,也沒有大量的計算,只涉及到簡單的比較,所以人為的認(rèn)為這個是普通型的任務(wù)。
通過兩組實驗來進行驗證,第一組實驗設(shè)置調(diào)度器為fifo,在500m、1g和1.5g的數(shù)據(jù)量下分別運行wordcount,kmeans,topk作業(yè)各3次,記錄每個作業(yè)3次的平均時間作為最終時間,切換調(diào)度器為capacity和dlms調(diào)度器做同樣的實驗操作,實驗中記錄下dlms調(diào)度器下每種作業(yè)的container在集群的分布,container是表示集群資源的劃分單位,記錄了作業(yè)分片在集群中運行的分布情況,yarn中每個map和reduce進程都是以一個container來進行表示的。container在集群中每個節(jié)點分布比例表明節(jié)點執(zhí)行作業(yè)任務(wù)量的比例。圖2的橫坐標(biāo)是作業(yè)的數(shù)據(jù)量,縱坐標(biāo)是wordcount,kmeans,topk這3種作業(yè)共同運行的總時間。在數(shù)據(jù)量增大的情況下,dlms調(diào)度器相比于其他的調(diào)度器節(jié)省大約10%-20%的時間。
因為dlms會將相應(yīng)節(jié)點標(biāo)簽的資源分配給相應(yīng)標(biāo)簽的作業(yè)。作業(yè)的map和reduce是以一個container的形式在節(jié)點上運行的,圖3至圖5是在dmls調(diào)度器下不同數(shù)據(jù)量作業(yè)的container數(shù)量。根據(jù)上節(jié)的原始分類node1是cpu型的標(biāo)簽節(jié)點,node2和node3是普通標(biāo)簽節(jié)點,node4是io標(biāo)簽節(jié)點。wordcount是io型作業(yè),topk是普通型作業(yè),kmeans是cpu型作業(yè)。從圖中可以看出container的分布規(guī)律為wordcount作業(yè)在node4上分配的container比較多,tokp在普通節(jié)點node2和node3上面分布的比較多,kmeans作業(yè)在node1節(jié)點上面分布的比較多。以上不同作業(yè)的container在集群節(jié)點上的分布表明dlms調(diào)度器提高了相應(yīng)節(jié)點標(biāo)簽的資源分配給對應(yīng)標(biāo)簽作業(yè)的概率。
第二組實驗,準(zhǔn)備了5個作業(yè),分別是128m和500m數(shù)據(jù)量的wordcount作業(yè),128m和500m數(shù)據(jù)量的kmeans作業(yè),500m的topk作業(yè)組成一個作業(yè)組。5個作業(yè)同時提交運行。在不同調(diào)度器的集群中模擬連續(xù)作業(yè)執(zhí)行情況,記錄作業(yè)組執(zhí)行完的總時間。作業(yè)組在不同的調(diào)度器下運行3次,記錄下作業(yè)組運行完的總時間。具體結(jié)果見圖6,從圖6中可以看出本文提出的dlms調(diào)度器相比于hadoop自帶調(diào)度器執(zhí)行相同作業(yè)組節(jié)省的時間是顯而易見的,本文提出的dmls調(diào)度器相比hadoop自帶的fifo調(diào)度器節(jié)省了大約20%的時間,比capacity調(diào)度器節(jié)省了大約10%的運行時間。