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

  汪洋,韓寧

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

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

  關鍵詞:ETL;Kettle;GoData;跨網段數據交換;自動觸發(fā)

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

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

0引言

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

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

  (1)數據源眾多

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

  (2)數據差異性大

  數據源眾多的前提下,企業(yè)沒有統一的數據標準造成業(yè)務數據差異性大,在擁有結構化數據的同時可能還存在大量半結構以及無結構數據。

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

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

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

1Kettle介紹

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

001.jpg

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

2GoData設計與實現

  2.1設計初衷

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

  2.2設計實現

002.jpg

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

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

003.jpg

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

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

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

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

  2.3技術特點

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

  (1)定制化調度機制

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

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

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

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

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

  (4)分布式架構

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

  (5)先進的容錯機制

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

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

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

3結論

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

參考文獻

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

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


此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: 黄网站在线播放视频免费观看 | 久久95 | 男女性刺激爽爽免费视频 | 性插插视频| 男人女人真曰批视频大全免费观看 | 男男羞羞视频网站免费 | 天天摸夜夜添夜夜添国产 | 性色在线观看 | 精品久久久久久中文字幕专区 | 国产日韩不卡免费精品视频 | 精品五夜婷香蕉国产线看观看 | 午夜剧场日韩 | 亚洲一区二区三 | 亚洲人影院 | 国产日韩欧美在线观看不卡 | 亚洲三级欧美 | 伊人网伊人| 关婷哪一级毛片高清免费看 | 亚洲第一网址 | 成年人视频在线播放 | 日日好吊妞 | 2019最新中文字幕 | 国产天天射 | 国产精品日韩 | 日本大黄网站 | 亚洲成人社 | 日韩成人影视 | 99视频在线精品 | 黄片毛片在线免费看 | 国产成人精品免费视频动漫 | 免费毛片网站在线观看 | 久久国产香蕉视频 | 中文字幕第98页小明免费 | 青娱乐伊人 | 中文字幕亚洲无线码在线一区 | 亚洲一欧洲中文字幕在线 | 夜夜橹| 欧美中文在线观看 | 免费黄色的视频 | 精品400部自拍视频在线播放 | 久久久久久久999精品视频 |