陳伯雄,艾中良
(華北計算技術研究所,北京 100083)
差異化作業調度在Storm上的實現
陳伯雄,艾中良
(華北計算技術研究所,北京 100083)
作業調度一直是大數據技術研究的熱點,關于分布式集群上的調度優化的探討一直沒有停過。本文對比分析對比靜態分配調度、均勻分配調度、資源感知調度和就近調度算法,提出差異化作業調度管理技術,并把它應用到分布式實時處理系統Storm當中。經過實驗驗證,該調度算法能對Storm集群中不同作業任務,進行差異化管理。
作業調度;Storm;分布式計算;大數據
本文著錄格式:陳伯雄,艾中良. 差異化作業調度在Storm上的實現[J]. 軟件,2017,38(1):77-80
作業調度一直是大數據技術研究的重點,通常分布式平臺會有自己的一套默認調度邏輯算法,一個好的調度算法能夠平衡考量系統的穩定性、性能和負載均衡[1]。作業調度問題始于計算資源有限,不可能同時滿足所有作業任務。在單機計算時代,多個任務同時競爭CPU、內存、磁盤IO等資源,所以出現了CPU輪轉調度、內存LRU算法這些算法,而在大數據時代,單臺機器已經無法支撐作業,作業運行在計算集群中,這時候需要競爭的還有網絡帶寬等資源[2]。作業調度是通過調度算法,合理地有限的計算資源分配給不同的計算任務,一個好的調度算法需要同時考量系統的穩定性、性能和負載均衡。現有的流計算框架都有一套自己的通用作業調度算法[3-4],一般情況下是能夠滿足應用需求的,而差異化作業調度問題則在于,現實生產環境中作業需求復雜多樣,而現有調度算法調度策略單一;流計算應用開發者對底層組件開發比較熟悉,能夠針對具體應用場景從網路、存儲等方面進行優化,現有調度算法調度并不能滿足這種差異化作業的需求[5]。所以差異化作業調度問題其實是一般作業調度策略上更加高級的需求。
本文將研究靜態分配調度、均勻分配調度、資源感知調度和就近調度算法,提出差異化作業調度管理技術,并把它應用到分布式實時處理系統Storm當中,最后通過實驗驗證,該調度算法能對Storm集群中不同作業任務,進行差異化管理。
1.1 靜態分配調度策略
靜態分配是指應用在啟動之前和運行期間,占用的資源保持不變。或者對某種類型的任務分配固定資源占用。例如,給單個計算任務1 CPU邏輯內核,2G內存空間,20G磁盤空間或者將服務器資源的60%用于在線服務,40%用于離線服務,使得資源總和不超過各自的比例上限。這些應用在執行過程中幾乎不悔進行規格調整,是一種靜態的調度策略。
1.2 動態均勻分配調度策略
把集群可用的資源抽象出來,將計算資源盡可能均勻的分配到各個計算任務上。Storm的默認調度算法就是基于這種思想實現的。均勻的將每個組件(spout/bolt)的線程(組件并行度)分配到集群中的各個節點。舉個例子,一個集群有三個節點,node1有三個worker,node2有兩個worker,node3有一個worker。當用戶提交一個計算拓撲(該拓撲需要4個worker,1個spout,一個bolt,spout/bolt各占2個線程,共有4個task,每個占用一個worker計算資源)。則Storm會把spout1、bolt1調度到node1,spout2調度到node2,bolt1調度到node3。通過這種策略,可以使得任務比較均勻的與計算資源進行綁定,其缺點是,如果node3掛掉,它會按照當前調度策略重新把bolt1調度給node1,這種簡單均勻分配策略可能會造成局部不均衡。
1.3 資源感知調度策略
其核心算法是分析每個工作節點中各類資源的使用情況,然后根據這些資源的使用情況將工作任務調度到到合適的節點上。對于系統資源一般可以用CPU使用率、內存占用、磁盤、網絡等進行細粒度劃分。簡單的資源感知調度策略只求局部優化,比如,針對CPU密集型的任務組件,會將它的處理單元優先分配到CPU空閑資源多的節點上;針對內存密集型的任務組件,會將它的處理單元優先分配到內存空閑資源多的節點上;針對磁盤需求密集型的任務組件,可能會將它的處理單元優先分配到磁盤資源多的節點上。復雜的資源感知調度策略需要對各項資源進行綜合評估,給每一項任務每個資源計算權重,然后按照綜合資源評分給搶占資源和任務排序,最后將按照順序把資源分配給計算任務。再進一步則需要負載預測,根據CPU利用率、Memory消耗、Disk消耗,磁盤、網絡IO,甚至DB IO這些歷史數據中,多維度對應用、應用實例層面分別給出面向不同時間片大小的預測值,其實是非常具有挑戰的事情[6]。數據規模、采集的并發實時性,噪聲和突發流量甚至限流等,都對模型的響應時間、模型的準確率提出了很高的要求。因為錯誤的預測可能導致意想不到的調度影響,負載預測和業務關聯起來,甚至和能源消耗、成本關聯起來,除了趨勢評估,還可以幫助決策。由此對數據的協同分析,也需要專業的團隊進行跟進。總的來說,資源感知調度策略是一種業務依賴程度高、實現復雜、效果難以預測的高級調度策略。
1.4 就近調度策略
就近調度策略,而是一種流計算圖優化策略[7],其核心思想是減少中間狀態,減少數據遷移等帶來的開銷以提高性能。它的調度思路是將有直接數據傳輸關系的任務盡可能分配到一起,分配到同一個節點上減少網絡傳輸造成的延時,甚至可能分配到同一個工作進程,減少網絡通信、減少任務數據傳輸中序列化和反序列化帶來的額外開銷,從而提高流計算引擎的吞吐量并有效降低整體延遲。就近調度策略,也是目前業界性能優化很大的一個方向,比如國內阿里巴巴開源的JStorm,會試圖將兩個需要通訊的線程盡量放在一個worker中來減少網絡的傳輸。
1.5 現有的調度策略存在的問題
靜態分配調度策略是一種靜態的悲觀的調度策略,有點在于能夠有效限制系統資源的占用,缺點是需要提前規劃,缺乏靈活性,不適用于復雜的應用場景;動態均勻分配調度策略彌補了靜態分配調度策略的缺點,能夠根據機器集群當前狀態動態調整調度方案,使得計算任務盡可能均勻的利用空閑的集群資源,缺點是沒有考慮不同作業之間存在差異[8],例如資源占用類型比例不同,只是簡單的把作業調度“平均”分配到集群;資源感知調度策略考略到了作業之間的差異,但是其實現復雜,效果與業務類型,負載感知,甚至和能源消耗、成本關聯起來,在實際操作上一般只求局部優化,對某種類型的資源占用進行優化;就近調度策略,能有效降低延遲,但是對集群負載均衡缺乏關注,可能會造成某些機器滿負荷而其它機器空載。
本文分析已有調度技術的優缺點,在已有技術的基礎上形成差異化作業調度策略,希望在系統穩定性、性能、負債均衡之間取得一個平衡。該策略主要受動態均勻分配調度策略和就近調度策略影響,在整體上實現負載均衡,在局部利用就近調度,需要實現用戶自定義分配方式從而差異化管理了作業。依據如下:現實生產環境中作業需求復雜多樣,而現有流計算引擎調度算法調度策略單一,單一調度策略不能適應不同的需求;流計算應用開發者對底層組件開發比較熟悉,能夠針對具體應用場景從網路、存儲等方面實現就近調度優化,解決業務瓶頸,現有調度算法調度并不能滿足這種差異化作業的需求。該策略的應用場景包含:將不同組件放在同一工作節點中來達到替代DRPC的目的,比如task1->task2-task3->task4,把我們可以把task1與task4放到一個工作節點中,這樣task4的結果就能直接返回給task1;將上下游的組件放在一起,避免網絡傳輸;強制將一個組件運行分配到一個特定的機器上,減少數據在網絡中遷移,減低帶寬負載,例如,我們可以將一個操作數據庫的組件強制分配到數據庫所在的機器上;強制一個組件的不同線程運行在不同的機器中,實現業務隔離;允許用戶也可以選擇只對部分任務進行自定義分配,剩下其他還是使用默認的分配方式。使用差異化作業調度管理技術就能靈活處理不同業務場景,提高實時計算系統的通用性。本文擬基于開源流式計算引擎Storm進行研究開發,差異化作業調度管理技術。
3.1 具體實現過程
在Storm中,Nimbus根據默認調度程序將任務分配給Supervisor,默認調度器期望能把計算資源均勻地分配給拓撲任務[9],因此就公平性而言,Storm默認的調度策略運轉良好,但是對于流處理應用開發者而言,用戶不可能預測出Storm集群中拓撲組件運行的位置。又因為不同拓撲任務之間天然就存在差異性,簡單的把計算資源均勻地分配給拓撲任務實際上并不能有效地利用集群資源,特別在多節點部署過程中,不個節點的計算能力、計算資源、計算場景很可能也并不相同,在這些角度上分析,允許用戶將特定拓撲組件分配給位于特定的計算節點是非常重要的。因此,在Storm上開發者需要一種更加靈活的調度機制,增強用戶對集群中運行的拓撲任務的掌控能力,以利于優化某些業務處理性能。
實現作業差異化調度最核心的問題是了解調度器是如何工作的以及如何獲取集群信息,其中涉及理解Storm平臺的調度流程和與它相關的數據結構。首先從第一個問題出發,調度器是如何工作的,Nimbus服務器啟動實例化了scheduler,在用戶提交了拓撲之后,nimbus服務執行了mk-assignments方法,其中調用了scheduler的schedule方法,完成資源分配,schedule是其核心實現;schedule方法的默認傳參類型是Topologies和Cluster類型,從中我們可以獲取所有拓撲信息(TopologyDetails)以及所有工作節點信息(SupervisorDetails),由于Storm中元數據是由thrift定義的,我們可以從storm.thrift文件中找到SupervisorDetails中與調度相關的數據元祖map
(1)在Supervisor端config/storm.yaml實現自己的元數據,比如:


(2)實現IScheduler接口,給出核心代碼:配置信息,如果組件配置信息與工作節點元數據相匹配,則把計算資源分配給組件

完成調度程序后,我們需要將其打包到一個jar文件,放在Storm服務器$STORM_HOME/lib/路徑下
(3)在Nimbus端config/storm.yaml加入配置:

3.2 結果檢驗
建立拓撲

拓撲期望實現spout1運行在host1 Supervisor上,bolt2運行在運行在host2 Supervisor上,bolt3運行在host1 Supervisor上,拓撲結構如圖1:

圖1 實驗拓撲任務
訪問Storm UI,executor id[4-4] [2-2] [3-3]分別代表spout1、bolt2、bolt3組件,實驗結果如圖2。
可以看到調度器拓撲成功將特定組件分配到特定節點host1、host2、host上。

圖2 實驗結果展示
本章首先描述了差異化作業調度管理問題,接著分析了現有分布式作業調度策略的優點和不足,接著提出本文的差異化作業調度管理技術,并解釋了它相對現有調度策略的優點及其應用場景。最后在Storm上實現差異化作業調度,并用檢驗結果。
[1] 趙春燕. 云環境下作業調度算法研究與實現[D][J]. 北京:北京交通大學, 2009.
[2] Shieh C K, Huang S W, Sun L D, et al. A topology-based scaling mechanism for Apache Storm[J]. International Journal of Network Management, 2016.
[3] 陳若飛, 姜文紅. Hadoop 作業調度本地性的研究與優化[J]. 軟件, 2015, 36(2): 64-68
[4] 詹文濤, 艾中良, 劉忠麟, 等. 一種基于YARN 的高優先級作業調度實現方案[J]. 軟件, 2016, 37(3): 84-88
[5] 龍少杭. 基于Storm的實時大數據分析系統的研究與實現[D]. 上海交通大學, 2015.
[6] Peng B, Hosseini M, Hong Z, et al. R-Storm: Resource-Aware Scheduling in Storm[C]// ACM MIDDLEWARE '15 Proceedings of the, ACM MIDDLEWARE Conference. ACM, 2015: 149-161.
[7] 陳廷偉, 張斌, 郝憲文. 基于任務-資源分配圖優化選取的網格依賴任務調度[J]. 計算機研究與發展, 2007, 44(10): 1741-1750.
[8] Long S, Rao R, Miao W, et al. An improved topology schedule algorithm for storm system[C]//Computer Science and Applications: Proceedings of the 2014 Asia-Pacific Conference on Computer Science and Applications (CSAC 2014), Shanghai, China, 27-28 December 2014. CRC Press, 2015: 187.
[9] 李川, 鄂海紅, 宋美娜. 基于Storm的實時計算框架的研究與應用[J]. 軟件, 2014, 35(10): 16-20
Implementation of Differentiated Job Scheduling on Storm
CHEN Bo-xiong, AI Zhong-liang
(North China Institute of Computing Technology, Beijing 100083, China)
Job scheduling has always been a hot topic in the research of large data technology. The research on scheduling optimization on distributed clusters has not stopped. This paper compares and contrasts the static scheduling, the uniform allocation scheduling, the resource aware scheduling and the nearest scheduling algorithm, puts forward the differentiated job scheduling management technology and applies it to the distributed real-time processing system Storm. Experiments show that the proposed algorithm can perform differentiated management of different tasks in the Storm cluster.
Scheduling; Storm; Distributed Computing; Big Data
TP311
A
10.3969/j.issn.1003-6970.2017.01.016
國家基金項目
陳伯雄(1992-),男,研究生,主要研究方向:大數據、軟件技術;艾中良(1971-),男,研究員級高級工程師,主要研究方向:網格計算、信息共享及信息安全。