[轉]結合TASKCTL開源版,打造企業級ETL調度解決方案

寫在前面 java

前些日子,供職於移動的大學同窗一直在向我抱怨:他們項目組有個搞數據的小夥子離職了。如今整理項目整得焦頭爛額,特別是ETL調度這塊,須要調整部分規則...... 我記得曾經聽他說過,他們的項目用的是datastage,因爲有一部分調度功能用datastage沒法知足。因而他們就本身用java寫了個調度處理程序在跑etl任務。當時,他還在誇這個程序很NB滴:又是分佈式、又可能自定義規則,出了問題還能夠把異常錯誤信息發短信到手機上.......  結果如今人跑了,代碼實在難於維護.做爲哥們,當時只能安慰安慰了他:「實在不行就只好重寫一遍了,反正業務規則你還比較熟悉吧」...... linux

這段時間,網上出了一款ETL調度工具的開源代碼。第一時間down了下來,通過初步分析調度功能還比較完善:並行、條件分支、循環等等都有。文字很差表達,用表格: 數據庫

功能點 bash

Control-M 數據結構

TASKCTL 負載均衡

Datastage 分佈式

串行 工具

學習

spa

並行

互斥

--

--

定時調度

--

業務計劃調度

--

條件分支

--

循環

--

--

容錯處理

斷點續跑

--

遠程任務調度

--

負載均衡

--

自定義條件調度

--

(本表格數據由《中美ETL調度工具PK》和本身用過的datastage整理得出)

接着又看了看開源文檔,嗯...還不算太難懂。聯想到哥們的項目,這不正是他所須要的嗎!立刻給他打了電話,問他項目開始了沒有,獲得的答案是「年末了不敢亂動,尚未開始」。對這個TASKCTL,哥們也比較感興趣。這我就放心了,接下來開始進一步實施...... 好了,閒話很少說,直接介紹下怎麼利用TASKCTL開源代碼來打造免費的ETL調度解決方案吧。


具體步驟

1、思路及原理

不能否認,TASKCTL的亮點就是那個流程設計代碼模式以及強大的流程圖展現了,這也是它的賣點之一。惋惜的是,目前免費版的服務核心在JOB支持數上會有限制,不利於大中型項目的實施應用。而學習版雖然提供了完整的桌面體驗,卻沒法進行正式商用。重點來了!通過跟蹤發現,TASKCTL專業版是在其後臺服務核心組件上進行受權的來決定客戶端是學習版或者企業版的。客戶端(包含圖形客戶端)和開源版的服務核心組件並無作任何限制!而且都支持與專業版一樣的XML流程代碼數據結構。也就是說,對於流程文件採用的是同一的API接口。所以思路也就明朗了:利用學習版來設計流程而後部署到開源版上去運行調度流程!


2、獲取源碼

TASKCTL開源代碼是遵循LGPL開源協議發佈,能夠對源碼進行修改再從新分發及商用,只要記住修改的部分必須也要遵循LGPL協議就能夠了。你能夠到各個主流的開源社區或TASKCTL官網進行獲取:

官網地址:http://www.taskctl.com

開源中國:http://www.oschina.net/p/taskctl

SourceForge:http://sourceforge.net/projects/taskctl-source/?source=navbar


3、配置環境及編譯

TASKCTL開源版是基於UNIX核心編寫的C語言代碼。理論上,能夠在任意UNIX核心的操做系統上進行編譯。下面只舉例在linux RedHat環境下進行操做。

下面的內容摘取開源手冊裏面的信息:

環境搭建:

    TASKCTL 只支持linux/Aix等unix系列,且不依賴數據庫,代碼全由標準c語言編寫。

使

用前,咱們必須對相關用戶環境做以下設置:

 1. 環境變量設置

    編輯系統用戶環境.profile文件(或.bash_profile), 增長如下環境變量

    export TASKCTLDIR=[運行環境目錄] #如export TASKCTLDIR=$HOME/taskctlos1.0/cir

    export TASKSRCDIR=[源代碼目錄]   #如export TASKSRCDIR=$HOME/taskctlos1.0/src

    export PATH=$PATH:$TASKCTLDIR/bin:.

 2. 修改核心參數(AIX環境無需修改)

    進入超級用戶編輯, 並在超級用戶環境執行如下命令

    a. echo 153600 > /proc/sys/kernel/msgmnb

       說明: 該命令修改消息隊列最大值大小

    b. echo 128000000 > /proc/sys/kernel/shmmax

       說明: 該命令修改共享內存最大值大小    

編譯前說明:首先您的環境必須有開發環境,即需具備cc或gcc編譯器; 其次, 第二步環境搭建後,您必須從新登陸環境,以便使以前修改的環境變量信息與核心參數信息生效。

    具體編譯方法以下:

  1. 進入src目錄

  2. 執行命令: sh mkall [lix\aix]

     說明:       

       (1) 例: sh mkall lix  表示在linux環境編譯.   

       (2) 目前該包只支持32位redhat, aix環境使用。若是您須要用於其它環境,可能要對代碼或相關make文件進行微調。

  3.系統提示"編譯完成!"

   

4、開始體驗

場景一:你能夠利用學習版的脫機運行機制 anytime anywhere 編寫你的ETL流程代碼,而後發佈到開源版上去運行。

場景二:爲客戶演示項目流程圖,跟同事私下一塊兒學習流程,跟領導爭執流程需求,離職後悄悄把流程帶走.... :)

場景三:發佈設計好的ETL流程文件到論壇,讓安裝了桌面客戶端的熱心網友們都來欣賞你的傑做,讓高手來幫你參謀參謀。


5、二次開發

「TASKCTL開源版自己提供了較完整的ETL調度基礎功能,也提供相對簡明的API接口開發文檔以及源碼介紹文檔等。足以知足通常的ETL調度需求。你能夠根據本身項目的實際需求來增長或調整部分功能。」 具體源碼的二次開發不在本帖所想要表述的範圍以內,如有興趣請直接訪問官網。


最後 TASKCTL開源版是國內ETL工具軟件中爲數很少的開源項目,在ETL調度領域,目前它應該是惟一的。雖然咱們經過從新編譯開源核心,繞過了專業版的JOB支持數限制,結合學習版的桌面客戶端,從而得到了專業版的體驗。並且是徹底免費的方案,也無須擔憂法律風險。不過本人仍是但願你們可以支持國內的開源事業發展,支持www.taskctl.com。畢竟只有得到了共贏,才能持續給你們帶來好處和更佳的體驗,不是嗎?

相關文章
相關標籤/搜索