【開源】etl作業調度工具性能綜合對比

最近遇到了很多正在研究ETL及其工具的夥伴向我們抱怨:同樣都在用 Kettle ,起點明明沒差異,但爲什麼別人ETL做的那麼快那麼好,自己卻不斷掉坑?

其實,類似於像 Kettle 這樣開源的工具,已經覆蓋了大部分日常工作所需的功能了,直接部署一套就能夠解決企業基本的需求。

今天我們就先對其中一個比較火熱的“App”——調度工具,做一個簡單的評測對比,幫助大家快速解鎖用開源工具做 ETL 的新姿勢。

爲什麼需要調度系統?

開局我們先掃盲。

我們都知道大數據的計算、分析和處理,一般由多個任務單元組成(Hive、Sparksql、Spark、Shell等),每個任務單元完成特定的數據處理邏輯。

多個任務單元之間往往有着強依賴關係,上游任務執行併成功,下游任務纔可以執行。比如上游任務結束後拿到 A 結果,下游任務需結合 A 結果才能產出 B 結果,因此下游任務的開始一定是在上游任務成功運行拿到結果之後纔可以開始。

而爲了保證數據處理結果的準確性,就必須要求這些任務按照上下游依賴關係有序、高效的執行。一個較爲基礎的處理方式是,預估出每個任務處理所需時間,根據先後順序,計算出每個任務的執行的起止時間,通過定時跑任務的方式,讓整個系統保持穩定的運行。

一個完整的數據分析任務最少執行一次,在數據量較少,依賴關係較爲簡單的低頻數據處理過程中,這種調度方式完全可以滿足需求。然而在企業級場景中,更多的是需要每天執行,如果任務數量較多,在任務啓動的時間計算上就將耗費大量時間,另外如果出現上游任務執行時長超出原定預計時間或者運行異常的問題,上述的處理方式將完全無法應對,也會對人力物力造成重複損耗,因此,對於企業數據開發過程來說,一個完整且高效的工作流調度系統將起到至關重要的作用。

調度工具對比

Oozie

Oozie:訓象人(調度mapreduce)。一個基於工作流引擎的開源框架,Oozie需要部署到java servlet中運行,主要用於定時調度,多任務之間按照執行的邏輯順序調度。

它有如下功能特點:

  • 統一調度hadoop系統常見的mr任務啓動,hdfs操作,shell調度,hive操作等;
  • 讓複雜的依賴關係,時間觸發,事件觸發使用xml語言進行表達,開發效率增高(這個不一定,個人很討厭xml,我覺得效率不高…);
  • 一組任務使用一個DAG表示,使用圖形表達,流程清晰;
  • 支持多種任務調度,能完成大部分的hadoop任務;
  • 程序定義支持EL常量和函數,表達豐富;
  • Oozie規定在完成工作後發送電子郵件通知;
  • Azkaban使用Web操作。Oozie支持Web,RestApi,Java API操作;

Azkaban

Azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流。

它有如下功能特點:

  • Web用戶界面
  • 方便上傳工作流
  • 方便設置任務之間的關係
  • 調度工作流
  • 認證/授權(權限的工作)
  • 能夠殺死並重新啓動工作流
  • 模塊化和可插拔的插件機制
  • 項目工作區
  • 工作流和任務的日誌記錄和審計

taskctl

是一款功能全面的作業自動化調度技術管理工具。通過TASKCTL,可以快速將這些作業組織起來,並進行有效的管理以及各種參數化運行控制。在業界,普遍將這種技術稱爲作業調度,其技術本質是作業運行管理的自動化控制。

基於成都塔斯克旗下產品taskctl部署面向於個人、企業主和獨立數據應用開發商提供的一個一站式大數據工具平臺和社區。基礎套餐永久免費!透過taskctl,個人和企業無需過多關注大數據底層存儲和計算引擎的複雜的安裝、繁瑣的配置和日常運維,即可將自有的多來源業務系統數據進行集成和開發,形成數據資產,並賦能於自有作業場景,在雲端輕鬆構建自有數據中臺。

taskctl調度功能如下:

  • 完成20多種數據源的適配調度:Mysql、Oracle、Hive、HBase、Redis、MongoDB、ODPS、Postgresql、ElasticSearch、WebService、GBase等;
  • 模塊化和可插拔的插件機制:屏蔽各種應用平臺技術差異,適配統一的執行、停止及狀態日誌查詢訪問接口
  • 支持可視化工作流配置:支持圖形拖拽、自動化最小交叉排版,清楚地展示了作業節點之間的串並關係;不同類型作業圖標自定義、正執行作業節點快速定位;
  • 支持任務告警:郵件,短信,微信,釘釘等多渠道訂閱,平臺消息,流程消息、作業消息多層次推送。
  • 人工干預多樣化:正常調度,自由調度,虛擬調度。強制中斷、強制通過、禁用通過、預設斷點、忽略條件等;
  • 支持作業優先級配置:平臺級、流程級和作業級並行控制、資源權重設置。動態設置作業優先級置頂等操作。
  • 支持工作流與工作流之間組裝:支持各種層級的調度元信息架構組織,如:工程à工作流(可嵌套)à模塊(可嵌套)à作業
  • 支持工作流測試運行:支持流程開發完整體系,如編碼à編譯à調試à 版本發佈à運行一整套完整的生命週期管理。
  • 出錯任務快速定位:提供了“正執行、異常”等狀態的作業節點自動跟蹤定位功能。

總結

Apache Oozie 是一個重量級的任務調度系統,功能全面,但是部署及配置會比較麻煩,從 crontab 到 Oozie 上手會有一定難度。Azkaban 是介於 oozie 和 Crontab 之間的工具,但是安全性上不如 Oozie,同時如果出現失敗情況,Azkaban會丟失所有的工作流,Oozie則可以繼續運行。taskctl相較於以上兩種工具而言,解決了配置及部署複雜的問題,易於擴展的同時,也在工作流中有了更多方便開發及運維的其他功能。

當然taskctl不僅僅是一個功能全面的工作流調度工具,作爲一個一站式大數據平臺,它同時涵蓋以下功能,無論是簡單的 ETL 工作,還是複雜的數據中臺構建工作,使用taskctl都可以完成。基礎版永久免費!無論遇到什麼問題都能找客服解決,比開源產品體驗好 100 倍的工具,確定不來試試看嘛?

>>瞭解更多,關注公衆號"taskctl" 或 添加技術諮詢微信 "Kitleer" 備註 "諮詢"<<

聲明:以上內容部分來自網絡

參考:灣區人工智能數瀾科技gyzhang_csdn科技D人生

整理:沐白

鏈接:https://blog.csdn.net/Dtwave_/article/details/103184116?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章