《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于開源代碼的ETL工具的實現(xiàn)
基于開源代碼的ETL工具的實現(xiàn)
2016年微型機與應(yīng)用第24期
汪洋,韓寧
中國軟件與技術(shù)服務(wù)股份有限公司,,北京 100081
摘要: 在企業(yè)數(shù)據(jù)愈加龐大的今天,,大批量數(shù)據(jù)交換也越加頻繁,ETL是數(shù)據(jù)處理的主要技術(shù)手段,但極少有ETL工具能夠兼顧自動調(diào)度及跨網(wǎng)段交換。在開源ETL工具Kettle的基礎(chǔ)上,設(shè)計實現(xiàn)能夠定制觸發(fā)規(guī)則,、根據(jù)調(diào)度周期自主運行交換作業(yè)的數(shù)據(jù)交換工具GoData,該工具支持跨節(jié)點跨網(wǎng)段的數(shù)據(jù)交換作業(yè),,同時具有節(jié)點監(jiān)控及錯誤作業(yè)預(yù)警和消息推送功能,,支持集群和分布式部署。該工具極大地滿足了企業(yè)對數(shù)據(jù)交換業(yè)務(wù)的需求,,在企業(yè)合理和充分利用現(xiàn)有數(shù)據(jù)資源方面發(fā)揮作用,。
Abstract:
Key words :

  汪洋,,韓寧

  (中國軟件與技術(shù)服務(wù)股份有限公司,,北京 100081)

       摘要:在企業(yè)數(shù)據(jù)愈加龐大的今天,,大批量數(shù)據(jù)交換也越加頻繁,ETL是數(shù)據(jù)處理的主要技術(shù)手段,,但極少有ETL工具能夠兼顧自動調(diào)度及跨網(wǎng)段交換,。在開源ETL工具Kettle的基礎(chǔ)上,設(shè)計實現(xiàn)能夠定制觸發(fā)規(guī)則,、根據(jù)調(diào)度周期自主運行交換作業(yè)的數(shù)據(jù)交換工具GoData,,該工具支持跨節(jié)點跨網(wǎng)段的數(shù)據(jù)交換作業(yè),同時具有節(jié)點監(jiān)控及錯誤作業(yè)預(yù)警和消息推送功能,,支持集群和分布式部署,。該工具極大地滿足了企業(yè)對數(shù)據(jù)交換業(yè)務(wù)的需求,在企業(yè)合理和充分利用現(xiàn)有數(shù)據(jù)資源方面發(fā)揮作用,。

  關(guān)鍵詞:ETL,;Kettle;GoData,;跨網(wǎng)段數(shù)據(jù)交換,;自動觸發(fā)

  中圖分類號:TN919文獻標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.006

  引用格式:汪洋,,韓寧. 基于開源代碼的ETL工具的實現(xiàn)[J].微型機與應(yīng)用,,2016,35(24):19-21.

0引言

  隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,企業(yè)內(nèi)業(yè)務(wù)應(yīng)用數(shù)量猛增,,業(yè)務(wù)數(shù)據(jù)更是與日俱增,,越來越多的企業(yè)在面對眾多業(yè)務(wù)系統(tǒng)產(chǎn)生的日益龐大的業(yè)務(wù)數(shù)據(jù)時,顯得束手無策,,疲于應(yīng)對,。其原因大多在于企業(yè)內(nèi)部信息化建設(shè)并沒有形成統(tǒng)一的標(biāo)準(zhǔn),各廠商,、各系統(tǒng),、各層級間數(shù)據(jù)形態(tài)各異,無法實現(xiàn)互聯(lián)互通數(shù)據(jù)共享,,從而形成“信息孤島”,。而信息是現(xiàn)代企業(yè)的重要資源,是企業(yè)科學(xué)管理,、決策分析的基礎(chǔ),。因此,打破“信息孤島”,,實現(xiàn)數(shù)據(jù)高效集成和共享是企業(yè)數(shù)字信息化建設(shè)的關(guān)鍵問題,。企業(yè)需要通過各種技術(shù)手段,,把數(shù)據(jù)轉(zhuǎn)換為信息、知識,,最大程度地發(fā)揮數(shù)據(jù)的作用,,而ETL便是主要的技術(shù)手段。

  當(dāng)前企業(yè)信息建設(shè)普遍存在以下問題:

 ?。?)數(shù)據(jù)源眾多

  企業(yè)內(nèi)層級部門眾多,,業(yè)務(wù)種類多樣,數(shù)據(jù)來源更為廣泛,。

 ?。?)數(shù)據(jù)差異性大

  數(shù)據(jù)源眾多的前提下,企業(yè)沒有統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn)造成業(yè)務(wù)數(shù)據(jù)差異性大,,在擁有結(jié)構(gòu)化數(shù)據(jù)的同時可能還存在大量半結(jié)構(gòu)以及無結(jié)構(gòu)數(shù)據(jù),。

  (3)業(yè)務(wù)數(shù)據(jù)增長迅猛,,數(shù)據(jù)利用率低下

  據(jù)統(tǒng)計,,大多數(shù)企業(yè)數(shù)據(jù)量每2~3年時間就會成倍增長,業(yè)務(wù)數(shù)據(jù)增長迅猛,,而企業(yè)所關(guān)注的數(shù)據(jù)通常只占總數(shù)據(jù)量的2%~4%左右,,并沒有充分利用已存在的數(shù)據(jù)資源。

  因此,,設(shè)計和實現(xiàn)一個穩(wěn)定,、高效、符合企業(yè)形態(tài),、可以靈活部署的ETL工具勢在必行,。其在使企業(yè)實現(xiàn)信息和數(shù)據(jù)共享的同時,還能夠幫助企業(yè)最大化地利用已存在的數(shù)據(jù)資源,,完善企業(yè)數(shù)字化,、信息化建設(shè)。

1Kettle介紹

  ETL(Extraction, Tansformation, Loading)即是將數(shù)據(jù)從來源端經(jīng)過抽取和轉(zhuǎn)換后加載到目的端的過程,。在ETL過程中,,數(shù)據(jù)抽取即是從數(shù)據(jù)源中抽取數(shù)據(jù)的過程,也可從多個數(shù)據(jù)源中進行數(shù)據(jù)抽??;數(shù)據(jù)轉(zhuǎn)換即是對抽取數(shù)據(jù)進行清洗,通過清洗策略和合并,、轉(zhuǎn)換以及數(shù)學(xué)運算等操作,,去除數(shù)據(jù)中存在的錯誤和冗余,也可根據(jù)要求變換數(shù)據(jù)格式,保證數(shù)據(jù)質(zhì)量,;數(shù)據(jù)裝載即是將轉(zhuǎn)換好的數(shù)據(jù)保存到數(shù)據(jù)庫或文件中,。目前,越來越多的廠商致力于ETL工具的研發(fā),,而較常用的開源工具有Kettle,、 Talend、 Octopus等,,其中以開源Java工具Kettle應(yīng)用最廣,,表現(xiàn)最為突出。

001.jpg

  Kettle是一款用Java編寫的開源ETL工具,,其主要由轉(zhuǎn)換(Transformation)和作業(yè)(Job)兩部分組成,。其中“轉(zhuǎn)換”是由一系列步驟組成的,每一個步驟表示對一個或多個數(shù)據(jù)流進行特定的轉(zhuǎn)換操作,。而“作業(yè)”基于工作流模型,,協(xié)調(diào)數(shù)據(jù)源、執(zhí)行過程和相關(guān)依賴性的ETL活動,,其將功能性和實體過程聚合起來,,完成對整個工作流的控制。Kettle的概念模型如圖1所示[1],。圖1Kettle概念模型圖2GoData架構(gòu)圖Kettle優(yōu)點很多:具有可視化的流程設(shè)計工具,,具備眾多數(shù)據(jù)處理控件,擁有良好的插件擴展功能,,支持集群操作等,。可以說Kettle是當(dāng)前ETL開源世界中功能最全面的一款工具[2],。但是每個產(chǎn)品都有其自身的局限性,,Kettle也不能例外,比如缺少多頻度自動觸發(fā)調(diào)度機制,,不能實現(xiàn)跨網(wǎng)段數(shù)據(jù)交換功能等。而這恰巧是多數(shù)企事業(yè)單位對數(shù)據(jù)交換業(yè)務(wù)的共性需求,。

2GoData設(shè)計與實現(xiàn)

  2.1設(shè)計初衷

  GoData的設(shè)計初衷即是打造一款符合大多數(shù)企事業(yè)單位數(shù)據(jù)交換需求的ETL工具,,其在Kettle的基礎(chǔ)上,取長補短,,調(diào)整作業(yè)運行機制,,完善作業(yè)調(diào)度機制,加入作業(yè)觸發(fā)機制,,并在保證數(shù)據(jù)正確安全的基礎(chǔ)上,,實現(xiàn)跨網(wǎng)段的數(shù)據(jù)交換,加入作業(yè)監(jiān)控,,實現(xiàn)錯誤告警,,整理日志記錄機制,,完善作業(yè)調(diào)度及授權(quán)等功能。

  2.2設(shè)計實現(xiàn)

002.jpg

  GoData產(chǎn)品架構(gòu)圖如圖2所示,,最底層為數(shù)據(jù)來源層,,GoData可適配的數(shù)據(jù)來源眾多,包括結(jié)構(gòu)化數(shù)據(jù),、半結(jié)構(gòu)化數(shù)據(jù)以及非機構(gòu)化數(shù)據(jù),;協(xié)議適配層是GoData的網(wǎng)絡(luò)適配協(xié)議,既包括RDBMS,、HTTP等,,也能對WebService、FTP等進行適配,;功能組件層包含了管理組件,、監(jiān)控組件、安全組件,、輔助組件以及核心組件,;展示層則包含了產(chǎn)品對外的展示形式,包括圖形,、文本和表格等,。

  圖3展示的是GoData的核心模塊,主要包含:作業(yè)設(shè)計器,、作業(yè)調(diào)度器,、作業(yè)監(jiān)控器三個模塊。其中觸發(fā)機制在流程設(shè)計時進行定制,,然后在作業(yè)運行態(tài)時由調(diào)度器根據(jù)該作業(yè)的觸發(fā)機制完成調(diào)度,。各模塊之間通過共享數(shù)據(jù)庫進行通信。

003.jpg

  GoData作業(yè)編輯器可以配置觸發(fā)器的觸發(fā)規(guī)則,、作業(yè)的處理流程,、節(jié)點配置、路由配置和集群配置等,,同時可以對配置完成的作業(yè)進行調(diào)試,。控制臺執(zhí)行器負(fù)責(zé)在后臺調(diào)度執(zhí)行所有的作業(yè),,并且根據(jù)作業(yè)來配置調(diào)用節(jié)點,、路由和集群功能。節(jié)點管理模塊負(fù)責(zé)配置管理多節(jié)點的數(shù)據(jù)信息,。路由管理模塊負(fù)責(zé)配置管理多節(jié)點路由信息,。集群調(diào)度器負(fù)責(zé)在集群間進行數(shù)據(jù)分發(fā)和同步。接收適配器和發(fā)送適配器負(fù)責(zé)在多節(jié)點之間接收和發(fā)送業(yè)務(wù)數(shù)據(jù)。

  GoData在Kettle的基礎(chǔ)上加入了傳輸模塊,,該模塊依托于作業(yè)編輯器對傳輸節(jié)點及路由的配置信息,,將所交換數(shù)據(jù)正確安全地傳輸?shù)侥繕?biāo)節(jié)點。節(jié)點通信使用Netty作為底層支撐,,使用“客戶端/服務(wù)器”模式進行節(jié)點之間通信,。通信的每個數(shù)據(jù)包會根據(jù)節(jié)點路由表的配置選擇正確的鏈路,并且具有斷點續(xù)傳功能,。發(fā)送數(shù)據(jù)的一方為數(shù)據(jù)源節(jié)點,,接收數(shù)據(jù)的一方稱為目標(biāo)節(jié)點,傳輸過程經(jīng)過的節(jié)點為路由節(jié)點,。三種節(jié)點的角色在傳輸過程中可能會互換(例如,,當(dāng)下一個路由節(jié)點為目標(biāo)節(jié)點的時候,路由節(jié)點和目標(biāo)節(jié)點是同等的),。當(dāng)源節(jié)點是路由節(jié)點的時候源節(jié)點和路由節(jié)點是等同的,。數(shù)據(jù)包從源節(jié)點出發(fā),到達第一個路由節(jié)點后,,此路由節(jié)點從配置中讀取它的下一個路由節(jié)點的配置信息,,如果此節(jié)點就是目標(biāo)節(jié)點,則不需要再傳遞數(shù)據(jù)包,,如果還有下一個路由節(jié)點,,那么使用客戶端服務(wù)器模式連接路由節(jié)點,然后將這次路由信息保存到數(shù)據(jù)包中,,最后發(fā)送數(shù)據(jù)包到下一個路由節(jié)點,。這樣重復(fù)以上所述步驟,最終到達目標(biāo)節(jié)點,。在傳輸過程中用戶可以選擇是否對傳輸信息進行二次加密,,GoData在Kettle加密的基礎(chǔ)上,使用DES加密協(xié)議,,對每個數(shù)據(jù)包的數(shù)據(jù)區(qū)又進行二次加密,,為了保證傳輸?shù)臄?shù)據(jù)量不變和傳輸過程中數(shù)據(jù)包協(xié)議的合理性,加密后數(shù)據(jù)包的大小保持不變,。為了安全性的考慮,,密鑰不會包含在數(shù)據(jù)包中,而是使用雙方協(xié)商的加密方式,,在部署配置的時候設(shè)定密碼。

  此外,,GoData具有Web監(jiān)控及管理功能,,業(yè)務(wù)人員能夠遠(yuǎn)程對數(shù)據(jù)交換的各節(jié)點狀態(tài)進行監(jiān)控并對節(jié)點上運行的交換作業(yè)進行管理。因此,GoData系統(tǒng)分成兩種主要節(jié)點,,業(yè)務(wù)數(shù)據(jù)交換節(jié)點和Web監(jiān)控管理節(jié)點,。業(yè)務(wù)數(shù)據(jù)交換節(jié)點主要負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)的讀取、傳輸,、轉(zhuǎn)換和裝載,。系統(tǒng)的Web監(jiān)控管理節(jié)點則負(fù)責(zé)監(jiān)控所有交換節(jié)點的運行情況和遠(yuǎn)程控制交換作業(yè)的啟停,并能在發(fā)生異常時進行告警消息推送,。

  在企業(yè)中,,可以根據(jù)企業(yè)網(wǎng)絡(luò)形態(tài)及具體業(yè)務(wù)需求部署多個GoData來完成數(shù)據(jù)交換任務(wù),每一個GoData被認(rèn)為是一個節(jié)點,,在企業(yè)內(nèi)網(wǎng)中,,GoData根據(jù)配置的交換作業(yè)自主運行,并把日志信息同步到Web監(jiān)控節(jié)點,,相關(guān)人員可以登錄Web監(jiān)控節(jié)點對各節(jié)點運行情況進行監(jiān)控,。

  2.3技術(shù)特點

  GoData在保留Kettle原有優(yōu)點的基礎(chǔ)上,通過變更調(diào)度機制,,加入觸發(fā),、監(jiān)控等機制后,具有了更多的優(yōu)勢,。

  (1)定制化調(diào)度機制

  企業(yè)可以根據(jù)自身數(shù)據(jù)交換業(yè)務(wù)的需求,,定制數(shù)據(jù)交換作業(yè)觸發(fā)機制,支持單次運行和多次重復(fù)運行兩種調(diào)度機制,,設(shè)置完成后,,由GoData根據(jù)觸發(fā)規(guī)則自主調(diào)度作業(yè)運行,收集作業(yè)日志信息,,提交作業(yè)運行數(shù)據(jù),。

  (2)安全高效的傳輸機制

  在文件傳輸時,將文件劃分為多個數(shù)據(jù)包,,支持傳輸加密和斷點續(xù)傳,。不但實現(xiàn)了跨網(wǎng)段的數(shù)據(jù)交換作業(yè),而且能有效節(jié)省傳輸時間,,保證數(shù)據(jù)安全,。解決了實際業(yè)務(wù)中數(shù)據(jù)跨層級交換的難題,簡化數(shù)據(jù)交換流程和步驟,,提高了數(shù)據(jù)交換效率,,保證了交換數(shù)據(jù)的質(zhì)量。

  (3)運行監(jiān)控

  加入了監(jiān)控組件,,可以對各數(shù)據(jù)交換節(jié)點進行遠(yuǎn)程監(jiān)控,,啟停數(shù)據(jù)交換作業(yè),,并在作業(yè)異常時發(fā)出錯誤預(yù)警,推送預(yù)警信息到微信端,,增強數(shù)據(jù)交換響應(yīng)機制,。

  (4)分布式架構(gòu)

  GoData支持分布式部署,多個GoData之間可以相互通信,,同時GoData支持集群,,一個作業(yè)可以使用集群方式來執(zhí)行和運算。因此企業(yè)可以根據(jù)具體數(shù)據(jù)業(yè)務(wù)調(diào)配GoData的使用,,并且根據(jù)數(shù)據(jù)量來選擇是否使用集群,。這種可伸縮的分布式架構(gòu)可實現(xiàn)批量作業(yè)在多臺機器、多個節(jié)點上同時進行,,能夠極大地提升數(shù)據(jù)交換作業(yè)的處理效率,。

  (5)先進的容錯機制

  經(jīng)過多番測試及完善,在意外斷網(wǎng)或斷電情況發(fā)生時,,GoData能夠在異常發(fā)生后快速恢復(fù)作業(yè),,提高了數(shù)據(jù)交換的健壯性。

  (6)大吞吐量,,運行穩(wěn)定

  目前,,GoData已經(jīng)在多個項目中得到運用,每小時吞吐量超過1 000萬條數(shù)據(jù),,運行穩(wěn)定,。

3結(jié)論

  GoData在開源軟件Kettle的基礎(chǔ)上加入了觸發(fā)機制,完善調(diào)度機制,,增加了跨網(wǎng)交換傳輸,、遠(yuǎn)程監(jiān)控管理以及容錯機制等,能夠很好地為企業(yè)數(shù)據(jù)信息建設(shè)服務(wù),,滿足企業(yè)進行大批量高頻次數(shù)據(jù)交換的需求,,使企業(yè)能夠更深入地利用數(shù)據(jù)資源,實現(xiàn)數(shù)據(jù)的價值最大化,,幫助企業(yè)制訂計劃,,運營決策。

參考文獻

 ?。?] 劉充.基于KETTLE的高校多源異構(gòu)數(shù)據(jù)集成研究及實踐[J].電子設(shè)計工程,2015,23(10):24 26.

 ?。?] 閆小爽,李忠華,李璐,等.開源ETL軟件在智能化集成系統(tǒng)中的應(yīng)用[J].工程應(yīng)用,2009(4):46 48.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。