專利名稱:一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法
技術領域:
本發(fā)明涉及一種集群中計算節(jié)點任務槽動態(tài)調(diào)整的方法,具體涉及一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整的方法,屬于計算機技術領域。
背景技術:
在分布式計算集群上運行的計算機程序稱為分布式計算程序,一個運行中的分布式計算程序稱為一個分布式計算作業(yè)。通常,一個分布式計算作業(yè)可劃分為若干個子任務。 在主從架構的分布式計算框架中,主節(jié)點負責接收、初始化作業(yè)并生成若干個子任務,再由子節(jié)點處理每個子任務。一個子節(jié)點可以同時執(zhí)行作業(yè)的多個子任務,子節(jié)點可以同時執(zhí)行的子任務的數(shù)量稱作該節(jié)點的任務槽的大小,因此子任務在子節(jié)點上執(zhí)行的并行粒度是由子節(jié)點的任務槽決定的。目前,在主流的分布式計算模式(如MapReduce)中,作業(yè)提交后由主節(jié)點劃分為若干子任務,然后分配給子節(jié)點。其中存在的不足之處是,子節(jié)點的最大任務槽數(shù)(以下簡稱MTS =Maximum Task Slot)在分布式計算集群處理作業(yè)時不可變,其配置也不能真正反映子節(jié)點的處理能力。若MTS設置較大,子節(jié)點上并行執(zhí)行任務的任務數(shù)比較多,勢必會造成節(jié)點資源競爭激烈,任務無法得到最優(yōu)的執(zhí)行進度保障;若MTS設置較小,則可能造成子節(jié)點資源得不到充分利用,造成資源浪費。如果在任務執(zhí)行過程中,可以根據(jù)子節(jié)點的實時負載狀態(tài)信息動態(tài)調(diào)整MTS的大小,那么就會避免上述問題,既可以減少子節(jié)點上多個任務對于子節(jié)點資源的競爭,又可以使子節(jié)點資源得到較充分的利用。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法。它首先考慮收集并分析子節(jié)點實時負載狀態(tài)等相關信息,然后根據(jù)分析結果調(diào)整子節(jié)點的MTS, 以此達到子節(jié)點資源得到充分合理地利用。本發(fā)明一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法,其技術方案如下首先,變量定義如下將子節(jié)點負載值workload的取值范圍
劃分為三個區(qū)間輕載區(qū)、適載區(qū)和重載區(qū),如
圖1所示。圖中,LLdower limit)表示適載下限值,UL(upper limit)表示適載上限值。由于集群初始化時對節(jié)點負載情況不了解,所以初始設置LL = 33%,UL = 66%, 即將負載取值范圍平均劃分。然后在作業(yè)運行過程中動態(tài)調(diào)整LL、UL。但是調(diào)整后的LL和 UL必須有一定的范圍。我們將LL限定在[20%,33% ],UL限定在[65%,90% ]。節(jié)點處理數(shù)據(jù)的吞吐率ntr (node throughputrate)為單位時間內(nèi)節(jié)點上所有任務處理的數(shù)據(jù)量。由公式(1)得出。ntr = — (1)
AtCN 102541645 A
子節(jié)點處理數(shù)據(jù)的加速比nsr (node speed-up ratio)為MTS調(diào)整后的節(jié)點處理數(shù)據(jù)的吞吐率ntr與MTS調(diào)整前的ntr的比值,nsr初始化為1。為了實現(xiàn)上述目的,本發(fā)明技術方案主要包括以下步驟步驟1.通過節(jié)點負載檢測模塊對分布式計算集群子節(jié)點進行負載檢測與收集。 得到子節(jié)點的負載值workload。步驟2.通過節(jié)點任務狀態(tài)檢測模塊對分布式計算作業(yè)運行中的任務的狀態(tài)進行監(jiān)控與收集。主要獲取子節(jié)點的任務進度信息,包括子節(jié)點的ntr和nsr。步驟3.將步驟1收集的節(jié)點負載狀態(tài)和步驟2收集的節(jié)點任務狀態(tài)封裝在一起, 組成心跳信息。由子節(jié)點每隔一段時間發(fā)起的心跳通信,將心跳信息傳輸?shù)街鞴?jié)點。步驟4.主節(jié)點監(jiān)聽所有子節(jié)點發(fā)起的心跳通信。當有子節(jié)點發(fā)起心跳通信時,主節(jié)點讀取子節(jié)點傳輸過來的心跳信息。步驟5.主節(jié)點讀取子節(jié)點心跳信息中的負載值workload作為該子節(jié)點最新的負載大小,計算所有子節(jié)點最新的負載大小均值Workloadavg,然后按公式( 調(diào)整LL和UL。 當LL或UL超出其限定范圍時,按公式(3)調(diào)整。
(LL = Workloadavg — 16.5%—Workloadavg + 16.5%
fLL = 20%,ifLL < 20% j LL = 45%,ifLL >45% ...UL = 65%,ifUL<65% (3) lUL = 90%, if UL > 90%步驟6.主節(jié)點讀取子節(jié)點心跳信息中ntr和nsr,用于該節(jié)點MTS的調(diào)整。步驟7.調(diào)整子節(jié)點的MTS。流程圖如圖1所示,整個過程分為初始化階段和MTS 動態(tài)調(diào)整階段。在初始化階段,主節(jié)點接收作業(yè),初始化任務,開始執(zhí)行第一個任務。然后, 在MTS動態(tài)調(diào)整階段,首先計算節(jié)點負載值workload (即步驟1),若workload < LL表示該節(jié)點目前處于輕載區(qū),執(zhí)行MTS+1,否則繼續(xù)判斷workload是否大于UL,若大于表示該節(jié)點目前處于重載區(qū),執(zhí)行MTS-I,否則表示該節(jié)點目前處于適載區(qū),此時判斷nsr是否大于1, 若大于表示該節(jié)點任務吞吐率處于上升階段,可執(zhí)行MTS+1,若小于1表示該節(jié)點在上次調(diào)整MTS后吞吐率呈下降趨勢,執(zhí)行MTS-I。上述為MTS調(diào)整的全過程。其中,步驟1所述的節(jié)點負載檢測模塊包括負載檢測程序(程序名稱為 load-detector)和負載收集程序(load-collector),兩者構成了負載收集的主從架構,如圖2所示。每個子節(jié)點上的負載檢測程序會采集本節(jié)點的負載指標信息,加以權重計算出節(jié)點的負載值。負載指標如表1,各指標的權重會根據(jù)作業(yè)類型作相應的設置,然后由公式 (4)計算自己點的負載值workload。workload = WcpuX P cpu+wmemX P mem+wnetworkX P networkwcpu+wmem+wnetW0rk = 1(4)O ( wcpu, wmem,Wnetwork ( 1其中,wx表示負載指標χ的權重,P χ表示節(jié)點上資源χ的使用率。
權利要求
1.一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法,首先,變量定義如下將子節(jié)點負載值workload的取值范圍
劃分為三個區(qū)間輕載區(qū)、適載區(qū)和重載區(qū);其中,LL 表示適載下限值,UL表示適載上限值;由于集群初始化時對節(jié)點負載情況不了解,所以初始設置LL = 33%,UL = 66%,即將負載取值范圍平均劃分;然后在作業(yè)運行過程中動態(tài)調(diào)整LL、UL ;但是調(diào)整后的LL和UL必須有一定的范圍;我們將LL限定在[20%,33% ],UL 限定在[65%,90% ];節(jié)點處理數(shù)據(jù)的吞吐率ntr為單位時間內(nèi)節(jié)點上所有任務處理的數(shù)據(jù)量;由公式(1) 得出ntr = - (1);At子節(jié)點處理數(shù)據(jù)的加速比nsr為MTS調(diào)整后的節(jié)點處理數(shù)據(jù)的吞吐率ntr與MTS調(diào)整前的ntr的比值,nsr初始化為1 ;所述的基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法,主要包括以下步驟步驟1.通過節(jié)點負載檢測模塊對分布式計算集群子節(jié)點進行負載檢測與收集,得到子節(jié)點的負載值workload ;步驟2.通過節(jié)點任務狀態(tài)檢測模塊對分布式計算作業(yè)運行中的任務的狀態(tài)進行監(jiān)控與收集;主要獲取子節(jié)點的任務進度信息,包括子節(jié)點的ntr和nsr ;步驟3.將步驟1收集的節(jié)點負載狀態(tài)和步驟2收集的節(jié)點任務狀態(tài)封裝在一起,組成心跳信息;由子節(jié)點每隔一段時間發(fā)起的心跳通信,將心跳信息傳輸?shù)街鞴?jié)點;步驟4.主節(jié)點監(jiān)聽所有子節(jié)點發(fā)起的心跳通信;當有子節(jié)點發(fā)起心跳通信時,主節(jié)點讀取子節(jié)點傳輸過來的心跳信息;步驟5.主節(jié)點讀取子節(jié)點心跳信息中的負載值workload作為該子節(jié)點最新的負載大小,計算所有子節(jié)點最新的負載大小均值Workloadavg,然后按公式(2)調(diào)整LL和UL;當LL或UL超出其限定范圍時,按公式(3)調(diào)整(LL = workload· — 16.5% \ avg (2) · 〔UL = Workloadavg + 16.5%‘fLL = 20%,ifLL < 20% I LL = 45%,ifLL〉45% (. (UL = 65%, if UL < 65% ; Iul = 90%, if ul > 90%步驟6.主節(jié)點讀取子節(jié)點心跳信息中ntr和nsr,用于該節(jié)點MTS的調(diào)整; 步驟7.子節(jié)點MTS的動態(tài)調(diào)整,包括MTS初始化階段和動態(tài)調(diào)整階段。
2.根據(jù)權利要求1所述的一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法,其特征在于步驟1所述的節(jié)點負載檢測模塊包括負載檢測程序和負載收集程序,兩者構成了負載收集的主從架構;每個子節(jié)點上的負載檢測程序會采集本節(jié)點的負載指標信息,加以權重計算出節(jié)點的負載值;各指標的權重會根據(jù)作業(yè)類型作相應的設置,然后由公式(4)計算自己點的負載值workload workload = WcpuX P cpu+wmemX P mem+wnetworkX P networkWCpu+Wmem+Wnetwork 1(4)0 ≤ WCpU,Wmem,Wnetwork ≤1其中,WX表示負載指標X的權重,ρ X表示節(jié)點上資源X的使用率。
3.根據(jù)權利要求1所述的一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法,其特征在于步驟2所述的節(jié)點任務狀態(tài)檢測模塊包括任務監(jiān)控程序和任務管理程序,兩者構成了任務狀態(tài)監(jiān)控的主從架構。
全文摘要
本發(fā)明涉及一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法。它首先考慮收集并分析子節(jié)點實時負載狀態(tài)等相關信息,然后根據(jù)分析結果調(diào)整子節(jié)點的MTS,以此達到子節(jié)點資源得到充分合理地利用。本發(fā)明一種基于節(jié)點狀態(tài)反饋的節(jié)點任務槽動態(tài)調(diào)整方法,包括七個步驟,本發(fā)明的優(yōu)勢與功效在于本發(fā)明的優(yōu)勢在于子節(jié)點MTS可以適時調(diào)整,并且是基于子節(jié)點的實時負載狀況進行調(diào)整的,因此可以使集群節(jié)點資源得到更有效地使用且避免節(jié)點上多個任務對節(jié)點資源的過分競爭。
文檔編號G06F9/46GK102541645SQ201210001269
公開日2012年7月4日 申請日期2012年1月4日 優(yōu)先權日2012年1月4日
發(fā)明者龐瑜, 毛宏, 肖利民, 阮利 申請人:北京航空航天大學