您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Spark Streaming如何實現工作流調度器,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
之前有說過要設計一個工作流調度器。開發一個完善的工作流調度器應該并不是一件簡單的事情。但是通過Spark Streaming(基于Transfomer架構的理念),我們可能能簡化這些工作。我在這塊并沒有什么經驗,這只是一個存在于腦海中的東西。
下面是Azkaban的架構圖:
也就是說要搭建一個穩定可靠的Azkaban的工作流調度器,你可能需要
兩臺 互為主備MySQL
兩臺Executor Server
一臺Web Server
你需要做架構設計,考慮WebServer 和 Executor Server的通訊問題
擴展性問題。Executor 能夠動態調整?
穩定性問題。畢竟24小時運行的
然而,我們其實是不需要關注這么多東西的。我們真正關注的是:
Web UI
工作流的生成,解析,運行和存儲
其他的都是基礎設施。按照Transfomer架構的設計理念,我們應該可以找到一個Estimator ,作為我們的基礎設施,我們只要關注上面兩點即可,不需要為部署,高可用,穩定等發愁。同時我們也希望譬如WebUI等工作不是從頭開始,而是按部就班添加新功即可。所以有了Estimator,我們只要做三點:
實現業務邏輯,也就是工作流的生成,解析,運行和存儲等操作。
實現管理頁面邏輯
指定需要的資源cpu/內存,就能Run起來這個Transformer
我搜羅了一圈,發現Spark Streaming 是能夠滿足該需求的一個Estimator。
這得益于,Spark Streaming 從某個角度而言就是個定時任務調度系統,也就是我們說的微批處理。對于工作流調度器而言,無非就是每個周期(duration)在Driver端啟動線程掃描MySQL,實現任務的分發和執行。
那如果實現一個類似Azkaban 能夠的做的事情,前面我們提到,要做三件事情,分別對應為:
1.實現業務邏輯,也就是工作流的生成,解析,運行和存儲等操作。其中生成,解析,存儲 三個環節可以放在Driver端,也可以都放在Executor 端。也就是說:Driver的設計可重可輕。重的設計可由Driver讀取MySQL 并且解析成工作流任務,然后發送給Executor 去執行。輕的設計Driver僅僅是讀取MySQL,然后就簡單將id分發給各個Executor,各個Executor 負責解析執行和反饋結果。
2.增強 Spark Streaming UI,添加管理頁面,實現Azkaban Web Server類似界面。
3.按標準的Spark Streaming 程序提交該實現到集群即可完成部署。
我們看到,我們真正做到了只關注核心業務邏輯的實現,所謂部署,安裝,運行等環節都實現了平臺化(其實Estimator完成了)。 而且實現了資源的細粒度(CPU/內存)劃分,而不再是以服務器為基本單元。
事實上,我們也可以將一個Spark Streaming當做一個crontab 任務,這樣就自然具有了一個分布式的crontab系統,并且提供更友好的管理,甚至能將任務本身融入到crontab中。
以上就是Spark Streaming如何實現工作流調度器,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。