汪 洋,韓 寧
(中國軟件與技術服務股份有限公司,北京 100081)
基于開源代碼的ETL工具的實現
汪 洋,韓 寧
(中國軟件與技術服務股份有限公司,北京 100081)
在企業數據愈加龐大的今天,大批量數據交換也越加頻繁,ETL是數據處理的主要技術手段,但極少有ETL工具能夠兼顧自動調度及跨網段交換。在開源ETL工具Kettle的基礎上,設計實現能夠定制觸發規則、根據調度周期自主運行交換作業的數據交換工具GoData,該工具支持跨節點跨網段的數據交換作業,同時具有節點監控及錯誤作業預警和消息推送功能,支持集群和分布式部署。該工具極大地滿足了企業對數據交換業務的需求,在企業合理和充分利用現有數據資源方面發揮作用。
ETL;Kettle;GoData;跨網段數據交換;自動觸發
隨著互聯網技術的快速發展,企業內業務應用數量猛增,業務數據更是與日俱增,越來越多的企業在面對眾多業務系統產生的日益龐大的業務數據時,顯得束手無策,疲于應對。其原因大多在于企業內部信息化建設并沒有形成統一的標準,各廠商、各系統、各層級間數據形態各異,無法實現互聯互通數據共享,從而形成“信息孤島”。而信息是現代企業的重要資源,是企業科學管理、決策分析的基礎。因此,打破“信息孤島”,實現數據高效集成和共享是企業數字信息化建設的關鍵問題。企業需要通過各種技術手段,把數據轉換為信息、知識,最大程度地發揮數據的作用,而ETL便是主要的技術手段。
當前企業信息建設普遍存在以下問題:
(1)數據源眾多
企業內層級部門眾多,業務種類多樣,數據來源更為廣泛。
(2)數據差異性大
數據源眾多的前提下,企業沒有統一的數據標準造成業務數據差異性大,在擁有結構化數據的同時可能還存在大量半結構以及無結構數據。
(3)業務數據增長迅猛,數據利用率低下
據統計,大多數企業數據量每2~3年時間就會成倍增長,業務數據增長迅猛,而企業所關注的數據通常只占總數據量的2%~4%左右,并沒有充分利用已存在的數據資源。
因此,設計和實現一個穩定、高效、符合企業形態、可以靈活部署的ETL工具勢在必行。其在使企業實現信息和數據共享的同時,還能夠幫助企業最大化地利用已存在的數據資源,完善企業數字化、信息化建設。
ETL(Extraction, Tansformation, Loading)即是將數據從來源端經過抽取和轉換后加載到目的端的過程。在ETL過程中,數據抽取即是從數據源中抽取數據的過程,也可從多個數據源中進行數據抽取;數據轉換即是對抽取數據進行清洗,通過清洗策略和合并、轉換以及數學運算等操作,去除數據中存在的錯誤和冗余,也可根據要求變換數據格式,保證數據質量;數據裝載即是將轉換好的數據保存到數據庫或文件中。目前,越來越多的廠商致力于ETL工具的研發,而較常用的開源工具有Kettle、 Talend、 Octopus等,其中以開源Java工具Kettle應用最廣,表現最為突出。
Kettle是一款用Java編寫的開源ETL工具,其主要由轉換(Transformation)和作業(Job)兩部分組成。其中“轉換”是由一系列步驟組成的,每一個步驟表示對一個或多個數據流進行特定的轉換操作。而“作業”基于工作流模型,協調數據源、執行過程和相關依賴性的ETL活動,其將功能性和實體過程聚合起來,完成對整個工作流的控制。Kettle的概念模型如圖1所示[1]。

圖1 Kettle概念模型

圖2 GoData架構圖
Kettle優點很多:具有可視化的流程設計工具,具備眾多數據處理控件,擁有良好的插件擴展功能,支持集群操作等。可以說Kettle是當前ETL開源世界中功能最全面的一款工具[2]。但是每個產品都有其自身的局限性,Kettle也不能例外,比如缺少多頻度自動觸發調度機制,不能實現跨網段數據交換功能等。而這恰巧是多數企事業單位對數據交換業務的共性需求。
2.1 設計初衷
GoData的設計初衷即是打造一款符合大多數企事業單位數據交換需求的ETL工具,其在Kettle的基礎上,取長補短,調整作業運行機制,完善作業調度機制,加入作業觸發機制,并在保證數據正確安全的基礎上,實現跨網段的數據交換,加入作業監控,實現錯誤告警,整理日志記錄機制,完善作業調度及授權等功能。
2.2 設計實現
GoData產品架構圖如圖2所示,最底層為數據來源層,GoData可適配的數據來源眾多,包括結構化數據、半結構化數據以及非機構化數據;協議適配層是GoData的網絡適配協議,既包括RDBMS、HTTP等,也能對WebService、FTP等進行適配;功能組件層包含了管理組件、監控組件、安全組件、輔助組件以及核心組件;展示層則包含了產品對外的展示形式,包括圖形、文本和表格等。
圖3展示的是GoData的核心模塊,主要包含:作業設計器、作業調度器、作業監控器三個模塊。其中觸發機制在流程設計時進行定制,然后在作業運行態時由調度器根據該作業的觸發機制完成調度。各模塊之間通過共享數據庫進行通信。

圖3 GoData核心模塊展示圖
GoData作業編輯器可以配置觸發器的觸發規則、作業的處理流程、節點配置、路由配置和集群配置等,同時可以對配置完成的作業進行調試。控制臺執行器負責在后臺調度執行所有的作業,并且根據作業來配置調用節點、路由和集群功能。節點管理模塊負責配置管理多節點的數據信息。路由管理模塊負責配置管理多節點路由信息。集群調度器負責在集群間進行數據分發和同步。接收適配器和發送適配器負責在多節點之間接收和發送業務數據。
GoData在Kettle的基礎上加入了傳輸模塊,該模塊依托于作業編輯器對傳輸節點及路由的配置信息,將所交換數據正確安全地傳輸到目標節點。節點通信使用Netty作為底層支撐,使用“客戶端/服務器”模式進行節點之間通信。通信的每個數據包會根據節點路由表的配置選擇正確的鏈路,并且具有斷點續傳功能。發送數據的一方為數據源節點,接收數據的一方稱為目標節點,傳輸過程經過的節點為路由節點。三種節點的角色在傳輸過程中可能會互換(例如,當下一個路由節點為目標節點的時候,路由節點和目標節點是同等的)。當源節點是路由節點的時候源節點和路由節點是等同的。數據包從源節點出發,到達第一個路由節點后,此路由節點從配置中讀取它的下一個路由節點的配置信息,如果此節點就是目標節點,則不需要再傳遞數據包,如果還有下一個路由節點,那么使用客戶端服務器模式連接路由節點,然后將這次路由信息保存到數據包中,最后發送數據包到下一個路由節點。這樣重復以上所述步驟,最終到達目標節點。在傳輸過程中用戶可以選擇是否對傳輸信息進行二次加密,GoData在Kettle加密的基礎上,使用DES加密協議,對每個數據包的數據區又進行二次加密,為了保證傳輸的數據量不變和傳輸過程中數據包協議的合理性,加密后數據包的大小保持不變。為了安全性的考慮,密鑰不會包含在數據包中,而是使用雙方協商的加密方式,在部署配置的時候設定密碼。
此外,GoData具有Web監控及管理功能,業務人員能夠遠程對數據交換的各節點狀態進行監控并對節點上運行的交換作業進行管理。因此,GoData系統分成兩種主要節點,業務數據交換節點和Web監控管理節點。業務數據交換節點主要負責業務數據的讀取、傳輸、轉換和裝載。系統的Web監控管理節點則負責監控所有交換節點的運行情況和遠程控制交換作業的啟停,并能在發生異常時進行告警消息推送。
在企業中,可以根據企業網絡形態及具體業務需求部署多個GoData來完成數據交換任務,每一個GoData被認為是一個節點,在企業內網中,GoData根據配置的交換作業自主運行,并把日志信息同步到Web監控節點,相關人員可以登錄Web監控節點對各節點運行情況進行監控。
2.3 技術特點
GoData在保留Kettle原有優點的基礎上,通過變更調度機制,加入觸發、監控等機制后,具有了更多的優勢。
(1)定制化調度機制
企業可以根據自身數據交換業務的需求,定制數據交換作業觸發機制,支持單次運行和多次重復運行兩種調度
機制,設置完成后,由GoData根據觸發規則自主調度作業運行,收集作業日志信息,提交作業運行數據。
(2)安全高效的傳輸機制
在文件傳輸時,將文件劃分為多個數據包,支持傳輸加密和斷點續傳。不但實現了跨網段的數據交換作業,而且能有效節省傳輸時間,保證數據安全。解決了實際業務中數據跨層級交換的難題,簡化數據交換流程和步驟,提高了數據交換效率,保證了交換數據的質量。
(3)運行監控
加入了監控組件,可以對各數據交換節點進行遠程監控,啟停數據交換作業,并在作業異常時發出錯誤預警,推送預警信息到微信端,增強數據交換響應機制。
(4)分布式架構
GoData支持分布式部署,多個GoData之間可以相互通信,同時GoData支持集群,一個作業可以使用集群方式來執行和運算。因此企業可以根據具體數據業務調配GoData的使用,并且根據數據量來選擇是否使用集群。這種可伸縮的分布式架構可實現批量作業在多臺機器、多個節點上同時進行,能夠極大地提升數據交換作業的處理效率。
(5)先進的容錯機制
經過多番測試及完善,在意外斷網或斷電情況發生時,GoData能夠在異常發生后快速恢復作業,提高了數據交換的健壯性。
(6)大吞吐量,運行穩定
目前,GoData已經在多個項目中得到運用,每小時吞吐量超過1 000萬條數據,運行穩定。
GoData在開源軟件Kettle的基礎上加入了觸發機制,完善調度機制,增加了跨網交換傳輸、遠程監控管理以及容錯機制等,能夠很好地為企業數據信息建設服務,滿足企業進行大批量高頻次數據交換的需求,使企業能夠更深入地利用數據資源,實現數據的價值最大化,幫助企業制訂計劃,運營決策。
[1] 劉充.基于KETTLE的高校多源異構數據集成研究及實踐[J].電子設計工程,2015,23(10):24-26.
[2] 閆小爽,李忠華,李璐,等.開源ETL軟件在智能化集成系統中的應用[J].工程應用,2009(4):46-48.
The realization of ETL tool based on open-source
Wang Yang,Han Ning
(China National Software & Service Co.,Ltd., Beijing 100081, China)
Today, the enterprise data increases rapidly, and large quantities of data exchange also becomes frequent. The ETL is the main technical means in this area, but very few of the them can both automaticly schedule and exchange across inter network. Based on an open-source ETL tool named Kettle, we design the data exdange tool called GoData, which can set the trigger rules, and can run the ETL jobs on time all by itself according to the quartz period the tool. This tool can also support the inter network data exchange. At the same time, the tool has the functions of node monitoring and operation warning. It also can push the error message to client. This tool can support cluster and distributed deployment. It greatly satisfy the demand for data exchange business, and plays a role in making full use of the existing data resources.
ETL; Kettle; GoData; inter network data exchange; automatic trigger
TN919
A
10.19358/j.issn.1674- 7720.2016.24.006
汪洋,韓寧. 基于開源代碼的ETL工具的實現[J].微型機與應用,2016,35(24):19-21.
2016-08-29)
汪洋(1981-),男,碩士,軟件工程師,主要研究方向:政府、企業信息化管理。
韓寧(1984-),女,本科,軟件工程師,主要研究方向:數據交換、數據治理。