本發(fā)明涉及調度技術,具體設計一種資源調度方法、系統(tǒng)及主節(jié)點。
背景技術:
Mesos是Apache下的開源分布式資源管理框架,能夠實現(xiàn)多種計算框架的統(tǒng)一集群管理和調度。其目標是整合數(shù)據(jù)中心資源,進行虛擬池化,對應用開放諸如中央處理器(CPU)、內存和輸入/輸出(I/O)這些基本資源,類似操作系統(tǒng)將處理器資源和存儲器資源放入資源池,使其可以為不同的進程協(xié)調分配和釋放資源。
Mesos采用了Master/Slave結構,圖1為現(xiàn)有技術中Mesos架構示意圖;如圖1所示,Mesos架構包括主節(jié)點(Mesos Master)、從節(jié)點(Mesos Slave)、計算框架(Framework)和執(zhí)行器(Executor)。其中,主節(jié)點協(xié)調全部的從節(jié)點,并確定每個從節(jié)點的可用資源,聚合計算跨節(jié)點的所有可用資源的報告,然后向注冊到主節(jié)點的計算框架(Framework)發(fā)出資源邀約。計算框架(Framework)指外部計算框架,如圖1中所示的Hadoop、MPI等。計算框架(Framework)根據(jù)任務需求,選擇接受或拒絕來自主節(jié)點的資源邀約;如果計算框架(Framework)接受邀約,主節(jié)點負責協(xié)調計算框架(Framework)和從節(jié)點進行任務調度。目前,Mesos中的使用的調度機制被稱為“ResourceOffer”,采用了基于資源量的調度機制,在Mesos架構中,從節(jié)點直接將資源量(如CPU和內存)上報給主節(jié)點,由主節(jié)點采用DRF(Dominant Resource Fairness)等機制將資源量分配給Framework,使資源分配相對公平,不偏向于任何用戶,保證每個用戶(Framework)獲取了相同比例的支配性資源,例如:Framework A獲取了2/3的內存資源,F(xiàn)ramework B獲取了2/3的CPU資源,則 資源調度處理流程如下:
1、Slave1向Master上報4CPU和8GB內存的空閑資源,Master調用分配模塊,通知Framework A所有可用的空閑資源;
2、Master發(fā)送當前空閑資源的描述信息(Resource Offer)給Framework A;
3、Framework A的調度器回復Master,運行兩個任務(task)在Slave 1上,第一個任務使用了2CPU、1GB內存,第二個任務使用了2CPU、2GB內存;
4、Master把任務描述信息發(fā)送給Slave 1,Slave 1分配適當?shù)馁Y源給Framework的執(zhí)行器,然后由Framework的執(zhí)行器加載這兩個任務。執(zhí)行任務之后,Slave 1剩余資源為0CPU和5GB內存。
Mesos架構的資源調度主要從滿足Framework需求的角度進行資源分配,一方面,可能導致某些Slave節(jié)點在運行指定任務后,存在剩余資源,但是該剩余資源又不足以分配給其它任務;另一方面由于Framework自身設置的過濾條件,如允許Framework只接收“剩余資源量大于L的Slave”,通過這一過濾條件分配給該Framework的Slave上存在剩余資源,該剩余資源又不足以分配給其他任務運行,這樣便產生了大量的資源碎片。另外,Mesos架構主要依賴于主節(jié)點向Framework推送可用資源,再進行資源協(xié)商,協(xié)商過程需要一定時間,實時性較差。
技術實現(xiàn)要素:
為解決現(xiàn)有存在的技術問題,本發(fā)明實施例提供一種資源調度方法、系統(tǒng)及主節(jié)點,能夠減少資源碎片的產生,提高資源利用率。
為達到上述目的,本發(fā)明實施例的技術方案是這樣實現(xiàn)的:
本發(fā)明實施例提供了一種資源調度方法,所述方法包括:
主節(jié)點獲得所有從節(jié)點的剩余資源量,基于所述剩余資源量將對應的從節(jié)點信息劃分至對應的資源子集中;其中,預設的資源集合包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布;
所述主節(jié)點接收第一計算框架(Framework)的資源需求信息,基于所述 資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù);
確定所述第K資源子集中包含從節(jié)點信息時,所述第K資源子集的資源調度器從所述第K資源子集中選擇滿足預設條件的第一從節(jié)點信息;
所述主節(jié)點獲得所述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework。
上述方案中,所述資源集合中的多個資源子集按資源量范圍由小到大排序;
則所述第K資源子集不包含從節(jié)點信息時,所述方法包括:所述主節(jié)點從所述資源集合的第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集;其中,N和L均為正整數(shù),且L大于K+1且小于等于N;
所述第L資源子集的資源調度器從所述第L資源子集中選擇滿足預設條件的第二從節(jié)點信息;
所述主節(jié)點獲得所述第二從節(jié)點信息,基于所述第二從節(jié)點信息將所述第二從節(jié)點的資源分配給所述第一Framework。
上述方案中,從第K+1資源子集開始至第N資源子集為止進行查找匹配,所有資源子集中均不包含從節(jié)點信息時,所述方法還包括:
所述主節(jié)點從所述資源集合的第M資源子集開始進行查找匹配,獲得包含從節(jié)點信息的第P資源子集;其中,所述第M資源子集在所述資源集合中的資源量范圍最大;P為正整數(shù),且P小于等于M;
所述第P資源子集的資源調度器從所述第P資源子集中選擇滿足預設條件的第三從節(jié)點信息;
所述主節(jié)點獲得所述第三從節(jié)點信息,基于所述第三從節(jié)點信息將所述第三從節(jié)點的資源分配給所述第一Framework。
上述方案中,所述滿足預設條件,包括:
資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。
上述方案中,所述基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework,包括:
所述主節(jié)點將所述第一從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一Framework,以使所述第一Framework基于所述剩余資源量在所述第一從節(jié)點運行任務。
本發(fā)明實施例還提供了一種主節(jié)點,所述主節(jié)點包括:通訊單元和資源管理單元;其中,
所述通訊單元,用于獲得所有從節(jié)點的剩余資源量,將所述剩余資源量發(fā)送至所述資源管理單元;還用于接收第一計算框架Framework的資源需求信息,講所述資源需求信息發(fā)送至所述資源管理單元;還用于從所述第K資源子集的資源調度器獲得所述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework;
所述資源管理單元,用于基于所述剩余資源量將對應的從節(jié)點信息劃分至對應的資源子集中;其中,預設的資源集合包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布;還用于基于所述資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù);確定所述第K資源子集中包含從節(jié)點信息時,使能所述第K資源子集的資源調度器。
上述方案中,所述資源集合中的多個資源子集按資源量范圍由小到大排序;
所述資源管理單元,還用于確定所述第K資源子集不包含從節(jié)點信息時,從所述資源集合的第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集;其中,N和L均為正整數(shù),且L大于K+1且小于等于N;使能所述第L資源子集的資源調度器;
所述通訊單元,還用于從所述第L資源子集的資源調度器獲得所述第二從節(jié)點信息,基于所述第二從節(jié)點信息將所述第二從節(jié)點的資源分配給所述第一Framework。
上述方案中,所述資源管理單元,還用于從第K+1資源子集開始至第N資 源子集為止進行查找匹配,所有資源子集中均不包含從節(jié)點信息時,從所述資源集合的第M資源子集開始進行查找匹配,獲得包含從節(jié)點信息的第P資源子集;其中,所述第M資源子集在所述資源集合中的資源量范圍最大P為正整數(shù),且P小于等于M;;使能所述第P資源子集的資源調度器;
所述通訊單元,還用于從所述第P資源子集的資源調度器獲得所述第三從節(jié)點信息,基于所述第三從節(jié)點信息將所述第三從節(jié)點的資源分配給所述第一Framework。
上述方案中,所述滿足預設條件,包括:
資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。
上述方案中,所述通訊單元,用于將所述第一從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一Framework,以使所述第一Framework基于所述剩余資源量在所述第一從節(jié)點運行任務。
本發(fā)明實施例還提供了一種資源調度系統(tǒng),所述系統(tǒng)包括:主節(jié)點、至少一個計算框架Framework和資源集合平臺;所述資源集合平臺中包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布;每個資源子集對應一個資源調度器;
所述主節(jié)點,用于獲得所有從節(jié)點的剩余資源量,基于所述剩余資源量將對應的從節(jié)點信息劃分至所述資源集合平臺對應的資源子集中;還用于接收第一計算框架Framework的資源需求信息,基于所述資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù);其中,所述第一Framework為所述至少一個Framework中的任一Framework;還用于獲得所述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework;
所述資源集合平臺,用于通過所述第K資源子集的資源調度器確定所述第K資源子集中包含從節(jié)點信息時,從所述第K資源子集中選擇滿足預設條件的第一從節(jié)點信息,將所述第一從節(jié)點信息發(fā)送至所述主節(jié)點。
上述方案中,所述資源集合平臺中的多個資源子集按資源量范圍由小到大排序;
所述主節(jié)點,還用于所述第K資源子集的資源調度器確定不包含從節(jié)點信息時,從所述資源集合平臺的第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集;其中,N和L均為正整數(shù),且L大于K+1且小于等于N;還用于獲得所述第二從節(jié)點信息,基于所述第二從節(jié)點信息將所述第二從節(jié)點的資源分配給所述第一Framework;
所述資源集合平臺,還用于通過所述第L資源子集的資源調度器確定所述第L資源子集中包含從節(jié)點信息時,從所述第L資源子集中選擇滿足預設條件的第二從節(jié)點信息,將所述第二從節(jié)點信息發(fā)送至所述主節(jié)點。
上述方案中,所述主節(jié)點,還用于從第K+1資源子集開始至第N資源子集為止進行查找匹配,所有資源子集中均不包含從節(jié)點信息時,從所述資源集合的第M資源子集開始進行查找匹配,獲得包含從節(jié)點信息的第P資源子集;其中,所述第M資源子集在所述資源集合中的資源量范圍最大;P為正整數(shù),且P小于等于M;還用于獲得所述第三從節(jié)點信息,基于所述第三從節(jié)點信息將所述第三從節(jié)點的資源分配給所述第一Framework;
所述資源集合平臺,還用于通過所述第P資源子集的資源調度器確定所述第P資源子集中包含從節(jié)點信息時,從所述第P資源子集中選擇滿足預設條件的第三從節(jié)點信息,將所述第三從節(jié)點信息發(fā)送至所述主節(jié)點。
本發(fā)明實施例提供的資源調度方法、系統(tǒng)及主節(jié)點,所述方法包括:主節(jié)點獲得所有從節(jié)點的剩余資源量,基于所述剩余資源量將對應的從節(jié)點信息劃分至對應的資源子集中;其中,預設的資源集合包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布;所述主節(jié)點接收第一計算框架Framework的資源需求信息,基于所述資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù);確定所述第K資源子集中包含從節(jié)點信息時,所述第K資源子集的資源調度器從所述第K資源子集中選擇滿足預設條件的第一從節(jié)點信息;所述主節(jié)點獲得所 述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework。如此,采用本發(fā)明實施例的技術方案,采用資源集合中資源子集的梯度劃分機制,在選擇從節(jié)點時,選擇剩余資源量與資源需求量最為接近的從節(jié)點,從而在該從節(jié)點執(zhí)行任務后,剩余資源量最小,也即保證了資源碎片最小,從而提高了資源利用率。
附圖說明
圖1為現(xiàn)有技術中Mesos架構示意圖;
圖2為本發(fā)明實施例的資源調度系統(tǒng)的應用示意圖;
圖3為本發(fā)明實施例一的資源調度方法的流程示意圖;
圖4為本發(fā)明實施例二的資源調度方法的流程示意圖;
圖5為本發(fā)明實施例三的資源調度方法的流程示意圖;
圖6為本發(fā)明實施例的資源調度平臺的一種結構示意圖;
圖7為本發(fā)明實施例的主節(jié)點的組成結構示意圖。
具體實施方式
下面結合附圖及具體實施例對本發(fā)明作進一步詳細的說明。
圖2為本發(fā)明實施例的資源調度系統(tǒng)的應用示意圖;如圖2所示,本應用示意在圖1所示的基礎上,還包括,資源集合,所述資源集合中包括至少一個資源子集,每個資源子集對應預設的資源量范圍,且相鄰兩個資源子集的資源量范圍連續(xù)分布。例如,第一資源子集的資源量范圍為l~l+n,相鄰的第二資源子集的資源量范圍為l+n~l+2n,以此類推;其中,l和n均為正整數(shù);每個資源子集對應一個資源調度器。所述資源集合可設置于主節(jié)點中,或者資源集合平臺中,所述主節(jié)點用于對所述資源集合中的各個資源子集進行維護和管理。在本發(fā)明各實施例中,所述主節(jié)點均為Mesos Master,所述從節(jié)點均為Mesos Slave,以下均同。
當然,圖2僅為本發(fā)明實施例的一種應用示意,不限于上述示意。
實施例一
本發(fā)明實施例提供了一種資源調度方法。圖3為本發(fā)明實施例一的資源調度方法的流程示意圖;如圖3所示,所述方法包括:
步驟201:主節(jié)點獲得所有從節(jié)點的剩余資源量,基于所述剩余資源量將對應的從節(jié)點信息劃分至對應的資源子集中;其中,預設的資源集合包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布。
本實施例中,預先設置資源集合,所述資源集合可設置于主節(jié)點中,或者資源集合平臺中,由所述主節(jié)點對所述資源集合進行維護和管理。具體的,所述資源集合中包括多個資源子集,每個資源子集對應預設的資源量范圍,且相鄰兩個資源子集的資源量范圍連續(xù)分布。例如,第一資源子集的資源量范圍為l~l+n,相鄰的第二資源子集的資源量范圍為l+n~l+2n,以此類推;其中,l和n均為正整數(shù)。在本示意中,每個資源子集對應的資源量的范圍跨度相等,均為n,在其他實施方式中,各個資源子集對應的資源量的范圍跨度也可不相等,或部分資源子集對應的資源量的范圍跨度相等,本實施例中不做詳細描述。其中,所述資源子集對應的資源量為單一資源量,例如CPU資源量,或內存資源量,當然,不限于上述資源量。
進一步地,所述主節(jié)點定期或不定期的獲得與之關聯(lián)的所有從節(jié)點的剩余資源量,依據(jù)所述剩余資源量將對應的從節(jié)點劃分至對應的資源子集中;例如,當某一從節(jié)點的剩余資源量為a,判斷a落入資源量范圍l+n~l+2n,則將所述從節(jié)點劃分至第二資源子集中。
步驟202:所述主節(jié)點接收第一Framework的資源需求信息,基于所述資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù)。
這里,所述第一Framework為已經注冊在所述主節(jié)點上的至少一個Framework中的任一Framework。作為一種實施方式,所述第一Framework向所述主節(jié)點發(fā)送的資源需求信息,所述資源需求信息為所述第一Framework中 滿足預設的過濾條件的最小資源需求信息。例如,所述第一Framework中若預先設置的過濾條件為“剩余資源量大于X的從節(jié)點”,則所述資源需求信息中包括的最小資源需求量為X,也即選擇的從節(jié)點的剩余資源量要大于等于X;其中,X為正整數(shù)。
進一步地,所述主節(jié)點接收到所述第一Framework的資源需求信息后,獲得其中攜帶的資源需求量,按所述資源需求量在所述資源集合中獲得滿足所述資源需求量的第K資源子集;其中,所述資源需求量在所述第K資源子集的資源量范圍中。
步驟203:確定所述第K資源子集中包含從節(jié)點信息時,所述第K資源子集的資源調度器從所述第K資源子集中選擇滿足預設條件的第一從節(jié)點信息。
本實施例中,所述資源集合中的至少一個資源子集可包括至少一個從節(jié)點信息,當然,也可能不包括從節(jié)點信息,即,相應的資源子集為空。則所述主節(jié)點獲得滿足資源需求信息的第K資源子集后,首先判斷所述第K資源子集是否非空,確定所述第K資源子集不為空,即所述第K資源子集中包括至少一個從節(jié)點信息后,指示所述第K資源子集的資源調度器對所述第K資源子集中的從節(jié)點進行選擇,選擇滿足預設條件的第一從節(jié)點信息,所述第一從節(jié)點為為所述第一Framework分配的從節(jié)點。
具體的,所述滿足預設條件,包括:資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。如當所述第K資源子集包括至少兩個從節(jié)點信息時,則分別計算所述兩個從節(jié)點的剩余資源量與所述資源需求信息中的資源需求量的差值,選擇差值最小的從節(jié)點信息作為滿足預設條件的第一從節(jié)點信息。進一步地,將所述第一從節(jié)點信息發(fā)送至所述主節(jié)點。
步驟204:所述主節(jié)點獲得所述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework。
這里,所述主節(jié)點獲得所述第一從節(jié)點信息后,所述方法還包括:所述主節(jié)點將所述第一從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一 Framework,以使所述第一Framework基于所述剩余資源量在所述第一從節(jié)點運行任務。具體的,所述主節(jié)點獲得所述第一從節(jié)點信息后,依據(jù)現(xiàn)有的調度機制“Resource Offer”進行調度,即生成包含有所述第一從節(jié)點的剩余資源信息的“Resource Offer”并發(fā)送至所述第一Framework,所述第一Framework的調度器回復所述主節(jié)點,基于所述第一從節(jié)點的剩余資源運行任務;另一方面,所述主節(jié)點向所述第一從節(jié)點發(fā)送任務描述信息,以指示所述第一從節(jié)點運行所述第一Framework的資源需求量為X的任務;所述第一從節(jié)點接收到所述任務描述信息后,分配相應的資源給所述第一Framework的執(zhí)行器(Executor),再由所述第一Framework的執(zhí)行器(Executor)執(zhí)行任務。
采用本發(fā)明實施例的技術方案,一方面,采用資源集合中資源子集的梯度劃分機制,在選擇從節(jié)點時,選擇剩余資源量與資源需求量最為接近的從節(jié)點,從而在該從節(jié)點執(zhí)行任務后,剩余資源量最小,也即保證了資源碎片最小,從而提高了資源利用率;另一方面,在選定從節(jié)點后,通過原有的資源調度機制(如DRF機制),將資源分配給Framework,使資源分配相對公平,滿足了Framework的需求。
實施例二
本發(fā)明實施例還提供了一種資源調度方法,圖4為本發(fā)明實施例二的資源調度方法的流程示意圖;如圖4所示,本實施例在實施例一的資源調度方法的基礎上,還包括:
步驟205:確定所述第K資源子集不包含從節(jié)點信息時,所述主節(jié)點從所述資源集合的第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集;其中,N和L均為正整數(shù),且L大于K+1且小于等于N。
本實施例中,所述第K資源子集不包含從節(jié)點信息,即所述第K資源子集為空,也即所述第K資源子集中沒有從節(jié)點信息供選擇時,所述主節(jié)點需要確定其他資源子集。具體的,所述資源集合中的多個資源子集按資源量范圍由小到大排序,即第一資源子集的資源量范圍為l~l+n,相鄰的第二資源子集的資源 量范圍為l+n~l+2n,以此類推。則在所述第K資源子集不包含從節(jié)點信息,為了滿足所述第一Framework的資源需求,需在資源量范圍更大的資源子集中進行選擇;則所述主節(jié)點從所述第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集。具體的,所述主節(jié)點先在所述第K+1資源子集中進行查找,確定所述第K+1資源子集中包含從節(jié)點信息時,則使能所述第K+1資源子集的資源調度器選擇滿足預設條件的從節(jié)點信息;相應的,當確定所述第K+1資源子集中不包含從節(jié)點信息,進一步查找第K+2資源子集,直至查找到第N資源子集為止,獲得包含從節(jié)點信息的資源子集。本實施例中,N的數(shù)值預先設置,當查找到所述第N資源子集后仍未獲得包含有從節(jié)點信息的資源子集后,則所述主節(jié)點迅速改變查找策略,避免查找匹配次數(shù)過多導致用戶體驗不佳。進一步地,所述主節(jié)點指示所述第L資源子集的資源調度器對所述第L資源子集中的從節(jié)點進行選擇。
步驟206:所述第L資源子集的資源調度器從所述第L資源子集中選擇滿足預設條件的第二從節(jié)點信息。
具體的,所述滿足預設條件,包括:資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。如當所述第L資源子集包括至少兩個從節(jié)點信息時,則分別計算所述兩個從節(jié)點的剩余資源量與所述資源需求信息中的資源需求量的差值,選擇差值最小的從節(jié)點信息作為滿足預設條件的第二從節(jié)點信息。進一步地,將所述第二從節(jié)點信息發(fā)送至所述主節(jié)點。
步驟207:所述主節(jié)點獲得所述第二從節(jié)點信息,基于所述第二從節(jié)點信息將所述第二從節(jié)點的資源分配給所述第一Framework。
這里,所述主節(jié)點獲得所述第二從節(jié)點信息后,所述方法還包括:所述主節(jié)點將所述第二從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一Framework,以使所述第一Framework基于所述剩余資源量在所述第二從節(jié)點運行任務。具體的,所述主節(jié)點獲得所述第二從節(jié)點信息后,依據(jù)現(xiàn)有的調度機制“Resource Offer”進行調度,即生成包含有所述第二從節(jié)點的剩余資源信 息的“Resource Offer”并發(fā)送至所述第一Framework,所述第一Framework的調度器回復所述主節(jié)點,基于所述第二從節(jié)點的剩余資源運行任務;另一方面,所述主節(jié)點向所述第二從節(jié)點發(fā)送任務描述信息,以指示所述第二從節(jié)點運行所述第一Framework的資源需求量為X的任務;所述第一從節(jié)點接收到所述任務描述信息后,分配相應的資源給所述第一Framework的執(zhí)行器(Executor),再由所述第一Framework的執(zhí)行器(Executor)執(zhí)行任務。
采用本發(fā)明實施例的技術方案,一方面,采用資源集合中資源子集的梯度劃分機制,在選擇從節(jié)點時,選擇剩余資源量與資源需求量最為接近的從節(jié)點,從而在該從節(jié)點執(zhí)行任務后,剩余資源量最小,也即保證了資源碎片最小,從而提高了資源利用率;另一方面,在選定從節(jié)點后,通過原有的資源調度機制(如DRF機制),將資源分配給Framework,使資源分配相對公平,滿足了Framework的需求。
實施例三
本發(fā)明實施例還提供了一種資源調度方法,圖5為本發(fā)明實施例三的資源調度方法的流程示意圖;如圖5所示,本實施例在實施例二的資源調度方法的基礎上,還包括:
步驟208:從第K+1資源子集開始至第N資源子集為止進行查找匹配,所有資源子集中均不包含從節(jié)點信息時,所述主節(jié)點從所述資源集合的第M資源子集開始進行查找匹配,獲得包含從節(jié)點信息的第P資源子集;其中,所述第M資源子集在所述資源集合中的資源量范圍最大;P為正整數(shù),且P小于等于M。
本實施例中,所述第K+1資源子集開始至第N資源子集為止均不包含從節(jié)點信息,即所述第K+1資源子集開始至第N資源子集為止均為空,也即所述第K+1資源子集開始至第N資源子集為止中均沒有從節(jié)點信息供選擇時,所述主節(jié)點需要確定其他資源子集。則本實施例中,所述主節(jié)點從資源量范圍最大的資源子集進一步按照資源量范圍由大到小進行查找匹配,獲得包含有從節(jié)點信息的第P資源子集。進一步地,所述主節(jié)點指示所述第P資源子集的資源調度 器對所述第P資源子集中的從節(jié)點進行選擇。
步驟209:所述第P資源子集的資源調度器從所述第P資源子集中選擇滿足預設條件的第三從節(jié)點信息。
具體的,所述滿足預設條件,包括:資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。如當所述第P資源子集包括至少兩個從節(jié)點信息時,則分別計算所述兩個從節(jié)點的剩余資源量與所述資源需求信息中的資源需求量的差值,選擇差值最小的從節(jié)點信息作為滿足預設條件的第二從節(jié)點信息。進一步地,將所述第二從節(jié)點信息發(fā)送至所述主節(jié)點。
步驟210:所述主節(jié)點獲得所述第三從節(jié)點信息,基于所述第三從節(jié)點信息將所述第三從節(jié)點的資源分配給所述第一Framework。
這里,所述主節(jié)點獲得所述第三從節(jié)點信息后,所述方法還包括:所述主節(jié)點將所述第三從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一Framework,以使所述第一Framework基于所述剩余資源量在所述第三從節(jié)點運行任務。具體的,所述主節(jié)點獲得所述第三從節(jié)點信息后,依據(jù)現(xiàn)有的調度機制“Resource Offer”進行調度,即生成包含有所述第三從節(jié)點的剩余資源信息的“Resource Offer”并發(fā)送至所述第一Framework,所述第一Framework的調度器回復所述主節(jié)點,基于所述第三從節(jié)點的剩余資源運行任務;另一方面,所述主節(jié)點向所述第三從節(jié)點發(fā)送任務描述信息,以指示所述第三從節(jié)點運行所述第一Framework的資源需求量為X的任務;所述第三從節(jié)點接收到所述任務描述信息后,分配相應的資源給所述第一Framework的執(zhí)行器(Executor),再由所述第一Framework的執(zhí)行器(Executor)執(zhí)行任務。
采用本發(fā)明實施例的技術方案,一方面,采用資源集合中資源子集的梯度劃分機制,在選擇從節(jié)點時,首先按照資源量范圍由小到大進行查找匹配,選擇剩余資源量與資源需求量最為接近的從節(jié)點,從而在該從節(jié)點執(zhí)行任務后,剩余資源量最小,也即保證了資源碎片最?。辉谖凑业胶线m的從節(jié)點時,再按照資源量范圍由大到小進行查找匹配,選擇剩余資源量最大的從節(jié)點,從而在 該從節(jié)點執(zhí)行任務后,剩余資源量最大,使之可以繼續(xù)執(zhí)行其他的任務;從而提高了資源利用率;另一方面,在選定從節(jié)點后,通過原有的資源調度機制(如DRF機制),將資源分配給Framework,使資源分配相對公平,滿足了Framework的需求。
本發(fā)明實施例一至實施例三中,所述資源集合為表征一種資源量的資源集合,例如CPU資源量,或內存資源量,當然,不限于上述資源量。當主節(jié)點需要對至少兩種資源量同時調度時,可以理解為,預設至少兩個資源集合,每個資源集合分別表征一種資源量,例如,第一資源集合對應CPU資源量,第二資源集合對應內存資源量等等。當主節(jié)點接收到Framework的資源需求信息時,首先確定主導資源(或支配性資源),所述主導資源(或支配性資源)為所述Framework相對于其他資源來說更為緊缺或更為需要的資源。進一步地,所述主節(jié)點基于所述主導資源(或支配性資源)參照本發(fā)明實施例的資源調度方法進行資源分配,在資源分配完成后,更新除所述主導資源(或支配性資源)以外的其他資源對應的資源集合信息。
實施例四
本發(fā)明實施例還提供了一種資源調度系統(tǒng),所述資源調度系統(tǒng)的組成結構可參照圖2所示,所述系統(tǒng)包括:主節(jié)點11、至少一個Framework 13和資源集合平臺12;所述資源集合平臺12中包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布;每個資源子集對應一個資源調度器;
所述主節(jié)點11,用于獲得所有從節(jié)點的剩余資源量,基于所述剩余資源量將對應的從節(jié)點信息劃分至所述資源集合平臺12對應的資源子集中;還用于接收第一Framework 13的資源需求信息,基于所述資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù);其中,所述第一Framework 13為所述至少一個Framework 13中的任一Framework 13;還用于獲得所述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework 13;
所述資源集合平臺12,用于通過所述第K資源子集的資源調度器確定所述第K資源子集中包含從節(jié)點信息時,從所述第K資源子集中選擇滿足預設條件的第一從節(jié)點信息,將所述第一從節(jié)點信息發(fā)送至所述主節(jié)點11。
本實施例中,所述資源集合平臺12可設置于主節(jié)點11中,或者獨立設置的資源集合平臺12,由所述主節(jié)點11對所述資源集合平臺12進行維護和管理。具體的,所述資源集合平臺12中包括多個資源子集,每個資源子集對應預設的資源量范圍,且相鄰兩個資源子集的資源量范圍連續(xù)分布。例如,第一資源子集的資源量范圍為l~l+n,相鄰的第二資源子集的資源量范圍為l+n~l+2n,以此類推;其中,l和n均為正整數(shù)。在本示意中,每個資源子集對應的資源量的范圍跨度相等,均為n,在其他實施方式中,各個資源子集對應的資源量的范圍跨度也可不相等,或部分資源子集對應的資源量的范圍跨度相等,本實施例中不做詳細描述。其中,所述資源子集對應的資源量為單一資源量,例如CPU資源量,或內存資源量,當然,不限于上述資源量。
其中,所述主節(jié)點11定期或不定期的獲得與之關聯(lián)的所有從節(jié)點的剩余資源量,依據(jù)所述剩余資源量將對應的從節(jié)點劃分至對應的資源子集中;例如,當某一從節(jié)點的剩余資源量為a,判斷a落入資源量范圍l+n~l+2n,則將所述從節(jié)點劃分至第二資源子集中。
本實施例中,這里,所述第一Framework為已經注冊在所述主節(jié)點11上的至少一個Framework中的任一Framework。作為一種實施方式,所述第一Framework向所述主節(jié)點11發(fā)送的資源需求信息,所述資源需求信息為所述第一Framework中滿足預設的過濾條件的最小資源需求信息。例如,所述第一Framework中若預先設置的過濾條件為“剩余資源量大于X的從節(jié)點”,則所述資源需求信息中包括的最小資源需求量為X,也即選擇的從節(jié)點的剩余資源量要大于等于X;其中,X為正整數(shù)。進一步地,所述主節(jié)點11接收到所述第一Framework的資源需求信息后,獲得其中攜帶的資源需求量,按所述資源需求量在所述資源集合平臺12中獲得滿足所述資源需求量的第K資源子集;其中,所述資源需求量在所述第K資源子集的資源量范圍中。
本實施例中,本實施例中,所述資源集合平臺12中的至少一個資源子集可包括至少一個從節(jié)點信息,當然,也可能不包括從節(jié)點信息,即,相應的資源子集為空。則所述主節(jié)點11獲得滿足資源需求信息的第K資源子集后,首先判斷所述第K資源子集是否非空,確定所述第K資源子集不為空,即所述第K資源子集中包括至少一個從節(jié)點信息后,指示所述第K資源子集的資源調度器對所述第K資源子集中的從節(jié)點進行選擇,選擇滿足預設條件的第一從節(jié)點信息,所述第一從節(jié)點為為所述第一Framework分配的從節(jié)點。
具體的,所述滿足預設條件,包括:資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。如當所述第K資源子集包括至少兩個從節(jié)點信息時,則分別計算所述兩個從節(jié)點的剩余資源量與所述資源需求信息中的資源需求量的差值,選擇差值最小的從節(jié)點信息作為滿足預設條件的第一從節(jié)點信息。進一步地,將所述第一從節(jié)點信息發(fā)送至所述主節(jié)點11。
作為一種實施方式,所述資源集合平臺12中的多個資源子集按資源量范圍由小到大排序;
所述主節(jié)點11,還用于所述第K資源子集的資源調度器確定不包含從節(jié)點信息時,從所述資源集合平臺12的第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集;其中,N和L均為正整數(shù),且L大于K+1且小于等于N;還用于獲得所述第二從節(jié)點信息,基于所述第二從節(jié)點信息將所述第二從節(jié)點的資源分配給所述第一Framework 13;
所述資源集合平臺12,還用于通過所述第L資源子集的資源調度器確定所述第L資源子集中包含從節(jié)點信息時,從所述第L資源子集中選擇滿足預設條件的第二從節(jié)點信息,將所述第二從節(jié)點信息發(fā)送至所述主節(jié)點11。
本實施例中,所述第K資源子集不包含從節(jié)點信息,即所述第K資源子集為空,也即所述第K資源子集中沒有從節(jié)點信息供選擇時,所述主節(jié)點11需要確定其他資源子集。具體的,所述資源集合平臺12中的多個資源子集按資源量范圍由小到大排序,即第一資源子集的資源量范圍為l~l+n,相鄰的第二資源 子集的資源量范圍為l+n~l+2n,以此類推。則在所述第K資源子集不包含從節(jié)點信息,為了滿足所述第一Framework的資源需求,需在資源量范圍更大的資源子集中進行選擇;則所述主節(jié)點11從所述第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集。具體的,所述主節(jié)點11先在所述第K+1資源子集中進行查找,確定所述第K+1資源子集中包含從節(jié)點信息時,則使能所述第K+1資源子集的資源調度器選擇滿足預設條件的從節(jié)點信息;相應的,當確定所述第K+1資源子集中不包含從節(jié)點信息,進一步查找第K+2資源子集,直至查找到第N資源子集為止,獲得包含從節(jié)點信息的資源子集。本實施例中,N的數(shù)值預先設置,當查找到所述第N資源子集后仍未獲得包含有從節(jié)點信息的資源子集后,則所述主節(jié)點11迅速改變查找策略,避免查找匹配次數(shù)過多導致用戶體驗不佳。進一步地,所述主節(jié)點11指示所述第L資源子集的資源調度器對所述第L資源子集中的從節(jié)點進行選擇。
作為一種實施方式,所述主節(jié)點11,還用于從第K+1資源子集開始至第N資源子集為止進行查找匹配,所有資源子集中均不包含從節(jié)點信息時,從所述資源集合的第M資源子集開始進行查找匹配,獲得包含從節(jié)點信息的第P資源子集;其中,所述第M資源子集在所述資源集合中的資源量范圍最大;P為正整數(shù),且P小于等于M;還用于獲得所述第三從節(jié)點信息,基于所述第三從節(jié)點信息將所述第三從節(jié)點的資源分配給所述第一Framework 13;
所述資源集合平臺12,還用于通過所述第P資源子集的資源調度器確定所述第P資源子集中包含從節(jié)點信息時,從所述第P資源子集中選擇滿足預設條件的第三從節(jié)點信息,將所述第三從節(jié)點信息發(fā)送至所述主節(jié)點11。
本實施例中,所述第K+1資源子集開始至第N資源子集為止均不包含從節(jié)點信息,即所述第K+1資源子集開始至第N資源子集為止均為空,也即所述第K+1資源子集開始至第N資源子集為止中均沒有從節(jié)點信息供選擇時,所述主節(jié)點11需要確定其他資源子集。則本實施例中,所述主節(jié)點11從資源量范圍最大的資源子集進一步按照資源量范圍由大到小進行查找匹配,獲得包含有從節(jié)點信息的第P資源子集。進一步地,所述主節(jié)點11指示所述第P資源子集的 資源調度器對所述第P資源子集中的從節(jié)點進行選擇。
上述實施例中,所述主節(jié)點11獲得所述從節(jié)點信息后,將所述從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一Framework,以使所述第一Framework基于所述剩余資源量在所述從節(jié)點運行任務。具體的,所述主節(jié)點11獲得所述從節(jié)點信息后,依據(jù)現(xiàn)有的調度機制“Resource Offer”進行調度,即生成包含有所述從節(jié)點的剩余資源信息的“Resource Offer”并發(fā)送至所述第一Framework,所述第一Framework的調度器回復所述主節(jié)點11,基于所述從節(jié)點的剩余資源運行任務;另一方面,所述主節(jié)點11向所述從節(jié)點發(fā)送任務描述信息,以指示所述從節(jié)點運行所述第一Framework的資源需求量為X的任務;所述從節(jié)點接收到所述任務描述信息后,分配相應的資源給所述第一Framework的執(zhí)行器(Executor),再由所述第一Framework的執(zhí)行器(Executor)執(zhí)行任務。
在本發(fā)明實施例一至實施例四中,作為一種實施方式,圖6為本發(fā)明實施例的資源調度平臺的一種結構示意圖;如圖6所示,資源集合(或資源集合平臺)設置為多層環(huán)狀結構,每層環(huán)結構表征一個資源子集,所述多層環(huán)狀結構按預設梯度進行劃分,所述梯度表征資源量范圍,也即按預設資源量范圍劃分所述多層環(huán)狀結構;例如,環(huán)1的梯度范圍(資源量范圍)為l~l+n,則環(huán)1中包含資源量范圍在l~l+n中的從節(jié)點信息,如圖6中所示的從節(jié)點3和從節(jié)點6;環(huán)2的梯度范圍(資源量范圍)為l+n~l+2n,則環(huán)2中包含資源量范圍在l+n~l+2n中的從節(jié)點信息,如圖6中所示的從節(jié)點1、從節(jié)點7、從節(jié)點9和從節(jié)點10;以此類推,最外環(huán)(環(huán)M)的梯度范圍(資源量范圍)為l+(m-1)n~l+mn,則環(huán)M中包含資源量范圍在l+(m-1)n~l+mn中的從節(jié)點信息,如圖6中所示的從節(jié)點2、從節(jié)點5、從節(jié)點4和從節(jié)點8。其中,每個環(huán)(也即每個資源子集)對應一個資源調度器。具體的處理流程可參見實施例一至實施例三中所述,這里不再贅述。
實施例五
基于實施例四,本發(fā)明實施例還提供了一種主節(jié)點。圖7為本發(fā)明實施例 的主節(jié)點的組成結構示意圖,如圖7所示,所述主節(jié)點包括:通訊單元31和資源管理單元32;其中,
所述通訊單元31,用于獲得所有從節(jié)點的剩余資源量,將所述剩余資源量發(fā)送至所述資源管理單元32;還用于接收第一計算框架Framework的資源需求信息,講所述資源需求信息發(fā)送至所述資源管理單元32;還用于從所述第K資源子集的資源調度器獲得所述第一從節(jié)點信息,基于所述第一從節(jié)點信息將所述第一從節(jié)點的資源分配給所述第一Framework;
所述資源管理單元32,用于基于所述剩余資源量將對應的從節(jié)點信息劃分至對應的資源子集中;其中,預設的資源集合包括多個資源子集,所述資源子集對應預設資源量范圍;相鄰兩個資源子集的資源量范圍連續(xù)分布;還用于基于所述資源需求信息在所述資源集合中獲得滿足所述資源需求信息的第K資源子集;K為正整數(shù);確定所述第K資源子集中包含從節(jié)點信息時,使能所述第K資源子集的資源調度器。
進一步地,所述通訊單元31,用于將所述第一從節(jié)點的剩余資源量生成空閑資源信息發(fā)送至所述第一Framework,以使所述第一Framework基于所述剩余資源量在所述第一從節(jié)點運行任務。
作為一種實施方式,所述資源集合中的多個資源子集按資源量范圍由小到大排序;
所述資源管理單元32,還用于確定所述第K資源子集不包含從節(jié)點信息時,從所述資源集合的第K+1資源子集開始至第N資源子集為止進行查找匹配,獲得包含從節(jié)點信息的第L資源子集;其中,N和L均為正整數(shù),且L大于K+1且小于等于N;使能所述第L資源子集的資源調度器;
所述通訊單元31,還用于從所述第L資源子集的資源調度器獲得所述第二從節(jié)點信息,基于所述第二從節(jié)點信息將所述第二從節(jié)點的資源分配給所述第一Framework。
作為一種實施方式,所述資源管理單元32,還用于從第K+1資源子集開始至第N資源子集為止進行查找匹配,所有資源子集中均不包含從節(jié)點信息時, 從所述資源集合的第M資源子集開始進行查找匹配,獲得包含從節(jié)點信息的第P資源子集;其中,所述第M資源子集在所述資源集合中的資源量范圍最大P為正整數(shù),且P小于等于M;;使能所述第P資源子集的資源調度器;
所述通訊單元31,還用于從所述第P資源子集的資源調度器獲得所述第三從節(jié)點信息,基于所述第三從節(jié)點信息將所述第三從節(jié)點的資源分配給所述第一Framework。
本實施例中,所述滿足預設條件,包括:資源子集中從節(jié)點的剩余資源量與所述資源需求信息相差最小的從節(jié)點確認為滿足預設條件。
本領域技術人員應當理解,本發(fā)明實施例的主節(jié)點中各處理模塊的功能,可參照前述資源調度方法的相關描述而理解,本發(fā)明實施例的主節(jié)點中各處理模塊,可通過實現(xiàn)本發(fā)明實施例所述的功能的模擬電路而實現(xiàn),也可以通過執(zhí)行本發(fā)明實施例所述的功能的軟件在智能終端上的運行而實現(xiàn)。
本發(fā)明實施例五至實施例八中,所述主節(jié)點中的資源管理單元,在實際應用中可由所述主節(jié)點中的中央處理器(CPU,Central Processing Unit)、數(shù)字信號處理器(DSP,Digital Signal Processor)或可編程門陣列(FPGA,F(xiàn)ield-Programmable Gate Array)實現(xiàn);所述主節(jié)點中的通訊單元,在實際應用中可由所述主節(jié)點中的收發(fā)天線或收發(fā)機實現(xiàn)。
在本申請所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現(xiàn)。以上所描述的設備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。
上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個地方,也可以分布到多個網(wǎng)絡單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來 實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理單元中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
本領域普通技術人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:移動存儲設備、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
或者,本發(fā)明上述集成的單元如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質中?;谶@樣的理解,本發(fā)明實施例的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機、服務器、或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質包括:移動存儲設備、ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以所述權利要求的保護范圍為準。