翁業林 周泓 侯兵
摘 要:隨著信息技術的不斷發展與成熟,數據中心建設是值得我們探討的課題。本文從大數據時代ETL所面臨的挑戰進行分析,提出解決問題的思路和措施,研究和設計了企業級數據中心的分布式ETL方案,并就ETL關鍵技術、Data Vault混合數據建模、異常處理及保障進行了探討。
關鍵詞:信息技術;大數據;ETL;Data Vault
中圖分類號:TP311.1 文獻標識碼:A
Abstract:With the continuous development and maturity of information technology,data center construction is one of the topics worth discussing.This paper analyses the challenges faced by ETL in the era of big data,puts forward the ideas and measures to solve these problems,studies and designs the distributed ETL scheme of enterprise data center,and discusses the key technologies of ETL,data Vault mixed data modeling,exception handling and guarantees.
Keywords:information technology;big data;ETL;Data Vault
1 引言(Introduction)
企業在信息化的過程中積累了大量的數據[1],這些數據已成為了企業的財富,也是企業的一種重要戰略資源。隨著企業對數據的價值越來越敏感和重視,“洞察”數據,分析數據背后的“內涵”將有效地幫助企業在激烈的市場競爭環境中占據優勢。然而由于歷史、現實等種種原因,企業的數據通常是分布在若干個獨立的信息系統中,數據的類型繁多,且缺少統一的接口,數據結構存在巨大差異。合理地集成這些相互關聯的分布式異構數據源,無視不同管理系統中的數據差異,以透明的方式訪問這些數據,從而充分挖掘大數據價值,是各個企業急需解決的問題。為此人們提出了ETL的概念。ETL是數據抽取、轉換和裝載(Extract、Transformation、Loading)的英文簡稱,是數據倉庫獲取高質量數據的關鍵環節。通過ETL技術實現對分布在各業務系統的不同種類和形式數據進行抽取、轉換、清洗和加載[2],以供后續的分析處理環節使用。企業級數據中心每天創建的數據量呈現爆炸性的增長,如此龐大數據量的采集、存儲、管理、數據分析與挖掘是面臨的非常嚴峻的問題[3]。數據中心管理人員為實現數據中心高效性一直在探索提高資源的利用率的方法;硬件的更新速度是大數據發展的基石,但效果往往不甚理想;傳統ETL面臨復雜數據、海量數據、實時性、混搭架構等方面的挑戰[4]。本文基于大規模并行處理(Massively Parallel Processing,簡稱MPP)、分布式系統基礎架構HADOOP,提出了面向企業級數據中心的分布式ETL的設計,從而滿足企業級數據中心數據處理實時性要求,建立統一、可視化管控的數據處理平臺;搭建數據處理與交換、實時性的服務環境;實現了統一任務調度機制,加強海量數據處理及交換能力。
2 分布式ETL技術分析(Analysis of distributed
ETL technology)
面向企業級數據中心的分布式ETL的設計主要基于MPP、HADOOP等。
2.1 MPP與Hadoop
大規模并行處理(Massively Parallel Processing,簡稱MPP) 適合替代現有關系數據機構下的大數據處理,具有較高的效率;在非共享數據庫集群系統中,集群中的各個節點分別具有相互獨立的內存系統和外存儲系統,根據數據庫模型和應用特點將業務數據劃分到不同的節點上,數據節點間通過商業通用網絡或專用網絡互相連接,彼此協同計算,形成一個整體為用戶提供數據庫服務。非共享數據庫集群系統具有完備的可伸縮性、高可用、高性能、性價比高、資源共享等優勢[5]。MPP是將任務分散到多個服務器和節點上并行執行,集群中各個節點在計算完成后,主節點將各節點負責部分的結果匯總形成最終的結果。MPP還適合多維度數據自助分析、數據集市等。
Apache基金會所開發的分布式系統基礎架構Hadoop最核心的設計是分布式文件系統(Hadoop Distributed File System,簡稱HDFS)和編程模型MapReduce;其中HDFS為存儲PB級以上的數據提供了基礎,MapReduce為大數據的處理提供了方法。在處理非結構化和半結構化數據上Hadoop具備獨特的優勢,尤其適合PB級以上數據的批處理等,如大數據的存儲查詢、批量數據ETL、日志、文本等非機構化的數據分析等。
本文的研究使用MPPDB+Hadoop,滿足結構化、半結構化和非結構化數據的高效處理需求;用MPP處理海量的、高質量的結構化數據,同時為應用提供豐富的SQL和事務支持能力;半結構化、非結構化數據處理則由Hadoop實現。
2.2 ETL關鍵技術
本文設計的面向企業級數據中心的分布式ETL平臺如圖1所示,主要包括一個主節點和多個子節點。主節點接收提交的ETL任務并進行任務調度分配到各個子節點,監控各個子節點中的任務執行狀態反饋給用戶;子節點執行從主節點接收到ETL任務,從不同的數據源中開始抽取數據并傳輸到平臺中,在平臺中經過清洗、轉換后傳輸并裝載到數據倉庫。
數據抽取一般有全量抽取、增量抽取兩種方式。全量抽取就是將數據源中的數據原封不動地從數據庫中抽取出來加載到數據倉庫中,類似于數據遷移或數據復制;而增量抽取只抽取自上次抽取以來數據庫中要抽取的表中新增或修改的數據[6]。建立數據倉庫前期一般采用全量抽取方式將來自不同業務系統的數據庫中的數據抽取至數據倉庫。全量抽取完成后,采用增量抽取方式抽取每天產生或變化的數據。增量抽取捕獲變化數據主要有觸發器、時間戳、全表對比、日志表等方式[7]。此外,企業的多個業務系統采用的數據庫可能來自不同廠商,這需要將這多個數據庫集成起來,以滿足能從不同數據庫中抽取數據的需求。因此,數據集成主要面臨數據源異構問題,所以在設計ETL處理平臺時要考慮數據源的通用性和擴展性,本文在實現ETL處理平臺中盡可能地支持常用的關系型數據庫和數據文件。
企業在構建數據倉庫的過程中需要建立元數據,所謂元數據是指管理數據的數據,具有解釋數據意思的目的[8]。數據沒有統一的規范,以至于企業無從匯總數據。在企業建立了元數據之后,需要對業務系統中的數據抽取,并將其轉換成標準的規劃化數據。數據轉換就是用來解決如何將非規范化的數據轉換成規范化的數據的問題[9]。
數據加載的任務主要往數據倉庫中添加數據,完成數據倉庫的數據準備。數據加載添加的數據來自于前一個過程數據轉換。
2.3 利用Data Vault混合數據建模
Data Vault(簡稱DV)是一組有連接關系的規范化的表的集合,DV模型主要用于企業級的數據倉庫建模,具備面向細節、可溯源等特征,DV模型架構如圖2所示。Data Vault建模是一種數據庫建模技術,可提供源自多個源的數據的長期歷史存儲。一個DV存儲事實或“所有數據、所有時間”的單個版本。其靈活、可擴展、一致且適應性強的設計涵蓋了第三范式(3NF)和星型模型(star schema)的最佳方面。
通過DV中的業務主鍵和描述性屬性之間的業務主鍵關聯,DV可以解決環境變化的問題。將這些主鍵設置為數據倉庫的結構主干,所有關聯的數據都可以圍繞它們進行組織。這些樞紐表(業務鍵)、連接表(關聯)和SAT(描述性屬性)產生適應性很強的數據結構,同時保持強大的數據完整性。特定的鏈接就像突觸(向相反方向的向量),只要業務關系能夠根據需要轉換數據模型而自動進行更改而不影響現有的數據結構,就可以創建或刪除它們。
Data Vault模型構建后,就可以通過ETL構建數據集成過程(即從源系統將數據填充到目標系統中)。構建面向全行業、標準化數據處理中心,為用戶提供快速、安全的企業級別的大數據處理解決方案,為各企業用戶在更短時間內收集、處理和發送更多精準的數據,而且所需要的資源和成本更低。
3 面向企業級數據中心的分布式ETL架構 (Distributed ETL architecture for enterprise data center)
面向企業級數據中心的分布式ETL解決的具體措施即建立數據處理和交換平臺。集中建設數據處理與交換平臺,并制定各系統采集的接口標準;加強實時流處理能力,形成海量數據批處理與實時處理、分析并存的能力;建立數據中心統一調度機制,覆蓋ETL及數據分發企業級應用;提供流程及任務調度可視化操作及監控界面。面向企業級數據中心的分布式ETL架構如圖3所示。
3.1 統一采集
面向企業級數據中心的分布式ETL架構對數據同意采集,提供多接口、多源采集方式,實現多域數據的融合,為適應企業級數據中心多類型數據源采集的需要,平臺需支持多種類型的數據采集方式,包括:API接口、JDBC/ODBC接口、消息隊列(MQ)接口、FTP/SFTP接口、第三方工具集成等。
3.2 統一作業
面向企業級數據中心的分布式ETL架構統一作業,提供豐富的圖形化、定制化開放能力。統一作業流程如圖4所示。支持各種復雜作業關系配置,系統通過圖形化界面配置從前端快速簡明的配置作業任務,提供對外開放能力,支持不同廠商開發人員的開發定制能力,提供作業執行流程監控。支持定時、常駐任務,靈活的定義時間格式;支持數據觸發,作業關系管理;方便華為、思特奇等多廠商開發人員的使用。
采用“內存不落地方式”任意數據交換,對源數據庫和目標數據庫進行靈活的配置,使得一個相同的源數據可以交換至多個異構數據庫。交換中心對數據的處理采用不落地分布方式,通過多進程管道實現數據的并行讀取,這樣數據的通用轉換過程在內存中就可以完成,同時還支持轉碼、加密等操作。經過分發路由轉換成適應各種類型數據庫的多路數據,且分發轉換支持多種數據格式轉換,最后并行加載到不同的目標數據庫或者寫入文件。
3.3 統一調度
面向企業級數據中心的分布式ETL架構實現跨平臺間的統一調度,實現了多系統、多用戶協同調度。完成多個平臺獨立調度,以及多個平臺間依賴調度。提供獨立工作區和用戶,各平臺可自行管理調度和ETL作業。權限管理,操作人員可設置ETL作業和調度,監控人員只提供查詢權限。
建立多觸發方式的跨平臺靈活調度機制,滿足不同的應用場景。時間觸發:一次性觸發、定時觸發、頻次觸發;循環觸發:循環操作,直至job達到失效時間;條件觸發:幾個前置的job流程的完成進行觸發;事件觸發:外部數據插入事件觸發表,后臺根據參數在指定時間將流程調度起來;組合觸發:提供同時設置多個觸發規則,觸發規則間提供與或關系。
3.4 統一管控
面向企業級數據中心的分布式ETL架構具備跨平臺統一監控及管理功能。集群監控及分析:提供統一運維界面,支持對集群、平臺程序的監控和維護,主要包括主備管理、任務分配、負載均衡等功能;資源監控:提供節點資源監控功能,對各節點的CPU、IO、內存、內核處理速度進行監控、報警。
應用執行監控:提供對后臺多種應用的執行情況監控、應用執行效率分析功能,支持多種告警方式與錯誤反饋,并可對應用的重新運行、繼續運行等操作。
3.5 異常處理及保障
異常處理是數據處理中心平臺重要的安全機制,通過建立多種異常校驗處理機制,保障數據處理與交換的可靠性。
(1)一致性校驗異常:數據源總記錄數與加載目標庫總記錄數進行校驗,校驗結果在指定范圍內則兩者數據一致,否則一致性校驗失敗,任務重新執行。
(2)準確性校驗異常:數據讀入內存中進行數據準確性校驗,校驗不通過的記錄寫入錯誤文件(最大寫入記錄數),并通知運維人員處理,同時將正確的記錄正常加載到目標庫。
(3)網絡中斷等外部原因造成的異常:平臺設定自動處理時間和次數,超限后,發送預警信息由外部人員手工干預。
4 結論(Conclusion)
面向企業級數據中心的分布式ETL系統通過Data Vault將大數據技術和建模、方法、架構和實踐融合在一起。隨著數據量的不斷增大,數據可以很容易地融入到data vault數據模型中,消除星型模式設計的清潔規范,data vault通過減少耗盡和維持影響大數據系統潛力的相關插入,從而在巨大的數據集上展現優勢。
通過集中建設數據處理與交換平臺,在可用性、擴展性、實時性、兼容性、可視性上有很大提升。高可用集群與負載均衡能力,硬件線性擴展及功能橫向擴展能力,借助流式計算、流式處理能力,通過內存管道流技術,充分提高數據處理與分析實時性能;工具采用采用插件式開發,同時將對外服務、集成功能封裝成API供其他軟件調用。也可以方便集成符合API接口的第三方軟件;可視化操作統一監控能力,提供了圖形化界面,方便集成商使用和維護。
面向企業級數據中心的分布式ETL系統通過部署集中數據處理平臺,采用管道技術,對不同數據庫采用并行抽取,并且對抽取內容做內存壓縮,從而為數據處理提速,數據生成時間縮小,性能提升明顯,效果顯著。新技術的運用幫助企業減少了投資,提升了數據處理性能和效率。
參考文獻(References)
[1] Meng X,Bradley J,Yavuz B,et al.Mllib:Machine learning in apache Spark.The Journal of Machine Learning Research,2016,17(1):1235-1241.
[2] Kumar Hota CPP,Ramu Y,Subba Rao DBV.A relative study on traditional ETL and ETL with apache hadoop.NCRTIT2K16.Andhra Pradesh,India,2016,20(2):74-78.
[3] WU X,ZHU X,WU G,et al.Data Mining with Big Data[J].IEEE Transancations on Knowledge & Data Engineering 2016,26(1):97-102.
[4] 韓文彪,李暉,陳梅,等.PBS:一種面向集群環境的ETL調度算法[J].計算機與數字工程,2017,45(5):793-796.
[5] 徐立新.基于異構數據資源整合的方法和系統實現[J].計算機技術與發展,2014(12):173-179.
[6] 楊杉,蘇飛,程新洲,等.面向運營商大數據的分布式ETL研究與設計[J].郵電設計技術,2016,8(1):50-52.
[7] 施霖,楊愛民.一種基于時間戳和日志的增量數據捕獲和抽取方法[P].CN,CN 102915336 A,2013.
[8] 王春陽,趙書良,王長賓.粒子群算法在分布式ETL任務調度中的應用[J].計算機工程與應用,2013,49(9):150-155.
[9] Kakish K,Kraft T A.ETL evolution for real-time data;warehousing[C].Proceedings of the Conference on Information Systems Applied Research ISSN,2012:2167-1508.
[10] 孟維一.基于數據倉庫的保險商業智能系統設計與實現[D].北京交通大學,2016.
作者簡介:
翁業林(1981-),男,碩士,講師.研究領域:計算機網絡技術.
周 泓(1981-),女,博士,副教授.研究領域:計算機軟件.
侯 兵(1980-),男,碩士,高級工程師.研究領域:大數據開發.