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