數據集成技術(三)--分佈式ETL技術架構

傳統ETL通常都是採用昂貴的ETL工具(Datastage、SSIS等)基於高性能的小型機完成。這種方式已經難以滿足“大數據”時代下TB甚至PB級的數據ETL需求,如何在有限的時間內,高效高質量的完成海量數據的ETL工作,對ETL技術的架構設計也提出了更高的要求。

目前主流的解決方案是通過對傳統ETL進行橫向擴展,將ETL工作轉化為並行或分佈式的架構,從而縮短數據處理時間。目前基於分佈式的ETL技術架構有以下兩種:

3.1 基於多Agent方式的ETL技術架構

該方法是將多Agent系統技術⋯1引入到分佈式計算環境中,該分佈式ETL框架把數據抽取、數據轉換和數據加載分別對應成各個Agent,同時把每一個模塊比如元數據管理、作業管理和轉換函數管理等各對應到一個Agent,然後利用Agent之間的協作性、主動性和交互性來構建分佈式ETL框架。

數據集成技術(三)--分佈式ETL技術架構

圖1

上圖給出了基於Agent的分佈式ETL架構。其中”ETL任務設計”模塊向用戶提供ETL工作流的設計界面。”ETL任務管理”模塊則是分佈式ETL的協調中心,向上(用戶)承接ETL作業的上傳、轉換函數的定義和日誌瀏覽功能,向下(ETL執行)基於元數據提供ETL作業轉換規則和作業調度。”ETL任務執行”模塊則是具體的執行引擎,分佈在各個實體服務器上。通過各個Agent協作完成ETL的任務。

這種架構可以較好的解決分佈式系統中的負載均衡問題,而且也能夠實現準實時的數據解析和入庫。但是該方式不能較好的保證各個Agent的穩定性,一旦某個Agent出現故障,將會使整個系統處於崩潰狀態,甚至有可能導致數據的丟失。

3.2 基於MapReduce的ETL技術架構

Hadoop技術在其誕生之初就是定位於大數據的存儲、分析。所以在hadoop框架下基於MapReduce實現ETL也是很多企業自然而然的選擇。

數據集成技術(三)--分佈式ETL技術架構

圖2

上圖中給出了一個典型的基於MapReduce的ETL技術架構。 服務端主要包括元數據管理模塊、執行引擎模塊、數據訪問模塊。元數據管理模塊是系統的基礎模塊,它描述了系統中所有數據結構的定義,提供元數據存儲、訪問的服務。系統的其他模塊通過公共接口從元數據管理模塊獲得元數據信息。另外,元數據管理模塊提供接口用來導入導出元數據。執行引擎模塊是系統的核心模塊,又分為流程解析和流程執行兩個模塊。在流程解析模塊,執行引擎獲取執行流程的元數據信息,根據這些信息,生成相應的工作流。流程執行模塊完成從數據轉換到數據解析的所有任務。數據訪問模塊提供公共的數據訪問接口,它屏蔽了各種數據源之間的差異,以一種統一的方式對數據進行查詢、刪除、修改。

在基於MapReduce的ETL技術框架下,開發人員只需要Map和Reduce兩個函數進行數據轉換的並行處理,並基於hadoop生態圈所提供的API接口進行數據抽取和加載。這樣可以提高開發效率,而且系統的並行處理能力也有成熟hadoop生態圈得以保證。但是MapReduce程序啟動較為耗時,並不適用於數據的實時加載和入庫,而且MapReduce作業流程的優化也需要投入大量的時間。


分享到:


相關文章: