從0到1搭建大數(shù)據(jù)平臺之調(diào)度系統(tǒng)
記得第一次參與大數(shù)據(jù)平臺從無到有的搭建,最開始任務調(diào)度就是用的Crontab,分時日月周,各種任務腳本配置在一臺主機上。crontab 使用非常方便,配置也很簡單。剛開始任務很少,用著還可以,每天起床巡檢一下日志。隨著任務越來越多,出現(xiàn)了任務不能在原來計劃的時間完成,出現(xiàn)了上級任務跑完前,后面依賴的任務已經(jīng)起來了,這時候沒有數(shù)據(jù),任務就會報錯,或者兩個任務并行跑了,出現(xiàn)了錯誤的結果。排查任務錯誤原因越來麻煩,各種任務的依賴關系越來越負責,最后排查任務問題就行從一團亂麻中,一根一根梳理出每天麻繩。crontab雖然簡單,穩(wěn)定,但是隨著任務的增加和依賴關系越來越復雜,已經(jīng)完全不能滿足我們的需求了,這時候就需要建設自己的調(diào)度系統(tǒng)了。
多個任務單元之間往往有著強依賴關系,上游任務執(zhí)行并成功,下游任務才可以執(zhí)行。比如上游任務1結束后拿到結果,下游任務2、任務3需結合任務1的結果才能執(zhí)行,因此下游任務的開始一定是在上游任務成功運行拿到結果之后才可以開始。而為了保證數(shù)據(jù)處理結果的準確性,就必須要求這些任務按照上下游依賴關系有序、高效的執(zhí)行,最終確保能按時正常生成業(yè)務指標。
Apache Airflow是一種功能強大的工具,可作為任務的有向無環(huán)圖(DAG)編排、任務調(diào)度和任務監(jiān)控的工作流工具。Airflow在DAG中管理作業(yè)之間的執(zhí)行依賴,并可以處理作業(yè)失敗,重試和警報。開發(fā)人員可以編寫Python代碼以將數(shù)據(jù)轉換為工作流中的操作。
主要有如下幾種組件構成:
具體執(zhí)行流程:
將各個任務操作組件拖放到工作區(qū),kettle支持各種常見的數(shù)據(jù)轉換。此外,用戶可以將Python,Java,JavaScript和SQL中的自定義腳本拖放到畫布上。kettle可以接受許多文件類型作為輸入,還可以通過JDBC,ODBC連接到40多個數(shù)據(jù)庫,作為源或目標。社區(qū)版本是免費的,但提供的功能比付費版本少。
XXL-JOB是一個分布式任務調(diào)度平臺,其核心設計目標是開發(fā)迅速、學習簡單、輕量級、易擴展。將調(diào)度行為抽象形成“調(diào)度中心”公共平臺,而平臺自身并不承擔業(yè)務邏輯,“調(diào)度中心”負責發(fā)起調(diào)度請求;將任務抽象成分散的JobHandler,交由“執(zhí)行器”統(tǒng)一管理,“執(zhí)行器”負責接收調(diào)度請求并執(zhí)行對應的JobHandler中業(yè)務邏輯;因此,“調(diào)度”和“任務”兩部分可以相互解耦,提高系統(tǒng)整體穩(wěn)定性和擴展性。(后來才知道XXL是作者名字拼音首字母縮寫)
調(diào)度系統(tǒng)開源工具有很多,可以結合自己公司人員的熟悉程度和需求選擇合適的進行改進。
調(diào)度平臺其實需要解決三個問題:任務編排、任務執(zhí)行和任務監(jiān)控。
調(diào)度平臺設計中還需要注意以下幾項:
ETL 開發(fā)是數(shù)據(jù)工程師必備的技能之一,在數(shù)據(jù)倉庫、BI等場景中起到重要的作用。但很多從業(yè)者連 ETL 對應的英文是什么都不了解,更不要談對 ETL 的深入解析,這無疑是非常不稱職的。做ETL 你可以用任何的編程語言來完成開發(fā),無論是 shell、python、java 甚至數(shù)據(jù)庫的存儲過程,只要它最終是讓數(shù)據(jù)完成抽?。‥)、轉化(T)、加載(L)的效果即可。由于ETL是極為復雜的過程,而手寫程序不易管理,所以越來越多的可視化調(diào)度編排工具出現(xiàn)了。
不管黑貓白貓,只要能逮住老鼠就是好貓。不管是哪種工具,只要具備高效運行、易于維護兩個特點,都是一款好工具。
歷史好文推薦你點的每個在看,我都認真當成了喜歡聲明:免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉載,或轉載時
需注明出處:新網(wǎng)idc知識百科