您好,登錄后才能下訂單哦!
最近遇到了很多正在研究ETL及其工具的同學向我們抱怨:同樣都在用 Kettle ,起點明明沒差異,但為什么別人ETL做的那么快那么好,自己卻不斷掉坑?
其實,類似于像 Kettle 這樣開源的工具,已經覆蓋了大部分日常工作所需的功能了,直接部署一套就能夠解決企業(yè)基本的需求。但在實際使用的過程中我們也會發(fā)現,kettle 如同是一個出場自帶電話短信功能的智能手機,少了功能各異的智能 App 的配合,和只能接打電話的老年機也沒什么不同。
今天我們就先對其中一個比較火熱的“App”——調度工具,做一個簡單的評測對比,幫助大家快速解鎖用開源工具做 ETL 的新姿勢。
一、為什么需要調度系統(tǒng)?
開局我們先掃盲。
我們都知道大數據的計算、分析和處理,一般由多個任務單元組成(Hive、Sparksql、Spark、Shell等),每個任務單元完成特定的數據處理邏輯。
多個任務單元之間往往有著強依賴關系,上游任務執(zhí)行并成功,下游任務才可以執(zhí)行。比如上游任務結束后拿到 A 結果,下游任務需結合 A 結果才能產出 B 結果,因此下游任務的開始一定是在上游任務成功運行拿到結果之后才可以開始。
而為了保證數據處理結果的準確性,就必須要求這些任務按照上下游依賴關系有序、高效的執(zhí)行。一個較為基礎的處理方式是,預估出每個任務處理所需時間,根據先后順序,計算出每個任務的執(zhí)行的起止時間,通過定時跑任務的方式,讓整個系統(tǒng)保持穩(wěn)定的運行。
一個完整的數據分析任務最少執(zhí)行一次,在數據量較少,依賴關系較為簡單的低頻數據處理過程中,這種調度方式完全可以滿足需求。然而在企業(yè)級場景中,更多的是需要每天執(zhí)行,如果任務數量較多,在任務啟動的時間計算上就將耗費大量時間,另外如果出現上游任務執(zhí)行時長超出原定預計時間或者運行異常的問題,上述的處理方式將完全無法應對,也會對人力物力造成重復損耗,因此,對于企業(yè)數據開發(fā)過程來說,一個完整且高效的工作流調度系統(tǒng)將起到至關重要的作用。
二、調度系統(tǒng)工具對比
很多同學上手 ETL 工作之后,最先接觸到的應該是 linux 自帶的定期執(zhí)行程序的命令 Crontab,使用簡單,運行穩(wěn)定,當安裝完成操作系統(tǒng)之后,默認便會啟動此命令。上手容易但是也有自己的缺點,比如當任務變多之后無法管理、crontab 在機器上,無法備份,掛機就沒。因此我們在這里對 crontab不做過多介紹,主要針對較為成熟的工作流調度工具:Apache Oozie、Azkaban、數棲云進行橫評。
1、Oozie
Oozie:訓象人(調度mapreduce)。一個基于工作流引擎的開源框架,Oozie需要部署到java servlet中運行,主要用于定時調度,多任務之間按照執(zhí)行的邏輯順序調度。
Oozie 下載地址: https://oozie.apache.org
它有如下功能特點:
統(tǒng)一調度hadoop系統(tǒng)常見的mr任務啟動,hdfs操作,shell調度,hive操作等;
讓復雜的依賴關系,時間觸發(fā),事件觸發(fā)使用xml語言進行表達,開發(fā)效率增高(這個不一定,個人很討厭xml,我覺得效率不高...);
一組任務使用一個DAG表示,使用圖形表達,流程清晰;
支持多種任務調度,能完成大部分的hadoop任務;
程序定義支持EL常量和函數,表達豐富;
Oozie規(guī)定在完成工作后發(fā)送電子郵件通知;
Azkaban使用Web操作。Oozie支持Web,RestApi,Java API操作;
2、Azkaban
Azkaban是由Linkedin開源的一個批量工作流任務調度器。用于在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關系,并提供一個易于使用的web用戶界面維護和跟蹤你的工作流。
Azkaban 下載地址: https://azkaban.github.io/downloads.html
它有如下功能特點:
兼容任何版本的hadoop;
易于使用的web界面;
簡單工作流的上傳;
方便配置任務之間的依賴關系;
調度工作流;
模塊化和可插拔的插件機制;
認證/授權;
能夠殺死并重新啟動工作流;
失敗和成功的電子郵件提醒;
3、數棲云
基于數瀾科技旗下產品數棲4.0部署于云端,面向于個人、企業(yè)主和獨立數據應用開發(fā)商提供的一個一站式大數據工具平臺和社區(qū)。基礎套餐永久免費!透過數棲平臺,個人和企業(yè)無需過多關注大數據底層存儲和計算引擎的復雜的安裝、繁瑣的配置和日常運維,即可將自有的多來源業(yè)務系統(tǒng)數據進行集成和開發(fā),形成數據資產,并賦能于自有業(yè)務場景,在云端輕松構建自有數據中臺。
數棲云產品介紹頁面: dtcloud.dtwave.com
數棲云在線注冊使用地址: shuqi.dtwave.com
數棲云調度功能如下:
完成20多種數據源的適配調度:Mysql、Oracle、Hive、HBase、Redis、MongoDB、ODPS、Postgresql、ElasticSearch、API等;
模塊化和可插拔的插件機制;
支持可視化工作流配置;
支持任務告警:郵件,電話,短信;
調度類型多樣化:正常調度,空跑,暫停調度;
支持任務優(yōu)先級配置;
調度周期配置簡單:進行鼠標點擊即可;
支持工作流與工作流之間組裝;
支持工作流測試運行;
在工作流查看界面中就可以完成:查看代碼,運行日志,重跑,置成功并重跑下游,重跑下游等操作;
出錯任務快速定位;
(Oozie、Azkaban、數棲云功能對比)
三、一波總結
Apache Oozie 是一個重量級的任務調度系統(tǒng),功能全面,但是部署及配置會比較麻煩,從 crontab 到 Oozie 上手會有一定難度。Azkaban 是介于 oozie 和 Crontab 之間的工具,但是安全性上不如 Oozie,同時如果出現失敗情況,Azkaban會丟失所有的工作流,Oozie則可以繼續(xù)運行。數棲云相較于以上兩種工具而言,解決了配置及部署復雜的問題,易于擴展的同時,也在工作流中有了更多方便開發(fā)及運維的其他功能。
(數棲云產品優(yōu)勢)
當然數棲云不僅僅是一個功能全面的工作流調度工具,作為一個一站式大數據平臺,它同時涵蓋以下功能,無論是簡單的 ETL 工作,還是復雜的數據中臺構建工作,使用數棲云都可以完成。基礎版永久免費!無論遇到什么問題都能找客服解決,比開源產品體驗好 100 倍的工具,確定不來試試看嘛?
更多詳情請點擊鏈接了解: dtcloud.dtwave.com
點 擊 此 處 ↓ 立 即 進 入 數 棲 云 ~
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。