一種工作槽感知的Storm平臺作業均分調度方法
【專利摘要】本發明公開了一種工作槽感知的Storm平臺作業均分調度方法。本方法為:1)獲取集群中需要任務調度的拓撲集合,及集群中所有空閑可利用的工作槽集合;2)對該工作槽集合中同一工作節點的工作槽分為同一組;3)從當前工作槽剩余最多的分組中取出工作槽放入槽感知排序隊列,然后更新每組工作槽的數量,直到工作槽集合為空;4)對于該拓撲集合中的拓撲,根據該拓撲所設置的進程數、工作槽總數目和已經分配的工作槽數目,計算該拓撲需分配的工作槽數目Na;5)從該隊列中順序取出工作槽,并實時控制分配給該拓撲的工作槽中屬于同一工作節點的工作槽數n占該拓撲工作槽總數的比例不超過設定比例α,直至取出Na個工作槽分配給該拓撲。
【專利說明】
一種工作槽感知的Storm平臺作業均分調度方法
技術領域
[0001]本發明屬于主流的大數據實時流式計算平臺Storm,涉及Storm平臺作業調度的負載均衡問題,特別涉及一種細粒度工作槽感知的Storm平臺作業均分調度方法。
【背景技術】
[0002]在大數據時代,實時地從大規模的、快速持續產生的數據集中提取出有價值的信息成為挑戰。傳統的分布式大數據處理系統Hadoop主要進行批量計算,適合靜態數據的離線批處理,要求預先將處理的輸入數據存儲在分布式文件系統中。Storm作為實時分布式大數據流式計算平臺,適合動態數據的實時流處理,不要求數據的預先存儲而是在內存中直接進行數據的實時計算。由于數據流式計算區別于數據批量計算,因此大數據流式計算平臺在架構設計上也區別于MapReduce的編程模式。為了滿足數據的實時流處理,大數據流式計算平臺在消息處理機制、容錯機制和資源調度機制方面均做出了特殊設計。
[0003]隨著大數據流式計算技術的發展和應用,研究人員對流式計算平臺的作業調度機制、可靠機制、容錯性、負載均衡、數據吞吐量等方面進行了分析優化。尤其考慮到Storm平臺的作業調度機制,調度器(Scheduler)負責為拓撲作業(拓撲)分配當前集群可用資源。從Storm-0.8.2版本開始,Storm提供三種調度器:均分資源調度器(EvenScheduler)、釋放-再均分資源調度器(DefaultScheduler)和隔離-獨占資源調度器(Solat1nScheduler)。并且也提供了 IScheduler接口,用戶可基于該接口實現自定義的調度器。
[0004]術語說明
[0005]I)均分調度器(EvenScheduler):它是Storm的基礎調度器,負責將集群中的可用資源均勻地分配給當前需要任務分配的多個拓撲。
[0006]2)拓撲(Topology):它是Storm中運行的一個實時應用程序,也稱拓撲作業。
[0007]3)主控節點(Nimbus):它負責在集群中分發代碼,對節點分配任務,并監視主機故障。
[0008]4)工作節點(Supervisor):它監聽、啟動和停止其主機上已經分配的工作進程及任務。
[0009]5)工作槽(slot):它是工作節點上資源分配的基本單位,一個工作槽上有且僅啟動一個進程。工作槽表示為二元組〈supervisor-1d,port>,supervisor-1d為工作節點編號,port為端口號。
[0010]6)進程(worker):它是運行具體處理邏輯的進程,也稱工作進程。每個進程是一個物理的JVM,可啟動多個線程,且僅運行一個拓撲作業的子集,即一個進程僅屬于一個拓撲。
[0011]7)執行器(executor):它由工作進程啟動,也被稱為物理線程。
[0012]8)任務(task):它是物理上執行拓撲的單元,默認進程中每個線程上運行一個任務。
[0013]A類均分調度器
[0014]為了便于區分,本發明將Storm-0.9.2以前版本(包括Storm-0.9.2)提供的均分調度器統稱為A類均分調度器,它將每個拓撲的進程和線程均勻地分配到集群中可利用的工作節點上。具體的,為了實現將某拓撲作業的進程均分到工作節點的工作槽上,A類均分調度器利用sort-slots方法首先將集群中可利用的slots按照supervisor-1d進行分組,然后分組間交叉存取(interleave-all)每個分組內的第一個slot,并遞歸交叉存取過程返回slots排序隊列,最后從隊列中取出固定數目的slots分配給工作進程。為了實現將拓撲的線程均勻地分配到進程,A類均分調度器采用循環(Round-Robin)策略將同一組件(Spout/Bolt)的線程分配到不同工作節點的進程,減少同質資源競爭。由此不難發現,A類均分調度器排序方法中的分組順序都是固定的,由supervisor-1d決定。
[0015]B類均分調度器
[0016]為了便于區分,本發明將Storm 0.9.3以上版本(包括Storm-0.9.3)提供的均分調度器統稱為B類均分調度器,它和A類均分調度器都實現均分資源的目標。唯一不同在于B類均分調度器在sort-slots方法上做了修改,它保證工作槽資源剩余多的工作節點上被優先調度,并保證每個拓撲盡可能運行在所有工作節點上。具體的,B類均分調度器的sort-slots 方法 ,首先將集群中可利用的slots 按照 supervisor-1d 分組后再組間降序排列 ,然后分組間交叉存取每個分組內的第一個slot,并遞歸交叉存取過程返回slots排序隊列。由此,不難發現,B類均分調度器多了分組間降序排序過程,分組的先后順序是根據工作節點資源剩余量動態變化的。但是,A類和B類調度器中的排序方法都是節點級別的分組交叉排序。
[0017]現有幾種方法的缺點和局限性
[0018]1)A類均分調度器提供的sort-slots排序方法僅僅考慮將集群中可利用的資源按照工作節點編號進行分組,然后按照組間交叉-循環排序得到slots排序隊列。通過分析排序結果可知,該sort-slots方法存在局限性,排序結果中某些工作節點總是排序在前,某些工作節點排序在后。
[0019]2)由于A類均分調度器的sort-slots方法存在問題I),在多個拓撲被調度分配時,拓撲任務總是會被分配到某幾臺排序靠前的工作節點上。對于每個拓撲而言,A類均分調度器將單個拓撲作業任務均分到集群的工作節點上。但是對于多個拓撲而言,A類均分調度器并沒有真正實現大數據集群資源地均勻分配,一些機器空轉造成資源浪費,一些機器卻負載嚴重。甚至造成集群負載不均衡的極端情況:某些機器上slot全部被占用,但是某些機器上slot全部空閑。
[0020]3)B類均分調度器雖然改進了 sort-slots方法,使得資源剩余量較多的工作節點上工作槽被優先分配,但是仍舊是屬于節點級別的排序調度。考慮到集群資源負載的問題,Storm流式計算平臺在此方面存在著明顯不足。Storm集群在運行過程中,工作節點在出現故障(快速失敗的)、工作進程運行失敗、拓撲被用戶Kill或者擴展新的工作節點等情況,均會釋放-回收集群中的工作槽資源,造成拓撲任務不再均衡地分布在集群中的工作節點上,出現集群資源負載不均衡的狀況。該狀況一旦被集群中的惡意用戶利用,將會造成Storm集群的安全威脅。
[0021]4)在Storm集群正常使用的情況下,雖然B類均分調度器能夠實現單個拓撲和多個拓撲均分集群資源,但是它仍舊屬于節點級別的調度策略。特殊的,如若集群出現3)中提到的情況,顯然目前Storm自帶的A/B類均分調度器都不能解決負載不均衡的問題。這種節點級別的循環調度策略仍舊將新拓撲任務均分到每個工作節點上,反而會加重負載不均衡。
【發明內容】
[0022]鑒于此,本發明所要解決的技術問題是提供一種細粒度工作槽感知的Storm平臺作業均分調度方法。由于在Storm集群出現負載不均衡的情況下,Storm目前提供的A/B類均分調度器不僅不能減輕該問題反而會加重。本發明提出了一種基于工作槽感知的細粒度排序算法,設計了實施工作槽級別的均分調度策略,稱為Slot-aware策略。本發明不僅能夠保證集群正常情況下,實現單個拓撲和多個拓撲任務被均勻分配到集群中可利用的工作節點上,即正常情況下資源的負載均衡。而且,本發明也能保證集群出現負載不均衡的情況下,將新拓撲任務適當合并分配到資源負載較輕的部分工作節點上,即負載不均衡時動態調整使得集群負載均衡。
[0023]本發明最明顯的特點是,單個拓撲任務不再被循環分配到每個工作節點上的一個工作槽上,而是細粒度地感知每個工作節點上的工作槽剩余量,適當合并拓撲任務到負載較輕的工作節點上,保證集群負載均衡。值得說明的是,實施的Slot-aware均分調度器修改了 sort-slots方法,加入了新的概念-槽感知排序隊列和拓撲任務單節點合并因子。本發明提出的均分調度策略屬于工作槽級別的細粒度調度策略,不涉及到工作槽端口號排序分組,普遍適用于工作節點間端口號設置一致或者不一致的集群中。如圖1所示,一種細粒度的工作槽感知的Storm平臺作業均分調度方法(slot-aware scheduling policy, Slot-aware策略),其實現流程如下:
[0024]I)首先,獲取集群中需要任務調度的拓撲集合,及集群中所有空閑可利用的工作槽集合。
[0025]2)其次,對于集群中可利用的工作槽資源,使用工作槽感知的sort-slots排序算法進行排序。該過程詳細為:
[0026]①將工作槽集合內的元素(工作槽)按照工作槽的第一個字段(工作節點編號)進行分組,工作槽集合被分為若干組,同一工作節點的工作槽被分為同一組。說明,工作槽表示為二元組〈supervisor-1d, port〉,其中supervisor-1d為工作節點編號,用于標識工作槽屬于哪個工作節點。
[0027]②將分組后的工作槽集合根據各分組內的元素數(工作槽數)進行組間降序排列。至此,屬于同一工作節點的工作槽被分為同一分組,且工作槽空閑最多的工作節點分組排序在前。
[0028]③從第一個分組內取第一個元素(即第一個工作槽),即從將工作槽剩余最多的工作節點上取出一個工作槽,將其放入槽感知排序隊列。槽感知排序隊列是一個將集群中可利用地空閑工作槽按照工作槽感知排序算法排序后形成的slots隊列。
[0029]④判斷剩余的工作槽集合是否為空,重復①②③,遞歸直到工作槽集合為空。
[0030]3)再次,獲取槽感知排序隊列中的工作槽排序結果和工作槽數目Nq。從需要調度的拓撲集合隊列中,獲取一拓撲所設置的進程數、線程數和任務數。并利用Round-Robin策略使得線程任務均分到各進程,保證各組件Spout/Bolt任務均勻分布,防止同質資源競爭。
[0031]4)然后,獲取該拓撲所設置的工作槽總數目Nw和已經分配的工作槽數目N1,計算該拓撲需要再申請的工作槽數目Nr = Nw-N1,實際再分配的工作槽數目Na=Min(Nr,Nq)。
[0032]5)接著,從槽感知排序隊列中陸續取出前1個工作槽。根據集群預先設置已知的拓撲任務單節點合并因子α,實時判斷分給該拓撲的全部工作槽中屬于同一個工作節點的工作槽η所占百分比Θ不能超過合并因子α。具體的,合并因子α被設置為系統級別的參數,由系統管理員設置,默認值為I,取值范圍為(0,I]。若超過,則從槽感知排序隊列中取后續工作槽,調整Θ值使其不超過合并因子α,直至取出1個工作槽分配給該拓撲。特殊地,如果工作槽集合中工作槽有限且比較集中在某一分組中,無法取出滿足θ<α的仏個工作槽,那么取出滿足條件的部分工作槽先分配給該拓撲。合并因子α的設置限制了某個拓撲作業在單個工作節點上所占的資源比例,防止該拓撲任務過多地運行在同一節點上,出現同質資源競爭而減弱了負載平衡帶來的優勢。
[0033]6)最后,判斷槽感知隊列中的工作槽數目是否大于零,若為真則返回I),否則調度結束。
[0034]本發明的有益效果
[0035]本發明提出了一種細粒度地工作槽感知的Storm平臺作業調度方法,其主要優勢在于:它采用工作槽級別的sort-slots排序算法,細粒度遞歸地進行工作槽排序,每次排序出資源剩余最多地工作節點上的一個工作槽,將其放入槽感知排序隊列,直至全部工作槽排序結束。然后再從工作槽排序隊列中取出固定數目且滿足合并因子α條件下的工作槽。對比Storm集群目前提供的Α/Β類均分調度器,無論集群工作節點上的工作槽端口號設置是否一致的情況下,它不僅考慮到集群出現負載不均衡時,通過所設置的合并因子α合并部分拓撲任務到資源空閑最多的工作節點,而且也盡量使得拓撲任務均分到資源空閑最多的工作節點上,這樣不僅能夠使得集群保持動態的負載均衡,減少拓撲任務間的通信流量,而且也能夠避免過多的拓撲任務運行在同一工作節點造成同質資源競爭,提高集群資源利用率。
[0036]由此可見,本發明考慮到了工作槽之間的分配和依賴關系,每排序出一個工作槽會影響剩余工作槽集合的排序結果。實施Slot-aware策略的大數據流式計算平臺在正常運行的情況下,它能夠達到Storm集群(實施B類均分調度器)相同的吞吐量和資源利用率。但是,當集群出現負載不均衡時,它能夠改善集群的負載情況,調度新拓撲使得集群負載均衡而不至于更糟糕。實驗驗證表明,在負載不均衡的情況下,本發明Slot-aware策略通過將新拓撲按照槽感知的排序方法分配到集群中負載較輕的某幾臺機器上,以減輕負載較重機器的壓力,降低對集群機器的硬件和軟件要求,達到負載均衡。實驗結果顯示,在負載不均衡的情況下,本發明相比之前的Storm集群,首先各計算節點上工作槽資源的占用率(使用率)維持均勾,此外,WordCount流式拓撲(進程數-4,任務數-25)在1min內的吞吐量增長了1.2x,該拓撲作業的Tuple平均處理時間降低了 16.7%。
【附圖說明】
[0037]圖1為本發明一種工作槽感知的Storm作業均分調度策略流程圖;
[0038]圖2為本發明在正常運行場景下三類集群分別先后調度3個拓撲的工作槽分配實施例圖;
[0039](a)A類Storm集群,(b)B類Storm集群,(C)F-Storm集群;
[0040]圖3為本發明Kill掉拓撲2后造成負載不均衡的場景下兩類集群調度新拓撲4的實施例圖;[0041 ] (a)B類Storm集群,(b)F_Storm集群;
[0042]圖4為本發明加入新工作節點S4且端口號設置不一致后造成負載不均衡的場景下兩類集群調度新拓撲5的實施例圖。
[0043](a)B類Storm集群,(b)F_Storm集群;
[0044]圖5為本發明在實施例場景二下拓撲4的tuple平均處理時間和Imin內吞吐量的實驗數據對比圖;
[0045](a)場景二:新提交拓撲4的平均處理時間(/元組)對比圖,
[0046](b)場景二:新提交拓撲4的吞吐量(/分鐘)對比圖,
[0047](c)場景二:新提交拓撲4的1min內累計吞吐量散列圖。
【具體實施方式】
[0048]本發明不僅保證在集群正常運行時,單個拓撲和多個拓撲作業均分Storm集群資源。而且,在集群由于節點故障、Worker進程失敗、Ki 11掉某拓撲、加入新工作節點等情況造成集群負載不均衡時,以及工作節點間工作槽端口號設置不一致時,本發明也能將單個或者多個拓撲作業均分調度到資源空閑較多的工作節點上,使得集群恢復負載均衡。
[0049]在具體實施時,本發明基于S t ο rm - 0.1 0.0源碼,修改均分調度器的EvenScheduler.cl j和util.cl j源碼文件,實現細粒度地工作槽感知的sort-slots排序算法(Clo jure語言),使用Maven工具重新編譯打包Storm大數據流式計算項目,替換Storm-0.10.0發行版中storm-core.jar包。另外,基于Storm-0.10.0源碼,修改均分調度器的EvenScheduler.clj源碼文件中的分組排序方式,實現A類均分調度器。然后,在大數據環境下部署分布式的Storm大數據流式計算框架,設計三組大數據實施例場景,分別對比每種場景下大數據流式計算平臺的不同作業調度情況,分析集群資源負載均衡問題,對比拓撲作業在不同平臺負載下的Tuple平均處理時間。需要說明,基于Storm-0.10.0源碼,A類Storm集群默認實施A類均分調度器,B類Storm集群默認實施B類均分調度器,F-Storm集群默認實施Slot-aware策略,合并因子為α(默認I)。
[0050]實施例:
[0051 ] I)場景一:在正常運行場景下,々類31:0;?!集群、B類Storm集群和F-Storm集群等三類集群分別先后調度拓撲1、拓撲2、拓撲3后的工作槽分配,如圖2所示。
[0052]初始時,各Storm集群中啟動3臺工作節點,每臺工作節點上工作槽的可用端口號都是6700、6701、6702、6703,即每臺工作節點可用的工作槽數目為4。
[0053]①A類 Storm集群。
[°°54] 先提交拓撲l(4worker),占用4個SlotSc3A類均分調度器中sort-slots方法的傳入集合為:{[S1 6700][S1 6701][S1 6702][S1 6703][S2 6700][S2 6701][S2 6702][S26703][S3 6700][S3 6701][S3 6702] [S3 6703]},按照工作節點編號進行分組,分成三組:{[[SI 6700][S1 6701][S1 6702][S1 6703]][[S2 6700][S2 6701][S2 6702][S2 6703]][[S3 6700][S3 6701][S3 6702][S3 6703]]}。然后調用interleave-all方法遞歸交叉存取,排序結果為:{[S1 6700][S2 6700][S3 6700][S1 6701][S2 6701][S3 6701][S1
6702][S2 6702] [S3 6702][S1 6703] [S2 6703] [S3 6703]}。最后,從sort-slots返回的排序結果中取出前4個工作槽:{[SI 6700][S2 6700][S3 6700][S1 6701] },將拓撲I的線程任務均分到4個進程中,并啟動對應工作節點上的4個工作槽。
[0055]然后提交拓撲2(2worker),占用2個slots。同理,初始傳入A類均分調度器中sort-slots方法的集合為:{[SI 6702][S1 6703][S2 6701][S2 6702][S2 6703][S3 6701][S3
6702][S3 6703]},最后排序結果為:{[SI 6702][S2 6701][S3 6701][S1 6703][S2 6702][S3 6702][S2 6703][S3 6703] },該拓撲占用前 2 個工作槽:{[SI 6702][S2 6701]}。提交拓撲3(2worker),再次排序占用排序結果的前2個工作槽:{[SI 6703] [S2 6702]}。如圖2(a)所示,A類調度器總是將拓撲分配到排序靠前的工作節點上,造成集群正常運轉情況下節點間負載不均衡的狀況。
[0056]②B類Storm集群
[°°57]先提交拓撲l(4worker),占用4個slots。該拓撲在B類Storm集群的調度結果與①中拓撲I的調度結果相同。為拓撲I分配4個工作槽后,集群剩余的工作槽集合為:{ [SI
6702][S16703][S2 6701][S2 6702][S2 6703][S3 6701][S3 6702][S3 6703]}。
[0058]然后提交拓撲2(2worker),占用2個slots。初始傳入B類均分調度器中sort-slots方法的集合為:{[SI 6702][S1 6703] [S2 6701][S2 6702] [S2 6703] [S3 6701][S3 6702][S3 6703]}。其次按照工作節點編號進行分組且分組間按照分組內元素個數降序排列,結果為:{[S2 6701][S2 6702][S2 6703]][S3 6701][S3 6702] [S3 6703]][[S1 6702][S16703 ] ]},然后調用inter leave-al I方法遞歸交叉存取,排序結果為:{[S2 6701 ][ S3 6701][SI 6702] [S2 6702][S3 6702][S1 6703] [S2 6703][S3 6703]}。最后,從 sort-slots 返回的排序結果中取出前2個工作槽:{[S2 6701][S3 6701 ]},將拓撲2線程均分到這2個進程中,并啟動對應工作節點上的2個工作槽。
[0059]最后提交拓撲3(2worker),占用2個slots。同理sort-slots方法返回的排序結果為:{[SI 6702][S2 6702][S3 6702][S1 6703][S2 6703][S3 6703] },該拓撲占用前 2 個slots: {[SI 6702] [S2 6702]}。如圖2(b)所示,B類調度器總是將拓撲均勻分配到集群中每個工作節點上,實現集群正常運轉情況下節點間的負載均衡。
[0060]③F-Storm 集群
[0061]先后提交拓撲1、拓撲2和拓撲3,如圖2(c)所示,集群正常運轉的情況下,三個拓撲作業的調度情況同2(b)完全相同,維持節點間的負載均衡。
[0062]2)場景二: B類Storm集群和F-Storm集群在I)場景基礎上,分別kill掉正在運行的拓撲作業2后,兩類集群均出現負載不均衡的情況,提交新拓撲4的調度場景。
[0063]該場景初始時,兩類Storm集群的節點SI被占用3個slots{[Sl 6700][S1 6701][SI 6702]},節點S2被占用2個slots{[S2 6700] [S2 6702]},節點S3被占用I個slots{ [S3
6700]} ο
[0064]①B類Storm集群
[0065]提交新拓撲4(3worker),占用3個slots。排序結果:{[S36701][S2 6701][S1
6703][S36702][S2 6703][S3 6703] },分配前 3 個 slots: {[S3 6701][S2 6701][S16703]},如圖3(a)所示。
[0066]②F-Storm 集群
[0067]提交新拓撲4(3worker),占用3個slots。初始傳入Slot-awareScheduler Rule中sort-slots 方法的集合為:{[SI 6703][S2 6701][S2 6703][S3 6701][S3 6702][S36703]},按照工作節點編號進行分組且分組間按照分組內元素個數降序排列,經過一次排序后的結果:{[[S3 6701][S3 6702][S3 6703]][[S2 6701][S2 6703]][[S1 6703]]},取出第一個分組內的第一個元素[S3 6701]。然后再對剩余的工作槽集合遞歸分組排序過程,每次排序取出的第一個元素均是集群中資源空閑最多地工作節點上的一個工作槽,最終返回槽感知的排序隊列結果為:{[S3 6701][S2 6701][S3 6702][S1 6703][S2 6703][S3
6703]},分配給該拓撲4前3個工作槽:{[S3 6701][S2 6701][S3 6702]},如圖3(b)所示。對比圖3(a)和3(b),可知F-Storm集群在負載不均衡的情況下使工作節點間負載均衡,B類Storm集群反而使負載不均衡加重。
[0068]3)場景三:B類Storm集群和F-Storm集群在I)場景下,分別都加入新的工作節點S4后,且S4工作節點上的工作槽端口號與集群中其他工作節點上的工作槽端口號設置不一致。在兩類Storm集群均出現負載不均衡的情況下,提交新拓撲作業5的調度場景。
[0069]該場景初始時,兩類Storm集群的工作節點SI被占用3個slots{[Sl6700][S1
6701][S16702]},工作節點S2被占用3個slots{[S2 6700][S2 6701][S2 6702]},工作節點S3被占用2個slots{[S3 6700][S3 6701]},工作節點S4空閑。
[0070]①B類Storm集群
[0071 ] 提交新拓撲5(4worker),占用4個slots。!?類均分調度器中sort-slots方法的排序結果為:{[S4 6700][S3 6702][S2 6703][S1 6703][S4 6701][S3 6703][S4 6702][S4
6702]}。分配給該拓撲5前4個slots:{{[S46700][S3 6702][S2 6703][S1 6703]},如圖4(a)所示。
[0072]②F-Storm 集群
[0073]提交新拓撲5(4worker),占用4個slotSaSlot-awareScheduler Rule中sort-slots方法的槽感知排序隊列結果為:{[S4 6700][S4 6701][S3 6702][S4 6702][S1
6703][S26703] [S3 6703] [S4 6703]},分配給該拓撲前4個工作槽:{[S4 6700] [S4 6701][S3 6702][S4 6702]},如圖4(b)所示。對比圖4(a)和4(b),可知F-Storm集群在負載不均衡的情況下,在合并因子α約束內將新拓撲盡可能均分到資源空閑較多的工作節點,達到工作節點間負載均衡。相反,B類Storm集群使得新拓撲盡可能分配到每個工作節點上,勢必會造成SI和S2工作節點負載更嚴重。
【主權項】
1.一種工作槽感知的Storm平臺作業均分調度方法,其步驟為: 1)獲取集群中需要任務調度的拓撲集合,及集群中所有空閑可利用的工作槽集合; 2)對該工作槽集合中的工作槽資源進行排序,將同一工作節點的工作槽分為同一組; 3)從當前工作槽剩余最多的分組中取出工作槽放入槽感知排序隊列,然后更新每組工作槽的數量,直到工作槽集合為空; 4)對于該拓撲集合中的拓撲,根據該拓撲所設置的進程數、工作槽總數目Nw和已經分配的工作槽數目N1,計算該拓撲需要再申請的工作槽數目Nr = Nw-N1和需實際再分配的工作槽數目Na=Min(Nr,Nq) ;Nq為工作槽集合中的工作槽數目; 5)從該槽感知排序隊列中順序取出工作槽,并實時控制分配給該拓撲的工作槽中屬于同一工作節點的工作槽數η占該拓撲工作槽總數Nw的比例不超過設定比例α,直至取出1個工作槽分配給該拓撲。2.如權利要求1所述的方法,其特征在于,步驟4)中,還獲取該拓撲所設置的線程數和任務數;將線程、任務均分到各進程。3.如權利要求2所述的方法,其特征在于,利用Round-Robin策略使得線程、任務均分到各進程。4.如權利要求1所述的方法,其特征在于,α為拓撲任務單節點合并因子,取值范圍為(0,1]。5.如權利要求4所述的方法,其特征在于,α由系統管理員設置,默認值為I。6.如權利要求1-5任一所述的方法,其特征在于,步驟5)中,如果滿足工作槽數η占該拓撲工作槽總數Nw的比例不超過設定比例α,則取出滿足條件的部分工作槽先分配給該拓撲。7.如權利要求1-5任一所述的方法,其特征在于,將該工作槽集合內的工作槽按照工作槽的工作節點編號進行分組。8.如權利要求1-5任一的方法,其特征在于,所述集群為Storm集群。9.如權利要求8所述的方法,其特征在于,所述集群為Storm集群包括A類Storm集群、B類Storm集群和F-Storm集群。10.如權利要求9所述的方法,其特征在于,所述A類Storm集群默認實施A類均分調度器,B類Storm集群默認實施B類均分調度器,F-Storm集群默認實施Slot-aware策略,α為合并因子。
【文檔編號】G06F9/48GK106095573SQ201610404619
【公開日】2016年11月9日
【申請日】2016年6月8日
【發明人】沈晴霓, 錢文君, 楊雅輝, 吳中海
【申請人】北京大學