本發(fā)明涉及高性能集群領(lǐng)域,尤其涉及一種資源分配方法及資源管理器。
背景技術(shù):
互聯(lián)網(wǎng)的高速發(fā)展產(chǎn)生了大量的用戶數(shù)據(jù),分布式處理則是處理大規(guī)模數(shù)據(jù)集的標(biāo)準(zhǔn)手段。它的典型模式是將一個(gè)用戶作業(yè)(英文:job)分解為一系列可分布式運(yùn)行的任務(wù)(英文:task),并通過調(diào)度器(英文:scheduler)將這些任務(wù)調(diào)度到合適的節(jié)點(diǎn)(英文:node)上進(jìn)行運(yùn)算。任務(wù)運(yùn)行完成之后,將任務(wù)的運(yùn)行結(jié)果做歸集、整理,形成作業(yè)最終的結(jié)果輸出。
調(diào)度器是集群資源與用戶作業(yè)的耦合點(diǎn)。調(diào)度策略的好壞直接影響了整個(gè)集群的資源利用率和用戶作業(yè)的執(zhí)行效率。目前廣泛應(yīng)用的hadoop系統(tǒng)的調(diào)度策略如圖1所示。其中,hadoop將有資源需求的task按照一定的策略,如主資源公平(英文全稱:dominantresourcefairness,英文縮寫:drf)策略)排隊(duì),而各個(gè)節(jié)點(diǎn)通過心跳上報(bào)本節(jié)點(diǎn)上的資源量,并觸發(fā)分配機(jī)制。若該節(jié)點(diǎn)上的資源量滿足第一個(gè)task的需求,調(diào)度器便將該task安放在該節(jié)點(diǎn)上。然而,該調(diào)度策略僅考慮到了資源的公平性,比較單一,并不能根據(jù)不同場(chǎng)景需要靈活地選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而無法使得集群資源的利用率較高,和/或,用戶作業(yè)的執(zhí)行效率較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種資源分配方法及資源管理器,用于靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而提高資源利用率,和/或,提升用戶作業(yè)的執(zhí)行效率。
為達(dá)到上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:
第一方面,提供一種分布式計(jì)算系統(tǒng)中的資源分配方法,該分布式計(jì)算系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn),該方法包括:接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)任務(wù),其中,該多個(gè)任務(wù)中的每個(gè)任務(wù)均配置有相對(duì)應(yīng)的資源需求量;估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間;根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,該第一分配位形用于指示該多個(gè)任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,該調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種;將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
基于本發(fā)明實(shí)施例提供的資源分配方法,該資源分配方法中,在接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)有相應(yīng)的資源需求量配置的任務(wù)之后,還估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,并根據(jù)每個(gè)任務(wù)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,然后將該多個(gè)任務(wù)按照該第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。其中,該第一分配位形用于指示該多個(gè)任務(wù)在該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。也就是說,該方案考慮了每個(gè)任務(wù)的運(yùn)行時(shí)間的因素,并且將空間需求(即任務(wù)的資源需求量)和時(shí)間需求(即任務(wù)的時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上時(shí),能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形。一方面,由于可以采用資源利用率較高的分配位形,即可以通過調(diào)度策略使得那些節(jié)點(diǎn)資源利用率較高的task組合被調(diào)度到節(jié)點(diǎn)上,因此該分配方案能有效減輕現(xiàn)有技術(shù)中資源碎片的問題,從而提升集群的資源利用率。另一方面,由于可以采用效率較高的分配位形,即可以通過調(diào)度策略使得那些作業(yè)執(zhí)行時(shí)間最短的task組合被調(diào)度到節(jié)點(diǎn)上,因此與現(xiàn)有技術(shù)相比,該分配方案能顯著縮短作業(yè)執(zhí)行時(shí)間,提升作業(yè)執(zhí)行效率。綜上,本發(fā)明實(shí)施例提供的資源分配方法能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而可以提高資源利用率,和/或,可以提升用戶作業(yè)的執(zhí)行效率。
結(jié)合第一方面,在第一方面第一種可能的實(shí)現(xiàn)方式中,若調(diào)度策略為資源利用率優(yōu)先策略,則第一分配位形具體為使得該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)中的每個(gè)計(jì)算節(jié)點(diǎn)的單節(jié)點(diǎn)資源利用率最大的分配位形。
結(jié)合第一方面,在第一方面第二種可能的實(shí)現(xiàn)方式中,若調(diào)度策略為效率優(yōu)先策略,則第一分配位形具體為使得作業(yè)的整體執(zhí)行速度最快的分配位形。
結(jié)合第一方面或第一方面第一種可能的實(shí)現(xiàn)方式或第一方面第二種可能的實(shí)現(xiàn)方式,在第一方面第三種可能的實(shí)現(xiàn)方式中,所述估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,具體可以包括:針對(duì)每個(gè)任務(wù),均按照下面針對(duì)第一任務(wù)的操作進(jìn)行處理:將第一任務(wù)的硬信息與樣本庫(kù)中的歷史任務(wù)的硬信息進(jìn)行匹配;若匹配成功,根據(jù)與第一任務(wù)的硬信息匹配的歷史任務(wù)的歷史運(yùn)行時(shí)間估計(jì)第一任務(wù)的運(yùn)行時(shí)間。
具體的,本發(fā)明實(shí)施例中的硬信息具體可以包括作業(yè)類型、執(zhí)行用戶等信息。
需要說明的是,本發(fā)明實(shí)施例僅是示例性的給出一種估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn),當(dāng)然,還可以通過其它方式估計(jì)任務(wù)的運(yùn)行時(shí)間,比如,通過預(yù)運(yùn)行任務(wù)的方式。即,通過預(yù)先運(yùn)行一小段作業(yè)實(shí)例獲得準(zhǔn)確的完整運(yùn)行時(shí)間的估計(jì)。另外,同一作業(yè)的后續(xù)任務(wù)的運(yùn)行時(shí)間參考已運(yùn)行任務(wù)的運(yùn)行時(shí)間也會(huì)獲得更為準(zhǔn)確的估計(jì)。本發(fā)明實(shí)施例對(duì)估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn)方式不做限定。
結(jié)合第一方面至第一方面第三種可能的實(shí)現(xiàn)方式中的任意一種可能的實(shí)現(xiàn)方式,在第一方面第四種可能的實(shí)現(xiàn)方式中,在根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形之前,還包括:將該多個(gè)任務(wù)按照資源的種類進(jìn)行分類,獲得至少一類任務(wù);
所述根據(jù)所述每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定所述多個(gè)任務(wù)的第一分配位形,具體包括:針對(duì)該至少一類任務(wù)中的每類任務(wù),均按照下面針對(duì)第一類任務(wù)的操作進(jìn)行處理:根據(jù)第一類任務(wù)中每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定第一類任務(wù)的子分配位形,該子分配位形用于指示該第一類任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況;將該至少一類任務(wù)中的每類任務(wù)的子分配位形的組合確定為該多個(gè)任務(wù)的第一分配位形。
由于本發(fā)明實(shí)施例提供的資源分配方法可以首先將多個(gè)任務(wù)按照資源的種類進(jìn)行分類,進(jìn)而對(duì)于每一類任務(wù)分別進(jìn)行資源分配,也就是說可以同時(shí)考慮對(duì)于異構(gòu)集群和特殊資源需求作業(yè)的資源分配,因而具有更廣泛的普適性和更好的綜合表現(xiàn)。
可選的,考慮到運(yùn)行時(shí)間的估計(jì)會(huì)與實(shí)際情況通常會(huì)產(chǎn)生一些偏差。如果對(duì)這些偏差不做控制,則隨著時(shí)間的延長(zhǎng),作業(yè)資源的預(yù)分配結(jié)果與理想結(jié)果可能相差愈來愈大。因此,本發(fā)明實(shí)施例提供的資源分配方法中,還可以引入變異機(jī)制(即重新分配)。即:
結(jié)合第一方面至第一方面第四種可能的實(shí)現(xiàn)方式中的任意一種可能的實(shí)現(xiàn)方式,在第一方面第五種可能的實(shí)現(xiàn)方式中,在所述將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上之后,還包括:根據(jù)第一分配位形,確定所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第一整體分配目標(biāo)函數(shù)值;根據(jù)所有處于等待狀態(tài)的任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定所有處于等待狀態(tài)的任務(wù)的第二分配位形,該第二分配位形用于指示該所有處于等待狀態(tài)的任務(wù)在該所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況;根據(jù)第二分配位形,確定該所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第二整體分配目標(biāo)函數(shù)值;若第二整體分配目標(biāo)函數(shù)值大于第一整體分配目標(biāo)函數(shù)值,將該所有處于等待狀態(tài)的任務(wù)按照第二分配位形分配到所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
通過上述變異機(jī)制,可以使得作業(yè)資源的預(yù)分配結(jié)果向更好的方向進(jìn)化。
第二方面,提供一種資源管理器,該資源管理器包括:接收單元、分解單元、估計(jì)單元、確定單元和分配單元:接收單元,用于接收客戶端設(shè)備提交的作業(yè);分解單元,用于將該作業(yè)分解為多個(gè)任務(wù),其中,該多個(gè)任務(wù)中的每個(gè)任務(wù)均配置有相對(duì)應(yīng)的資源需求量;估計(jì)單元,用于估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間;確定單元,用于根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,該第一分配位形用于指示該多個(gè)任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,該調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種;分配單元,用于將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
基于本發(fā)明實(shí)施例提供的資源管理器,該資源管理器在接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)有相應(yīng)的資源需求量配置的任務(wù)之后,還估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,并根據(jù)每個(gè)任務(wù)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,然后將該多個(gè)任務(wù)按照該第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。其中,該第一分配位形用于指示該多個(gè)任務(wù)在該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。也就是說,該資源管理器在進(jìn)行資源分配時(shí)考慮了每個(gè)任務(wù)的運(yùn)行時(shí)間的因素,并且將空間需求(即任務(wù)的資源需求量)和時(shí)間需求(即任務(wù)的時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上時(shí),能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形。一方面,由于可以采用資源利用率較高的分配位形,即可以通過調(diào)度策略使得那些節(jié)點(diǎn)資源利用率較高的task組合被調(diào)度到節(jié)點(diǎn)上,因此該資源管理器能有效減輕現(xiàn)有技術(shù)中資源碎片的問題,從而提升集群的資源利用率。另一方面,由于可以采用效率較高的分配位形,即可以通過調(diào)度策略使得那些作業(yè)執(zhí)行時(shí)間最短的task組合被調(diào)度到節(jié)點(diǎn)上,因此與現(xiàn)有技術(shù)相比,該資源管理器能顯著縮短作業(yè)執(zhí)行時(shí)間,提升作業(yè)執(zhí)行效率。綜上,本發(fā)明實(shí)施例提供的資源管理器能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而可以提高資源利用率,和/或,可以提升用戶作業(yè)的執(zhí)行效率。
結(jié)合第二方面,在第二方面第一種可能的實(shí)現(xiàn)方式中,若調(diào)度策略為資源利用率優(yōu)先策略,則第一分配位形具體為使得該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)中的每個(gè)計(jì)算節(jié)點(diǎn)的單節(jié)點(diǎn)資源利用率最大的分配位形。
結(jié)合第二方面,在第二方面第二種可能的實(shí)現(xiàn)方式中,若調(diào)度策略為效率優(yōu)先策略,則第一分配位形具體為使得作業(yè)的整體執(zhí)行速度最快的分配位形。
結(jié)合第二方面或第二方面第一種可能的實(shí)現(xiàn)方式或第二方面第二種可能的實(shí)現(xiàn)方式,在第二方面第三種可能的實(shí)現(xiàn)方式中,估計(jì)單元具體用于:針對(duì)每個(gè)任務(wù),均按照下面針對(duì)第一任務(wù)的操作進(jìn)行處理:將第一任務(wù)的硬信息與樣本庫(kù)中的歷史任務(wù)的硬信息進(jìn)行匹配;若匹配成功,根據(jù)與第一任務(wù)的硬信息匹配的歷史任務(wù)的歷史運(yùn)行時(shí)間估計(jì)第一任務(wù)的運(yùn)行時(shí)間。
具體的,本發(fā)明實(shí)施例中的硬信息具體可以包括作業(yè)類型、執(zhí)行用戶等信息。
需要說明的是,本發(fā)明實(shí)施例僅是示例性的給出一種估計(jì)單元估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn),當(dāng)然,估計(jì)單元還可以通過其它方式估計(jì)任務(wù)的運(yùn)行時(shí)間,比如,通過預(yù)運(yùn)行任務(wù)的方式。即,通過預(yù)先運(yùn)行一小段作業(yè)實(shí)例獲得準(zhǔn)確的完整運(yùn)行時(shí)間的估計(jì)。另外,同一作業(yè)的后續(xù)任務(wù)的運(yùn)行時(shí)間參考已運(yùn)行任務(wù)的運(yùn)行時(shí)間也會(huì)獲得更為準(zhǔn)確的估計(jì)。本發(fā)明實(shí)施例對(duì)估計(jì)單元估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn)方式不做限定。
結(jié)合第二方面至第二方面第三種可能的實(shí)現(xiàn)方式中的任意一種可能的實(shí)現(xiàn)方式,在第二方面第四種可能的實(shí)現(xiàn)方式中,資源管理器還包括分類單元;在確定單元根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形之前,分類單元,用于將該多個(gè)任務(wù)按照資源的種類進(jìn)行分類,獲得至少一類任務(wù);
確定單元具體用于:針對(duì)該至少一類任務(wù)中的每類任務(wù),均按照下面針對(duì)第一類任務(wù)的操作進(jìn)行處理:根據(jù)第一類任務(wù)中每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定第一類任務(wù)的子分配位形,該子分配位形用于指示該第一類任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況;將該至少一類任務(wù)中的每類任務(wù)的子分配位形的組合確定為該多個(gè)任務(wù)的第一分配位形。
由于本發(fā)明實(shí)施例提供的資源管理器可以首先將多個(gè)任務(wù)按照資源的種類進(jìn)行分類,進(jìn)而對(duì)于每一類任務(wù)分別進(jìn)行資源分配,也就是說可以同時(shí)考慮對(duì)于異構(gòu)集群和特殊資源需求作業(yè)的資源分配,因而具有更廣泛的普適性和更好的綜合表現(xiàn)。
可選的,考慮到運(yùn)行時(shí)間的估計(jì)會(huì)與實(shí)際情況通常會(huì)產(chǎn)生一些偏差。如果對(duì)這些偏差不做控制,則隨著時(shí)間的延長(zhǎng),作業(yè)資源的預(yù)分配結(jié)果與理想結(jié)果可能相差愈來愈大。因此,本發(fā)明實(shí)施例提供的資源管理器在進(jìn)行資源分配時(shí),還可以引入變異機(jī)制(即重新分配)。即:
結(jié)合第二方面至第二方面第四種可能的實(shí)現(xiàn)方式中的任意一種可能的實(shí)現(xiàn)方式,在第二方面第五種可能的實(shí)現(xiàn)方式中,在分配單元將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上之后,確定單元,還用于:根據(jù)第一分配位形,確定所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第一整體分配目標(biāo)函數(shù)值;根據(jù)所有處于等待狀態(tài)的任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定所有處于等待狀態(tài)的任務(wù)的第二分配位形,該第二分配位形用于指示該所有處于等待狀態(tài)的任務(wù)在該所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況;根據(jù)第二分配位形,確定該所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第二整體分配目標(biāo)函數(shù)值;分配單元,還用于若第二整體分配目標(biāo)函數(shù)值大于第一整體分配目標(biāo)函數(shù)值,將該所有處于等待狀態(tài)的任務(wù)按照第二分配位形分配到所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
通過上述變異機(jī)制,可以使得作業(yè)資源的預(yù)分配結(jié)果向更好的方向進(jìn)化。
結(jié)合第一方面第五種可能的實(shí)現(xiàn)方式,在第一方面第六種可能的實(shí)現(xiàn)方式中;或者,結(jié)合第二方面第五種可能的實(shí)現(xiàn)方式,在第二方面第六種可能的實(shí)現(xiàn)方式中,所述第一整體分配目標(biāo)函數(shù)值等于所述第一分配位形時(shí),所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)各個(gè)節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值的和;
所述第二整體分配目標(biāo)函數(shù)值等于所述第二分配位形時(shí),所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)各個(gè)節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值的和。
可選的,一種可能的實(shí)現(xiàn)方式中,上述的單節(jié)點(diǎn)分配目標(biāo)函數(shù)具體包括:
其中,在上述單節(jié)點(diǎn)分配目標(biāo)函數(shù)中,考慮了節(jié)點(diǎn)的資源利用率、作業(yè)的公平性以及作業(yè)的執(zhí)行進(jìn)度。其中,當(dāng)f=0,p=0時(shí),完全考慮資源利用率,即資源管理器110按照整體資源利用率最高的原則分配資源;當(dāng)f=1,p=0時(shí),完全考慮公平,即資源管理器110會(huì)在不同的作業(yè)間公平地分配資源;當(dāng)f=1,p=1時(shí),則完全考慮時(shí)間優(yōu)先級(jí),即資源管理器110優(yōu)先分配資源給那些更快完成的作業(yè)。當(dāng)然,f和p還可以為其它數(shù)值,用戶可以根據(jù)作業(yè)的運(yùn)行需求進(jìn)行設(shè)置,使得分配在最優(yōu)資源利用率和最優(yōu)作業(yè)執(zhí)行時(shí)間取得平衡,本發(fā)明實(shí)施例對(duì)此不作具體限定。
第三方面,提供一種資源管理器,該資源管理器包括:處理器、存儲(chǔ)器、總線和通信接口;存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,處理器與存儲(chǔ)器通過總線連接,當(dāng)資源管理器運(yùn)行時(shí),處理器執(zhí)行存儲(chǔ)器存儲(chǔ)的計(jì)算機(jī)執(zhí)行指令,以使資源管理器執(zhí)行上述如第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中所示的資源分配方法。
由于本發(fā)明實(shí)施例提供的資源管理器可以用于執(zhí)行上述如第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中所示的資源分配方法,因此,其所能獲得的技術(shù)效果可以參考上述如第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中所示的資源分配方法的技術(shù)效果,此處不再贅述。
第四方面,提供一種分布式計(jì)算機(jī)系統(tǒng),該分布式計(jì)算機(jī)系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn)和第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中所述的資源管理器;或者,該分布式計(jì)算機(jī)系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn)和第三方面所述的資源管理器。
由于本發(fā)明實(shí)施例提供的分布式計(jì)算機(jī)系統(tǒng)包括第一方面或第一方面任意一種可能的實(shí)現(xiàn)方式中所述的資源管理器;或者,包括第三方面所述的資源管理器,因此,其所能獲得的技術(shù)效果可參考上述資源管理器的技術(shù)效果,本發(fā)明實(shí)施例在此不再贅述。
第五方面,提供一種可讀介質(zhì),包括計(jì)算機(jī)執(zhí)行指令,當(dāng)資源管理器的處理器執(zhí)行該計(jì)算機(jī)執(zhí)行指令時(shí),該資源管理器執(zhí)行如上述第一方面或者第一方面的任意一種可選方式中所述的資源分配方法。
其中,本發(fā)明的這些方面或其他方面在以下實(shí)施例的描述中會(huì)更加簡(jiǎn)明易懂。
附圖說明
圖1為現(xiàn)有的hadoop系統(tǒng)的調(diào)度策略示意圖;
圖2為本發(fā)明實(shí)施例提供的一種分布式計(jì)算系統(tǒng)的邏輯架構(gòu)圖;
圖3為本發(fā)明實(shí)施例提供的一種分布式計(jì)算系統(tǒng)的物理架構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例提供的資源分配方法的原理示意圖;
圖5為本發(fā)明實(shí)施例提供的資源分配方法流程示意圖一;
圖6為本發(fā)明實(shí)施例提供的資源分配方法流程示意圖二;
圖7為本發(fā)明實(shí)施例提供的資源分配方法流程示意圖三;
圖8為本發(fā)明實(shí)施例提供的資源分配結(jié)果的變異機(jī)制示意圖;
圖9為本發(fā)明實(shí)施例提供的采用資源利用率優(yōu)先的原則進(jìn)行資源分配的結(jié)果示意圖;
圖10為本發(fā)明實(shí)施例提供的采用公平優(yōu)先的原則進(jìn)行資源分配的結(jié)果示意圖;
圖11為本發(fā)明實(shí)施例提供的資源管理器的結(jié)構(gòu)示意圖一;
圖12為本發(fā)明實(shí)施例提供的資源管理器的結(jié)構(gòu)示意圖二;
圖13為本發(fā)明實(shí)施例提供的資源管理器的結(jié)構(gòu)示意圖三。
具體實(shí)施方式
需要說明的是,為了便于清楚描述本發(fā)明實(shí)施例的技術(shù)方案,在本發(fā)明的實(shí)施例中,采用了“第一”、“第二”等字樣對(duì)功能和作用基本相同的相同項(xiàng)或相似項(xiàng)進(jìn)行區(qū)分,本領(lǐng)域技術(shù)人員可以理解“第一”、“第二”等字樣并不對(duì)數(shù)量和執(zhí)行次序進(jìn)行限定。
需要說明的是,本文中的“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:?jiǎn)为?dú)存在a,同時(shí)存在a和b,單獨(dú)存在b這三種情況?!岸鄠€(gè)”是指兩個(gè)或多于兩個(gè)。
如本申請(qǐng)所使用的,術(shù)語(yǔ)“組件”、“模塊”、“系統(tǒng)”等等旨在指代計(jì)算機(jī)相關(guān)實(shí)體,該計(jì)算機(jī)相關(guān)實(shí)體可以是硬件、固件、硬件和軟件的結(jié)合、軟件或者運(yùn)行中的軟件。例如,組件可以是,但不限于是:在處理器上運(yùn)行的處理、處理器、對(duì)象、可執(zhí)行文件、執(zhí)行中的線程、程序和/或計(jì)算機(jī)。作為示例,在計(jì)算設(shè)備上運(yùn)行的應(yīng)用和該計(jì)算設(shè)備都可以是組件。一個(gè)或多個(gè)組件可以存在于執(zhí)行中的過程和/或線程中,并且組件可以位于一個(gè)計(jì)算機(jī)中以及/或者分布在兩個(gè)或更多個(gè)計(jì)算機(jī)之間。此外,這些組件能夠從在其上具有各種數(shù)據(jù)結(jié)構(gòu)的各種計(jì)算機(jī)可讀介質(zhì)中執(zhí)行。這些組件可以通過諸如根據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)分組(例如,來自一個(gè)組件的數(shù)據(jù),該組件與本地系統(tǒng)、分布式系統(tǒng)中的另一個(gè)組件進(jìn)行交互和/或以信號(hào)的方式通過諸如互聯(lián)網(wǎng)之類的網(wǎng)絡(luò)與其它系統(tǒng)進(jìn)行交互)的信號(hào),以本地和/或遠(yuǎn)程過程的方式進(jìn)行通信。
本申請(qǐng)將圍繞可包括多個(gè)設(shè)備、組件、模塊等的系統(tǒng)來呈現(xiàn)各個(gè)方面、實(shí)施例或特征。應(yīng)當(dāng)理解和明白的是,各個(gè)系統(tǒng)可以包括另外的設(shè)備、組件、模塊等,并且/或者可以并不包括結(jié)合附圖討論的所有設(shè)備、組件、模塊等。此外,還可以使用這些方案的組合。
另外,在本發(fā)明實(shí)施例中,“示例的”一詞用于表示作例子、例證或說明。本申請(qǐng)中被描述為“示例”的任何實(shí)施例或設(shè)計(jì)方案不應(yīng)被解釋為比其它實(shí)施例或設(shè)計(jì)方案更優(yōu)選或更具優(yōu)勢(shì)。確切而言,使用示例的一詞旨在以具體方式呈現(xiàn)概念。
本發(fā)明實(shí)施例描述的場(chǎng)景是為了更加清楚的說明本發(fā)明實(shí)施例的技術(shù)方案,并不構(gòu)成對(duì)于本發(fā)明實(shí)施例提供的技術(shù)方案的限定,本領(lǐng)域普通技術(shù)人員可知,隨著新場(chǎng)景的出現(xiàn),本發(fā)明實(shí)施例提供的技術(shù)方案對(duì)于類似的技術(shù)問題,同樣適用。
為了下述各實(shí)施例的描述清楚簡(jiǎn)潔,首先給出相關(guān)概念的簡(jiǎn)要介紹:
cluster:集群,指多臺(tái)同構(gòu)的或者異構(gòu)的計(jì)算機(jī)節(jié)點(diǎn)通過網(wǎng)絡(luò)組合起來,配合一定的集群管理系統(tǒng),形成的能對(duì)外提供統(tǒng)一計(jì)算或存儲(chǔ)服務(wù)的設(shè)施。
resource:資源,即指分布式集群上可供利用的內(nèi)存、中央處理器(英文全稱:centralprocessingunit,英文縮寫:cpu)、網(wǎng)絡(luò)、磁盤等用于運(yùn)行作業(yè)所必須的硬件。
job:作業(yè),指用戶通過客戶端設(shè)備向集群提交的可被運(yùn)行的一個(gè)完整的任務(wù)。
task:任務(wù),一個(gè)作業(yè)被提交到集群上執(zhí)行時(shí),通常分解為很多任務(wù),每個(gè)任務(wù)運(yùn)行在一個(gè)特定的集群節(jié)點(diǎn)上,并占用一定量的資源。
scheduler:調(diào)度器,是用來向作業(yè)分配可供任務(wù)運(yùn)行的資源的引擎模塊,也是集群管理系統(tǒng)最重要的組成部分。
本發(fā)明實(shí)施例的方案可典型地應(yīng)用于分布式計(jì)算系統(tǒng)中,用于實(shí)現(xiàn)任務(wù)調(diào)度以及資源的高效分配。圖2示出了一種分布式計(jì)算系統(tǒng)的邏輯架構(gòu)圖,根據(jù)圖2,該分布式計(jì)算系統(tǒng)包括由集群資源構(gòu)成的資源池,資源管理器以及計(jì)算框架,集群資源即集群中各個(gè)計(jì)算節(jié)點(diǎn)的運(yùn)算、存儲(chǔ)等硬件資源,資源管理器部署在集群中的一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上,或者也可以作為一個(gè)獨(dú)立的物理設(shè)備,用于統(tǒng)一管理集群資源,并為上層的計(jì)算框架提供資源調(diào)度能力。一個(gè)分布式計(jì)算系統(tǒng)可以同時(shí)支持多種不同的計(jì)算框架,如圖2所示的系統(tǒng),該系統(tǒng)可支持mr(英文全稱:mapreduce)、storm、s4(英文全稱:simplescalablestreamingsystem)以及mpi(英文全稱:messagepassinginterface)等計(jì)算框架中的一種或多種。資源管理器通過對(duì)客戶端設(shè)備發(fā)送的不同計(jì)算框架類型的應(yīng)用程序進(jìn)行統(tǒng)一的調(diào)度,以便提高資源利用率。圖3進(jìn)一步示出了分布式計(jì)算系統(tǒng)的物理架構(gòu)示意圖,包括集群、資源管理器和客戶端設(shè)備,其中,集群中包括多個(gè)節(jié)點(diǎn)(圖3中僅僅示出了三個(gè)節(jié)點(diǎn)),資源管理器部署在集群中的某個(gè)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)均可以與資源管理器通信,客戶端設(shè)備向資源管理器提交應(yīng)用程序的資源請(qǐng)求,資源管理器根據(jù)特定的資源調(diào)度策略將節(jié)點(diǎn)的資源分配給應(yīng)用程序,以使得應(yīng)用程序根據(jù)分配的節(jié)點(diǎn)資源在該節(jié)點(diǎn)上運(yùn)行。
本發(fā)明實(shí)施例主要對(duì)分布式計(jì)算系統(tǒng)中的資源管理器進(jìn)行了優(yōu)化,使其更合理地為任務(wù)分配資源,以提高資源利用率。其中,圖4為本發(fā)明實(shí)施例提供的資源的分配方法的原理示意圖。
如圖4所示,本發(fā)明實(shí)施例中,在客戶端設(shè)備提交作業(yè)后,作業(yè)被分解為一系列可分布式運(yùn)行的任務(wù)(task),每個(gè)task都配置有相對(duì)應(yīng)的資源需求量(圖2中用橫向的寬度表征資源需求量)。當(dāng)task經(jīng)過上述資源管理器中的經(jīng)驗(yàn)?zāi)K(英文全稱:experiencedexpert,英文縮寫:e-expert)時(shí),e-expert通過資源管理器中的樣本庫(kù)中的作業(yè)歷史執(zhí)行情況估計(jì)每個(gè)task的運(yùn)行時(shí)間,進(jìn)而可以得到空間需求(即task的資源需求量)和時(shí)間需求(即task的運(yùn)行時(shí)間,圖2中用縱向的長(zhǎng)度表征task運(yùn)行時(shí)間)固定的task。打包模塊(英文:packer)考慮一定的調(diào)度策略,將空間需求(即task的資源需求量)和時(shí)間需求(即task的運(yùn)行時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上。其中,該調(diào)度策略包括資源利用率優(yōu)先策略、或者效率優(yōu)先策略。也就是說,打包方法能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形。
其中,task在每個(gè)節(jié)點(diǎn)形成一個(gè)等待隊(duì)列,每個(gè)等待隊(duì)列的長(zhǎng)度都是大致相等的。在task排隊(duì)等待過程中,有可能發(fā)生變異導(dǎo)致新一輪的作業(yè)資源的重新分配。如果新分配位形的整體資源利用率更高或者效率更高,則更新到新的分配位形。
除此之外,每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)節(jié)點(diǎn)追蹤器(英文:nodetracker)實(shí)例,負(fù)責(zé)周期性的向e-expert報(bào)告task的運(yùn)行情況,并更新經(jīng)驗(yàn)?zāi)K樣本庫(kù)中的統(tǒng)計(jì)信息。
需要說明的是,在圖2中,相同的填充用于表征需要相同的資源類型,如cpu或者內(nèi)存等,本發(fā)明實(shí)施例對(duì)圖2中各個(gè)填充表征的資源類型不作具體限定。
由于該方案考慮了每個(gè)任務(wù)的運(yùn)行時(shí)間的因素,并且打包模塊將空間需求(即task的資源需求量)和時(shí)間需求(即task的運(yùn)行時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上時(shí),能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形,因此能夠減輕現(xiàn)有技術(shù)中資源碎片的問題,顯著提高集群資源的利用率,和/或,可以縮短作業(yè)執(zhí)行時(shí)間,提升作業(yè)的執(zhí)行效率。
下面將基于圖4所示的資源的分配方法的原理示意圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
如圖5所示,本發(fā)明實(shí)施例提供一種資源分配方法,包括步驟s501-s504:
s501、資源管理器接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)任務(wù),其中,該多個(gè)任務(wù)中的每個(gè)任務(wù)均配置有相對(duì)應(yīng)的資源需求量。
s502、資源管理器估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間。
s503、資源管理器根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,該第一分配位形用于指示該多個(gè)任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,該調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。
s504、資源管理器將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
具體的,本發(fā)明實(shí)施例步驟s501中:
資源需求量具體可以是cpu資源的需求量,和/或,內(nèi)存資源的需求量,和/或,網(wǎng)絡(luò)帶寬的需求量,等等,本發(fā)明實(shí)施例對(duì)此不作具體限定。
具體的,本發(fā)明實(shí)施例步驟s502中:
一般來說,一個(gè)任務(wù)的具體執(zhí)行時(shí)間外界是無法得知的。但是,在絕大多數(shù)情況下,一類任務(wù)會(huì)重復(fù)執(zhí)行。如在企業(yè)客戶場(chǎng)景中,可能需要每天執(zhí)行重復(fù)的數(shù)據(jù)統(tǒng)計(jì)工作。因此,基于歷史信息的統(tǒng)計(jì)往往能夠給出一類任務(wù)運(yùn)行時(shí)間的估計(jì)。為此,資源管理器中可能需要一個(gè)模塊維護(hù)一個(gè)統(tǒng)計(jì)信息庫(kù),用于記錄集群歷史作業(yè)信息,比如圖4中的e-expert模塊。當(dāng)有新的任務(wù)到來時(shí),根據(jù)歷史統(tǒng)計(jì)信息將該任務(wù)匹配到某一類,然后根據(jù)該類任務(wù)的運(yùn)行歷史估計(jì)出該任務(wù)的運(yùn)行時(shí)間。
e-expert模塊通常將信息分為硬信息與軟信息兩類。
硬信息包括作業(yè)類型、執(zhí)行用戶等。不同作業(yè)類型的任務(wù)顯然不屬于同一類。而同一用戶運(yùn)行的作業(yè)有很大可能是同一類,甚至是重復(fù)執(zhí)行的作業(yè)。硬信息由下述的樣本庫(kù)維護(hù)。
軟信息包括該任務(wù)處理的數(shù)據(jù)量的大小、輸入數(shù)據(jù)大小、輸出數(shù)據(jù)大小等。這類信息往往不是固定的,但是運(yùn)行時(shí)間與這類信息之間存在著密切的關(guān)聯(lián)。軟信息需要做額外的統(tǒng)計(jì),統(tǒng)計(jì)信息由下述的統(tǒng)計(jì)庫(kù)維護(hù)。
進(jìn)而,可選的,資源管理器可以通過如下方式估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,具體包括:
針對(duì)每個(gè)任務(wù),均按照下面針對(duì)第一任務(wù)的操作進(jìn)行處理:
將第一任務(wù)的硬信息與樣本庫(kù)中的歷史任務(wù)的硬信息進(jìn)行匹配。
若匹配成功,根據(jù)與該第一任務(wù)的硬信息匹配的歷史任務(wù)的歷史運(yùn)行時(shí)間估計(jì)該第一任務(wù)的運(yùn)行時(shí)間。
需要說明的是,當(dāng)有新的任務(wù)到來時(shí),若根據(jù)歷史統(tǒng)計(jì)信息無法將該任務(wù)匹配到某一類,則可以通過給該任務(wù)賦予全局平局值的方式估計(jì)該任務(wù)的運(yùn)行時(shí)間,該全局平局值可以為所有歷史任務(wù)的運(yùn)行時(shí)間的平均值,本發(fā)明實(shí)施例對(duì)該情況不作具體限定。
需要說明的是,本發(fā)明實(shí)施例僅是示例性的給出一種估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn),當(dāng)然,還可以通過其它方式估計(jì)任務(wù)的運(yùn)行時(shí)間,比如,通過預(yù)運(yùn)行任務(wù)的方式。即,通過預(yù)先運(yùn)行一小段作業(yè)實(shí)例獲得準(zhǔn)確的完整運(yùn)行時(shí)間的估計(jì)。另外,同一作業(yè)的后續(xù)任務(wù)的運(yùn)行時(shí)間參考已運(yùn)行任務(wù)的運(yùn)行時(shí)間也會(huì)獲得更為準(zhǔn)確的估計(jì)。本發(fā)明實(shí)施例對(duì)估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn)方式不做限定。
具體的,本發(fā)明實(shí)施例步驟s503中:
調(diào)度策略具體可以包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。其中,
若調(diào)度策略為資源利用率優(yōu)先策略,則第一分配位形具體可以為使得多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)中的每個(gè)計(jì)算節(jié)點(diǎn)的單節(jié)點(diǎn)資源利用率最大的分配位形。
或者,若調(diào)度策略為效率優(yōu)先策略,則第一分配位形具體可以為使得作業(yè)的整體執(zhí)行速度最快的分配位形。
本發(fā)明實(shí)施例對(duì)該第一分配位形的具體形式不作具體限定。
基于本發(fā)明實(shí)施例提供的資源分配方法,該資源分配方法中,在接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)有相應(yīng)的資源需求量配置的任務(wù)之后,還估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,并根據(jù)每個(gè)任務(wù)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,然后將該多個(gè)任務(wù)按照該第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。其中,該第一分配位形用于指示該多個(gè)任務(wù)在該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。也就是說,該方案考慮了每個(gè)任務(wù)的運(yùn)行時(shí)間的因素,并且將空間需求(即任務(wù)的資源需求量)和時(shí)間需求(即任務(wù)的時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上時(shí),能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形。一方面,由于可以采用資源利用率較高的分配位形,即可以通過調(diào)度策略使得那些節(jié)點(diǎn)資源利用率較高的task組合被調(diào)度到節(jié)點(diǎn)上,因此該分配方案能有效減輕現(xiàn)有技術(shù)中資源碎片的問題,從而提升集群的資源利用率。另一方面,由于可以采用效率較高的分配位形,即可以通過調(diào)度策略使得那些作業(yè)執(zhí)行時(shí)間最短的task組合被調(diào)度到節(jié)點(diǎn)上,因此與現(xiàn)有技術(shù)相比,該分配方案能顯著縮短作業(yè)執(zhí)行時(shí)間,提升作業(yè)執(zhí)行效率。綜上,本發(fā)明實(shí)施例提供的資源分配方法能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而可以提高資源利用率,和/或,可以提升用戶作業(yè)的執(zhí)行效率。
可選的,本發(fā)明實(shí)施例提供的資源分配方法中,還可以同時(shí)考慮對(duì)于異構(gòu)集群和特殊資源需求作業(yè)的資源分配。
即,如圖6所示,在資源管理器根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形(步驟s503)之前,還可以包括步驟s505:
s505、資源管理器將該多個(gè)任務(wù)按照資源的種類進(jìn)行分類,獲得至少一類任務(wù)。
其中,資源種類具體可以包括異構(gòu)資源種類和非異構(gòu)資源種類等,異構(gòu)資源種類也可以根據(jù)是何種異構(gòu)資源進(jìn)行再次劃分,本發(fā)明實(shí)施例對(duì)此不作具體限定。
進(jìn)而,資源管理器根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形(步驟s503),具體可以包括步驟s503a和s503b:
s503a、針對(duì)該至少一類任務(wù)中的每類任務(wù),資源管理器均按照下面針對(duì)第一類任務(wù)的操作進(jìn)行處理:
根據(jù)該第一類任務(wù)中的每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該第一類任務(wù)的子分配位形,該子分配位形用于指示該第一類任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況。
s503b、資源管理器將該至少一類任務(wù)中的每類任務(wù)的子分配位形的組合確定為該多個(gè)任務(wù)的第一分配位形。
由于本發(fā)明實(shí)施例提供的資源分配方法首先將多個(gè)任務(wù)按照資源的種類進(jìn)行分類,進(jìn)而對(duì)于每一類任務(wù)分別進(jìn)行資源分配,也就是說可以同時(shí)考慮對(duì)于異構(gòu)集群和特殊資源需求作業(yè)的資源分配,因而具有更廣泛的普適性和更好的綜合表現(xiàn)。
可選的,考慮到運(yùn)行時(shí)間的估計(jì)會(huì)與實(shí)際情況通常會(huì)產(chǎn)生一些偏差。如果對(duì)這些偏差不做控制,則隨著時(shí)間的延長(zhǎng),作業(yè)資源的預(yù)分配結(jié)果與理想結(jié)果可能相差愈來愈大。因此,本發(fā)明實(shí)施例提供的資源分配方法中,還可以引入變異機(jī)制(即重新分配)。
即,如圖7所示,在資源管理器將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上(步驟s504)之后,還可以包括步驟s506-s509:
s506、資源管理器根據(jù)該第一分配位形,確定所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第一整體分配目標(biāo)函數(shù)值。
s507、資源管理器根據(jù)該所有處于等待狀態(tài)的任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定所有處于等待狀態(tài)的任務(wù)的第二分配位形,該第二分配位形用于指示該所有處于等待狀態(tài)的任務(wù)在所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況。
s508、資源管理器根據(jù)該第二分配位形,確定該所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第二整體分配目標(biāo)函數(shù)值。
s509、若第二整體分配目標(biāo)函數(shù)值大于第一整體分配目標(biāo)函數(shù)值,資源管理器將該所有處于等待狀態(tài)的任務(wù)按照第二分配位形分配到該所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
可選的,本發(fā)明實(shí)施例中,整體分配目標(biāo)函數(shù)值可通過如下公式(1)獲得:
s=∑nsn公式(1)
其中,sn表示單節(jié)點(diǎn)n的分配目標(biāo)函數(shù)值;s表示整體分配目標(biāo)函數(shù)值。
即,步驟s506中第一整體分配目標(biāo)函數(shù)值等于第一分配位形時(shí),所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)各個(gè)節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值的和。
步驟s508中第二整體分配目標(biāo)函數(shù)值等于第二分配位形時(shí),所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)各個(gè)節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值的和。
可選的,本發(fā)明實(shí)施例中,單節(jié)點(diǎn)分配目標(biāo)函數(shù)具體可以如公式(2)所示:
其中,sn表示單節(jié)點(diǎn)n的分配目標(biāo)函數(shù)值;p表示作業(yè)時(shí)間優(yōu)先級(jí)因子,p>0;f表示作業(yè)公平性因子,f>0;p+f≤1;m表示作業(yè)的數(shù)量。
se,n表示節(jié)點(diǎn)n上的資源利用率得分,
sp,j表示作業(yè)j的執(zhí)行進(jìn)度,
sf,j表示作業(yè)j的公平性得分,
需要說明的是,在多維資源的情況下,上述公式中的rn、rt、rf等參數(shù)均為矢量。
在上述公式(2)中,考慮了節(jié)點(diǎn)的資源利用率、作業(yè)的公平性以及作業(yè)的執(zhí)行進(jìn)度。其中,當(dāng)f=0,p=0時(shí),完全考慮資源利用率,即資源管理器按照整體資源利用率最高的原則分配資源;當(dāng)f=1,p=0時(shí),完全考慮公平,即資源管理器會(huì)在不同的作業(yè)間公平地分配資源;當(dāng)f=1,p=1時(shí),則完全考慮時(shí)間優(yōu)先級(jí),即資源管理器優(yōu)先分配資源給那些更快完成的作業(yè)。當(dāng)然,f和p還可以為其它數(shù)值,用戶可以根據(jù)作業(yè)的運(yùn)行需求進(jìn)行設(shè)置,使得分配在最優(yōu)資源利用率和最優(yōu)作業(yè)執(zhí)行時(shí)間取得平衡,本發(fā)明實(shí)施例對(duì)此不作具體限定。
本發(fā)明實(shí)施例對(duì)此不作具體限定。
需要說明的是,公式(2)僅是示例性的給出一種單節(jié)點(diǎn)分配目標(biāo)函數(shù)的具體實(shí)現(xiàn),當(dāng)然,根據(jù)不同的分配考慮因素,該單節(jié)點(diǎn)分配目標(biāo)函數(shù)還可以為其它,本發(fā)明實(shí)施例對(duì)此不作具體限定。
通過上述變異機(jī)制,可以使得作業(yè)資源的預(yù)分配結(jié)果向更好的方向進(jìn)化。其中,圖8示意性的給出了一種作業(yè)資源的分配結(jié)果的變異機(jī)制示意圖,可以看出,隨著時(shí)間的延長(zhǎng),作業(yè)資源的預(yù)分配結(jié)果與理想結(jié)果可能相差愈來愈大。經(jīng)過上述變異機(jī)制,可以將節(jié)點(diǎn)3上的任務(wù)1調(diào)整到節(jié)點(diǎn)1上,將節(jié)點(diǎn)2上的任務(wù)2調(diào)整到節(jié)點(diǎn)3上,將節(jié)點(diǎn)1上的任務(wù)3調(diào)整到節(jié)點(diǎn)2上,從而使得作業(yè)資源的預(yù)分配結(jié)果向更好的方向進(jìn)化。
需要說明的是,在圖8中,相同的填充用于表征需要相同的資源類型,如cpu或者內(nèi)存等,本發(fā)明實(shí)施例對(duì)圖8中各個(gè)填充表征的資源類型不作具體限定。
下面將以結(jié)合一個(gè)具體示例對(duì)上述各實(shí)施例中的資源分配方法進(jìn)行說明。
示例性的,假設(shè)有四個(gè)節(jié)點(diǎn)node1,node2,node3和node4,其中,node1,node2和node3為同構(gòu)節(jié)點(diǎn),各有6個(gè)核,12g內(nèi)存,2gbps的網(wǎng)絡(luò)帶寬;node4是個(gè)異構(gòu)的圖形計(jì)算節(jié)點(diǎn),有2個(gè)核,2g內(nèi)存和一個(gè)128核的圖形處理器(英文全稱:graphicsprocessingunit,英文縮寫:gpu)顯卡。
另外,假設(shè)有四個(gè)job,每個(gè)job提交的task的資源需求量如下所示。其中,括號(hào)中的三維數(shù)字分別代表task所需的核的數(shù)量,內(nèi)存的大小和網(wǎng)絡(luò)帶寬的大?。?/p>
joba:18個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:2個(gè)maptask(1,1,0),需要gpu;
同時(shí),假設(shè)所有joba,jobb和jobc的task的運(yùn)行時(shí)間估計(jì)均為t,而jobd的task的運(yùn)行時(shí)間估計(jì)為4t。
情況一:
此時(shí),若采用資源利用率優(yōu)先的原則,比如整體資源利用率最高,也就是上述單節(jié)點(diǎn)分配目標(biāo)函數(shù)(公式(2))中的f=0,p=0,則joba,jobb,jobc和jobd的task將按照如下流程調(diào)度:
步驟1、將所有task按照是否具有異構(gòu)資源需求進(jìn)行分類。
此時(shí),joba,jobb,jobc和jobd的所有的task可以分為兩類:需要gpu的和不需要gpu的。
步驟2、對(duì)于需要gpu的2個(gè)maptask,將其調(diào)度到節(jié)點(diǎn)node4。
經(jīng)過此輪分配,處于等待狀態(tài)的task的狀況是:
joba:18個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟3、對(duì)于剩余的task,現(xiàn)在的集群還剩余node1,node2和node3三個(gè)節(jié)點(diǎn),總共(18,36,6)資源。
步驟4、對(duì)于node1節(jié)點(diǎn),經(jīng)計(jì)算,joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
對(duì)于node2和node3節(jié)點(diǎn),經(jīng)計(jì)算,joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,并且joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大。因此,將joba中的剩余12個(gè)maptask平均分配到node2和node3節(jié)點(diǎn)上。
需要說明的是,由于該示例中假設(shè)所有joba,jobb和jobc的task的運(yùn)行時(shí)間估計(jì)均為t,也就是運(yùn)行時(shí)間均相等,并且f=0,p=0,因此單節(jié)點(diǎn)分配目標(biāo)函數(shù)
相比之下,若取jobb兩個(gè)maptask形成tasks包,則單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn小于上述值,此處就不再一一驗(yàn)證。
同理,根據(jù)上述退化公式,可以確定joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,本發(fā)明實(shí)施例在此就不再一一驗(yàn)證。
經(jīng)過此輪分配,處于等待狀態(tài)的task的狀況是:
joba:0個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟5、繼續(xù)分配:
經(jīng)計(jì)算,joba的1個(gè)reducetask和jobb的2個(gè)maptask形成tasks包(總共(6,2,2)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,joba的1個(gè)reducetask和jobb的2個(gè)maptask形成tasks包(總共(6,2,2)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,joba的1個(gè)reducetask和jobb的2個(gè)maptask形成tasks包(總共(6,2,2)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,處于等待狀態(tài)的task的狀況是:
joba:0個(gè)maptask(1,2,0),0個(gè)reducetask(0,0,2);
jobb:0個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0)需要gpu。
步驟6、繼續(xù)分配:
經(jīng)計(jì)算,jobb的1個(gè)reducetask和jobc的2個(gè)maptask形成tasks包(總共(6,2,2)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,jobb的1個(gè)reducetask和jobc的2個(gè)maptask形成tasks包(總共(6,2,2)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,jobb的1個(gè)reducetask和jobc的2個(gè)maptask形成tasks包(總共(6,2,2)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,處于等待狀態(tài)的task的狀況是:
joba:0個(gè)maptask(1,2,0),0個(gè)reducetask(0,0,2);
jobb:0個(gè)maptask(3,1,0),0個(gè)reducetask(0,0,2);
jobc:0個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟7、繼續(xù)分配:
將jobc剩余的3個(gè)task分配在三個(gè)節(jié)點(diǎn)上,這樣,所有分配進(jìn)行完畢,最終的目標(biāo)分配位形如圖9所示。
情況二:
此時(shí),若采用公平優(yōu)先的原則,比如上述單節(jié)點(diǎn)分配目標(biāo)函數(shù)(公式(2))中的f=1,p=0,則joba,jobb,jobc和jobd的task將按照如下流程調(diào)度:
步驟1、將所有task按照是否具有異構(gòu)資源需求進(jìn)行分類。
此時(shí),joba,jobb,jobc和jobd的所有的task可以分為兩類:需要gpu的和不需要gpu的。
步驟2、對(duì)于需要gpu的2個(gè)maptask,將其調(diào)度到節(jié)點(diǎn)node4。
經(jīng)過此輪分配,處于等待狀態(tài)的task的狀況是:
joba:18個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:6個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟3、對(duì)于剩余的task,現(xiàn)在的集群還剩余node1,node2和node3三個(gè)節(jié)點(diǎn),總共(18,36,6)資源。
步驟4、對(duì)于node1節(jié)點(diǎn),經(jīng)計(jì)算,joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
對(duì)于node2節(jié)點(diǎn),經(jīng)計(jì)算,jobb中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
對(duì)于node3節(jié)點(diǎn),經(jīng)計(jì)算,jobc中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
需要說明的是,由于該示例中假設(shè)所有joba,jobb和jobc的task的運(yùn)行時(shí)間估計(jì)均為t,也就是運(yùn)行時(shí)間均相等,并且f=1,p=0,因此單節(jié)點(diǎn)分配目標(biāo)函數(shù)
同理,根據(jù)上述退化公式,可以確定jobb中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,jobc中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,本發(fā)明實(shí)施例在此就不再一一驗(yàn)證。
經(jīng)過此輪分配,處于等待狀態(tài)的task的狀況是:
joba:12個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:4個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:4個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟5、繼續(xù)分配:
經(jīng)計(jì)算,joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,jobb中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,jobc中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,處于等待狀態(tài)的task的狀況是:
joba:6個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:2個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:2個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟6、繼續(xù)分配:
經(jīng)計(jì)算,joba中的6個(gè)maptask形成的tasks包(總共(6,12,0)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,jobb中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,jobc中的2個(gè)maptask形成的tasks包(總共(6,2,0)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,處于等待狀態(tài)的task的狀況是:
joba:0個(gè)maptask(1,2,0),3個(gè)reducetask(0,0,2);
jobb:0個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobc:0個(gè)maptask(3,1,0),3個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟7、繼續(xù)分配:
經(jīng)計(jì)算,joba中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,jobb中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,jobc中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,處于等待狀態(tài)的task的狀況是:
joba:0個(gè)maptask(1,2,0),2個(gè)reducetask(0,0,2);
jobb:0個(gè)maptask(3,1,0),2個(gè)reducetask(0,0,2);
jobc:0個(gè)maptask(3,1,0),2個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu。
步驟8、繼續(xù)分配:
經(jīng)計(jì)算,joba中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,jobb中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,jobc中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,處于等待狀態(tài)的task的狀況是:
joba:0個(gè)maptask(1,2,0),1個(gè)reducetask(0,0,2);
jobb:0個(gè)maptask(3,1,0),1個(gè)reducetask(0,0,2);
jobc:0個(gè)maptask(3,1,0),1個(gè)reducetask(0,0,2);
jobd:0個(gè)maptask(1,1,0),需要gpu;
步驟9、繼續(xù)分配:
經(jīng)計(jì)算,joba中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node1節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node1上。
經(jīng)計(jì)算,jobb中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node2節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node2上。
經(jīng)計(jì)算,jobc中的1個(gè)reducetask形成的tasks包(總共(0,0,2)資源)使得node3節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值sn最大,因此,將該tasks包放置在node3上。
這樣經(jīng)過此輪分配后,所有分配進(jìn)行完畢,最終的目標(biāo)分配位形如圖10所示。
情況三:
此時(shí),若采用時(shí)間優(yōu)先的原則,比如整體執(zhí)行效率最高,也就是上述單節(jié)點(diǎn)分配目標(biāo)函數(shù)(公式(2))中的f=0,p=1,則joba,jobb,jobc和jobd的task在進(jìn)行分配時(shí)將完全考慮時(shí)間優(yōu)先級(jí),即資源管理器優(yōu)先分配資源給那些更快完成的作業(yè)。此時(shí),單節(jié)點(diǎn)分配目標(biāo)函數(shù)
由圖9和圖10對(duì)應(yīng)的示例可以看出,若忽略公平性,則資源利用率優(yōu)先的分配方式可有效縮短作業(yè)整體執(zhí)行時(shí)間到4t,而若考慮公平性,則公平優(yōu)先的分配方式的整體作業(yè)執(zhí)行時(shí)間為6t。
如圖11所示,本發(fā)明實(shí)施例提供一種資源管理器110,用于執(zhí)行以上圖5-圖7所示的資源分配方法。該資源管理器110可以包括相應(yīng)步驟所對(duì)應(yīng)的單元,示例的,可以包括:接收單元1101、分解單元1106、估計(jì)單元1102、確定單元1103和分配單元1104。
接收單元1101,用于接收客戶端設(shè)備提交的作業(yè)。
分解單元1106,用于將該作業(yè)分解為多個(gè)任務(wù),其中,該多個(gè)任務(wù)中的每個(gè)任務(wù)均配置有相對(duì)應(yīng)的資源需求量。
估計(jì)單元1102,用于估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間。
確定單元1103,用于根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,該第一分配位形用于指示該多個(gè)任務(wù)在該多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,該調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。
分配單元1104,用于將該多個(gè)任務(wù)按照第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
可選的,若調(diào)度策略為資源利用率優(yōu)先策略,則第一分配位形具體可以為使得該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)中的每個(gè)計(jì)算節(jié)點(diǎn)的單節(jié)點(diǎn)資源利用率最大的分配位形。
可選的,若調(diào)度策略為效率優(yōu)先策略,則第一分配位形可以為使得作業(yè)的整體執(zhí)行速度最快的分配位形。
本發(fā)明實(shí)施例對(duì)第一分配位形的具體形式不作具體限定。
可選的,估計(jì)單元1102具體可以用于:
針對(duì)每個(gè)任務(wù),均按照下面針對(duì)第一任務(wù)的操作進(jìn)行處理:
將第一任務(wù)的硬信息與樣本庫(kù)中的歷史任務(wù)的硬信息進(jìn)行匹配;
若匹配成功,根據(jù)與第一任務(wù)的硬信息匹配的歷史任務(wù)的歷史運(yùn)行時(shí)間估計(jì)第一任務(wù)的運(yùn)行時(shí)間。
具體的,本發(fā)明實(shí)施例中的硬信息包括作業(yè)類型、執(zhí)行用戶等信息。
需要說明的是,本發(fā)明實(shí)施例僅是示例性的給出估計(jì)單元1102估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn),當(dāng)然,估計(jì)單元1102還可以通過其它方式估計(jì)任務(wù)的運(yùn)行時(shí)間,比如,通過預(yù)運(yùn)行任務(wù)的方式。即,通過預(yù)先運(yùn)行一小段作業(yè)實(shí)例獲得準(zhǔn)確的完整運(yùn)行時(shí)間的估計(jì)。另外,同一作業(yè)的后續(xù)任務(wù)的運(yùn)行時(shí)間參考已運(yùn)行任務(wù)的運(yùn)行時(shí)間也會(huì)獲得更為準(zhǔn)確的估計(jì)。本發(fā)明實(shí)施例對(duì)估計(jì)單元1102估計(jì)任務(wù)運(yùn)行時(shí)間的具體實(shí)現(xiàn)方式不做限定。
基于本發(fā)明實(shí)施例提供的資源管理器110,該資源管理器110在接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)有相應(yīng)的資源需求量配置的任務(wù)之后,還估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,并根據(jù)每個(gè)任務(wù)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,然后將該多個(gè)任務(wù)按照該第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。其中,該第一分配位形用于指示該多個(gè)任務(wù)在該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。也就是說,該資源管理器110在進(jìn)行資源分配時(shí)考慮了每個(gè)任務(wù)的運(yùn)行時(shí)間的因素,并且將空間需求(即任務(wù)的資源需求量)和時(shí)間需求(即任務(wù)的時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上時(shí),能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形。一方面,由于可以采用資源利用率較高的分配位形,即可以通過調(diào)度策略使得那些節(jié)點(diǎn)資源利用率較高的task組合被調(diào)度到節(jié)點(diǎn)上,因此該資源管理器110能有效減輕現(xiàn)有技術(shù)中資源碎片的問題,從而提升集群的資源利用率。另一方面,由于可以采用效率較高的分配位形,即可以通過調(diào)度策略使得那些作業(yè)執(zhí)行時(shí)間最短的task組合被調(diào)度到節(jié)點(diǎn)上,因此與現(xiàn)有技術(shù)相比,該資源管理器110能顯著縮短作業(yè)執(zhí)行時(shí)間,提升作業(yè)執(zhí)行效率。綜上,本發(fā)明實(shí)施例提供的資源管理器110能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而可以提高資源利用率,和/或,可以提升用戶作業(yè)的執(zhí)行效率。
可選的,本發(fā)明實(shí)施例提供的資源管理器110在進(jìn)行資源分配時(shí),還可以同時(shí)考慮對(duì)于異構(gòu)集群和特殊資源需求作業(yè)的資源分配。
具體的,如圖12所示,資源管理器110還可以包括分類單元1105。
在確定單元1103根據(jù)每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形之前,分類單元1105,用于將該多個(gè)任務(wù)按照資源的種類進(jìn)行分類,獲得至少一類任務(wù)。
確定單元1103具體用于:
針對(duì)該至少一類任務(wù)中的每類任務(wù),均按照下面針對(duì)第一類任務(wù)的操作進(jìn)行處理:
根據(jù)第一類任務(wù)中每個(gè)任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合調(diào)度策略,確定第一類任務(wù)的子分配位形,該子分配位形用于指示該第一類任務(wù)在多個(gè)計(jì)算節(jié)點(diǎn)中的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況。
將該至少一類任務(wù)中的每類任務(wù)的子分配位形的組合確定為該多個(gè)任務(wù)的第一分配位形。
由于本發(fā)明實(shí)施例提供的資源管理器110可以首先將多個(gè)任務(wù)按照資源的種類進(jìn)行分類,進(jìn)而對(duì)于每一類任務(wù)分別進(jìn)行資源分配,也就是說可以同時(shí)考慮對(duì)于異構(gòu)集群和特殊資源需求作業(yè)的資源分配,因而具有更廣泛的普適性和更好的綜合表現(xiàn)。
可選的,考慮到運(yùn)行時(shí)間的估計(jì)會(huì)與實(shí)際情況通常會(huì)產(chǎn)生一些偏差。如果對(duì)這些偏差不做控制,則隨著時(shí)間的延長(zhǎng),作業(yè)資源的預(yù)分配結(jié)果與理想結(jié)果可能相差愈來愈大。因此,本發(fā)明實(shí)施例提供的資源管理器110中,在分配單元1104將多個(gè)任務(wù)按照第一分配位形分配到多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上之后,確定單元1103,還用于:
根據(jù)第一分配位形,確定所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第一整體分配目標(biāo)函數(shù)值。
根據(jù)所有處于等待狀態(tài)的任務(wù)對(duì)應(yīng)的資源需求量和運(yùn)行時(shí)間,結(jié)合調(diào)度策略,確定所有處于等待狀態(tài)的任務(wù)的第二分配位形,該第二分配位形用于指示所有處于等待狀態(tài)的任務(wù)在所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況。
根據(jù)該第二分配位形,確定所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)的第二整體分配目標(biāo)函數(shù)值;
分配單元1104,還用于若第二整體分配目標(biāo)函數(shù)值大于第一整體分配目標(biāo)函數(shù)值,將所有處于等待狀態(tài)的任務(wù)按照第二分配位形分配到所有處于等待狀態(tài)的任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。
通過上述變異機(jī)制,可以使得作業(yè)資源的預(yù)分配結(jié)果向更好的方向進(jìn)化。其中,圖8示意性的給出了一種作業(yè)資源的分配結(jié)果的變異機(jī)制示意圖,可以看出,隨著時(shí)間的延長(zhǎng),作業(yè)資源的預(yù)分配結(jié)果與理想結(jié)果可能相差愈來愈大。經(jīng)過上述變異機(jī)制,可以將節(jié)點(diǎn)3上的任務(wù)1調(diào)整到節(jié)點(diǎn)1上,將節(jié)點(diǎn)2上的任務(wù)2調(diào)整到節(jié)點(diǎn)3上,將節(jié)點(diǎn)1上的任務(wù)3調(diào)整到節(jié)點(diǎn)2上,從而使得作業(yè)資源的預(yù)分配結(jié)果向更好的方向進(jìn)化。
可選的,本發(fā)明實(shí)施例中,整體分配目標(biāo)函數(shù)值可通過上述公式(1)獲得,本發(fā)明實(shí)施例在此不再贅述。
即,上述的第一整體分配目標(biāo)函數(shù)值等于第一分配位形時(shí),所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)各個(gè)節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值的和。
上述的第二整體分配目標(biāo)函數(shù)值等于第二分配位形時(shí),所有處于等待狀態(tài)的任務(wù)運(yùn)行在所分配的節(jié)點(diǎn)上時(shí)各個(gè)節(jié)點(diǎn)的單節(jié)點(diǎn)分配目標(biāo)函數(shù)值的和。
可選的,本發(fā)明實(shí)施例中,單節(jié)點(diǎn)分配目標(biāo)函數(shù)具體可以包括:
其中,sn表示單節(jié)點(diǎn)n的分配目標(biāo)函數(shù)值;p表示作業(yè)時(shí)間優(yōu)先級(jí)因子,p>0;f表示作業(yè)公平性因子,f>0;p+f≤1;m表示作業(yè)的數(shù)量;se,n表示節(jié)點(diǎn)n上的資源利用率得分,
其中,在上述單節(jié)點(diǎn)分配目標(biāo)函數(shù)中,考慮了節(jié)點(diǎn)的資源利用率、作業(yè)的公平性以及作業(yè)的執(zhí)行進(jìn)度。其中,當(dāng)f=0,p=0時(shí),完全考慮資源利用率,即資源管理器110按照整體資源利用率最高的原則分配資源;當(dāng)f=1,p=0時(shí),完全考慮公平,即資源管理器110會(huì)在不同的作業(yè)間公平地分配資源;當(dāng)f=1,p=1時(shí),則完全考慮時(shí)間優(yōu)先級(jí),即資源管理器110優(yōu)先分配資源給那些更快完成的作業(yè)。當(dāng)然,f和p還可以為其它數(shù)值,用戶可以根據(jù)作業(yè)的運(yùn)行需求進(jìn)行設(shè)置,使得分配在最優(yōu)資源利用率和最優(yōu)作業(yè)執(zhí)行時(shí)間取得平衡,本發(fā)明實(shí)施例對(duì)此不作具體限定。
需要說明的是,本發(fā)明實(shí)施例中的接收單元1101可以為資源管理器110上具備接收功能的接口電路,如接收機(jī)或接收器;也可以為資源管理器110上具備接收功能的網(wǎng)卡或輸入/輸出(英文全稱:input/output,英文縮寫:i/o)接口,本發(fā)明實(shí)施例對(duì)此不作具體限定。
估計(jì)單元1102、確定單元1103、分配單元1104和分類單元1105可以為單獨(dú)設(shè)立的處理器,也可以集成在資源管理器110的某一個(gè)處理器中實(shí)現(xiàn),此外,也可以以程序代碼的形式存儲(chǔ)于資源管理器110存儲(chǔ)器中,由資源管理器110的某一個(gè)處理器調(diào)用并執(zhí)行以上估計(jì)單元1102、確定單元1103、分配單元1104和分類單元1105的功能。這里所述的處理器可以是一個(gè)中央處理器(英文全稱:centralprocessingunit,英文縮寫:cpu),還可以為其他通用處理器、數(shù)字信號(hào)處理器(英文全稱:digitalsignalprocessing,英文縮寫:dsp)、專用集成電路(英文全稱:applicationspecificintegratedcircuit,英文縮寫:asic)、現(xiàn)場(chǎng)可編程門陣列(英文全稱:field-programmablegatearray,英文縮寫:fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。另外,該處理器還可以為專用處理器,該專用處理器可以包括基帶處理芯片、射頻處理芯片等中的至少一個(gè)。進(jìn)一步地,該專用處理器還可以包括具有資源管理器110其他專用處理功能的芯片。
可以理解,本發(fā)明實(shí)施例中的資源管理器110可對(duì)應(yīng)于上述圖5-圖7所示的資源分配方法中的資源管理器,并且本發(fā)明實(shí)施例中的資源管理器110中的各個(gè)單元的劃分和/或功能等均是為了實(shí)現(xiàn)上述圖5-圖7所示的資源分配方法流程,為了簡(jiǎn)潔,在此不再贅述。
如圖13所示,本發(fā)明實(shí)施例提供一種資源管理器130,包括:處理器1301、存儲(chǔ)器1302、總線1303和通信接口1304。
存儲(chǔ)器1302用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,處理器1301與存儲(chǔ)器1302通過總線連接,當(dāng)資源管理器130運(yùn)行時(shí),處理器1301執(zhí)行存儲(chǔ)器1303存儲(chǔ)的計(jì)算機(jī)執(zhí)行指令,以使資源管理器130執(zhí)行如圖5-圖7所示的資源分配方法。具體的地址分配方法可參見上述如圖5-圖7所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
其中,本發(fā)明實(shí)施例中的處理器1301可以是一個(gè)中央處理器(英文全稱:centralprocessingunit,英文縮寫:cpu),還可以為其他通用處理器、數(shù)字信號(hào)處理器(英文全稱:digitalsignalprocessing,英文縮寫:dsp)、專用集成電路(英文全稱:applicationspecificintegratedcircuit,英文縮寫:asic)、現(xiàn)場(chǎng)可編程門陣列(英文全稱:field-programmablegatearray,英文縮寫:fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
另外,該處理器1301還可以為專用處理器,該專用處理器可以包括基帶處理芯片、射頻處理芯片等中的至少一個(gè)。進(jìn)一步地,該專用處理器還可以包括具有資源管理器130其他專用處理功能的芯片。
存儲(chǔ)器1302可以包括易失性存儲(chǔ)器(英文:volatilememory),例如隨機(jī)存取存儲(chǔ)器(英文全稱:random-accessmemory,英文縮寫:ram);存儲(chǔ)器1302也可以包括非易失性存儲(chǔ)器(英文:non-volatilememory),例如只讀存儲(chǔ)器(英文全稱:read-onlymemory,英文縮寫:rom),快閃存儲(chǔ)器(英文:flashmemory),硬盤(英文全稱:harddiskdrive,英文縮寫:hdd)或固態(tài)硬盤(英文全稱:solid-statedrive,英文縮寫:ssd);另外,存儲(chǔ)器1302還可以包括上述種類的存儲(chǔ)器的組合。
總線1303可以包括數(shù)據(jù)總線、電源總線、控制總線和信號(hào)狀態(tài)總線等。本實(shí)施例中為了清楚說明,在圖13中將各種總線都示意為總線1303。
在具體實(shí)現(xiàn)過程中,上述如圖5-圖7所示的資源分配方法流程中的各步驟均可以通過硬件形式的處理器1301執(zhí)行存儲(chǔ)器1302中存儲(chǔ)的軟件形式的計(jì)算機(jī)執(zhí)行指令實(shí)現(xiàn)。為避免重復(fù),此處不再贅述。
基于本發(fā)明實(shí)施例提供的資源管理器,該資源管理器在接收客戶端設(shè)備提交的作業(yè),并將該作業(yè)分解為多個(gè)有相應(yīng)的資源需求量配置的任務(wù)之后,還估計(jì)每個(gè)任務(wù)的運(yùn)行時(shí)間,并根據(jù)每個(gè)任務(wù)的資源需求量和運(yùn)行時(shí)間,結(jié)合預(yù)設(shè)的調(diào)度策略,確定該多個(gè)任務(wù)的第一分配位形,然后將該多個(gè)任務(wù)按照該第一分配位形分配到該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上。其中,該第一分配位形用于指示該多個(gè)任務(wù)在該多個(gè)任務(wù)的可運(yùn)行計(jì)算節(jié)點(diǎn)上的分布情況,調(diào)度策略包括資源利用率優(yōu)先策略和效率優(yōu)先策略中的至少一種。也就是說,該資源管理器在進(jìn)行資源分配時(shí)考慮了每個(gè)任務(wù)的運(yùn)行時(shí)間的因素,并且將空間需求(即任務(wù)的資源需求量)和時(shí)間需求(即任務(wù)的時(shí)間)固定的task調(diào)度到對(duì)應(yīng)的節(jié)點(diǎn)上時(shí),能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,使得最終采用資源利用率較高和/或效率較高的分配位形。一方面,由于可以采用資源利用率較高的分配位形,即可以通過調(diào)度策略使得那些節(jié)點(diǎn)資源利用率較高的task組合被調(diào)度到節(jié)點(diǎn)上,因此該資源管理器能有效減輕現(xiàn)有技術(shù)中資源碎片的問題,從而提升集群的資源利用率。另一方面,由于可以采用效率較高的分配位形,即可以通過調(diào)度策略使得那些作業(yè)執(zhí)行時(shí)間最短的task組合被調(diào)度到節(jié)點(diǎn)上,因此與現(xiàn)有技術(shù)相比,該資源管理器能顯著縮短作業(yè)執(zhí)行時(shí)間,提升作業(yè)執(zhí)行效率。綜上,本發(fā)明實(shí)施例提供的資源管理器能夠根據(jù)相應(yīng)的調(diào)度策略靈活選擇資源利用率優(yōu)先策略和效率優(yōu)先策略來進(jìn)行資源分配,從而可以提高資源利用率,和/或,可以提升用戶作業(yè)的執(zhí)行效率。
可選的,本發(fā)明實(shí)施例還提供一種可讀介質(zhì),該可讀介質(zhì)用于存儲(chǔ)計(jì)算機(jī)執(zhí)行指令,當(dāng)資源管理器的處理器執(zhí)行該計(jì)算機(jī)執(zhí)行指令時(shí),該資源管理器執(zhí)行如圖5-圖7所示的資源分配方法。具體的資源分配方法可參見上述如圖5-圖7所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的裝置,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、rom、ram)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。