文章來源:中國聯(lián)通網(wǎng)研院網(wǎng)優(yōu)網(wǎng)管部——IT技術(shù)研究團隊
作者:楊杉
1. 數(shù)據(jù)集成和ETL
隨著移動互聯(lián)網(wǎng)、云計算、物聯(lián)網(wǎng)等信息技術(shù)的飛速發(fā)展,越來越多的數(shù)據(jù)被產(chǎn)生,整個社會正在加速進入了“大數(shù)據(jù)”時代。對于企業(yè)來說,數(shù)據(jù)已經(jīng)成為企業(yè)的財富,也是一種重要的戰(zhàn)略資源。但在一個企業(yè)中,不同類型的數(shù)據(jù)通常是分布在若干個獨立的信息系統(tǒng)中。以運營商為例,用戶的計費和賬單信息由信息化或市場部門的經(jīng)營分析系統(tǒng)生成和維護,而用戶在網(wǎng)絡(luò)中所產(chǎn)生的信令和上網(wǎng)行為記錄則由網(wǎng)絡(luò)運維部門的網(wǎng)絡(luò)運維系統(tǒng)存儲。由于種種歷史和現(xiàn)實原因,這些獨立的信息系統(tǒng)之間缺少統(tǒng)一的接口,且數(shù)據(jù)結(jié)構(gòu)差異巨大,造成企業(yè)內(nèi)部的數(shù)據(jù)融合困難,也無法充分挖掘數(shù)據(jù)所包含的經(jīng)濟和社會價值。
如何將這些相互關(guān)聯(lián)的分布式異構(gòu)數(shù)據(jù)源集成在一起,能夠讓上層用戶無視不同系統(tǒng)的數(shù)據(jù)差異,透明的方式訪問這些數(shù)據(jù),就是數(shù)據(jù)集成所要解決的問題。下圖給出了一個典型的商業(yè)智能(BI:Business Intelligence)系統(tǒng)架構(gòu)。
可以看到數(shù)據(jù)集成包含了:ETL、主數(shù)據(jù)管理、數(shù)據(jù)質(zhì)量監(jiān)控、元數(shù)據(jù)管理、數(shù)據(jù)生命周期管理共五大功能模塊。在這個專題中,我們將依次對這些功能模塊進行詳細(xì)介紹,本片公眾號將重點介紹ETL的主要流程和技術(shù)架構(gòu)。
2. ETL流程介紹
ETL是數(shù)據(jù)抽取、轉(zhuǎn)換和裝載(Extract,Transformation,Loading)的英文簡稱,是數(shù)據(jù)倉庫獲取高質(zhì)量數(shù)據(jù)的關(guān)鍵環(huán)節(jié),是對分散在各業(yè)務(wù)系統(tǒng)中的現(xiàn)有數(shù)據(jù)進行提取、轉(zhuǎn)換、清洗和加載的過程,使這些數(shù)據(jù)成為商業(yè)智能系統(tǒng)需要的有用數(shù)據(jù)。ETL是數(shù)據(jù)集成的第一步,也是構(gòu)建數(shù)據(jù)倉庫最重要的步驟。
下面我們以從某運維平臺獲取的各省RNC基礎(chǔ)工參數(shù)據(jù)為例說明ETL主要流程。
上圖給出了3個省級運維平臺數(shù)據(jù)庫中RNC基礎(chǔ)工參數(shù)據(jù)的字段信息。通過對比,初步發(fā)現(xiàn)以下問題:
問題1: A、B省使用了中文表名、而C省使用了英文表名;
問題2: A省數(shù)據(jù)內(nèi)容相對豐富,但是B省和C省都有不同程度的數(shù)據(jù)內(nèi)容缺失情況,例如B省缺失“NodeB數(shù)量”等字段,C省缺失“所屬SGSN”字段;
問題3:A、B、C省相同的字段內(nèi)容使用了不同的名稱,例如A省的“所屬城市標(biāo)識”分別對應(yīng)B省的“城市標(biāo)識”和C省的“city_id”。A省的“載頻數(shù)目”對應(yīng)B省的“載波數(shù)”和C省的”freq_num”;
問題4:A、B、C省均存在字段名稱相近,但實際取值需要轉(zhuǎn)換的字段。例如A省”廠商標(biāo)識”字段取值為“1,2,3,4,5”,對應(yīng)B省“廠商名稱”字段的“華為、中興、阿郎、諾西、愛立信”;
問題5:A、C省中”Iu接口配置帶寬”單位為Mbps,但B省該字段的單位為bps,為便于后續(xù)分析對比,需要進行轉(zhuǎn)換;
問題6:由于這是RNC基礎(chǔ)工參信息表,所以“RNC標(biāo)識”字段應(yīng)為非空。但在實際數(shù)據(jù)中,卻存在”RNC標(biāo)識”為空的無效數(shù)據(jù),需要清洗。
2.1 數(shù)據(jù)抽?。―ata Extract)
數(shù)據(jù)抽取指的是從不同的網(wǎng)絡(luò)、不同的操作平臺、不同的數(shù)據(jù)庫和數(shù)據(jù)格式、不同的應(yīng)用中抽取數(shù)據(jù)的過程。在這個過程中,首先需要結(jié)合業(yè)務(wù)需求確定抽取的字段,形成一張公共需求表頭,并且每個省的數(shù)據(jù)庫字段也應(yīng)與這些需求字段形成一一映射關(guān)系。這樣通過數(shù)據(jù)抽取所得到的數(shù)據(jù)都具有統(tǒng)一、規(guī)整的字段內(nèi)容,為后續(xù)的數(shù)據(jù)轉(zhuǎn)換和加載提供基礎(chǔ)。
通過數(shù)據(jù)抽取,我們可以有效的解決剛才提到的問題1-3。但是需要特別說明的是,數(shù)據(jù)抽取并不僅僅是根據(jù)業(yè)務(wù)確定公共需求字段。更涉及到從不同類型的數(shù)據(jù)庫(Oracle、Mysql、DB2、Vertica等)、不同類型的文件系統(tǒng)(Linux、Windows、HDFS)、以何種方式(數(shù)據(jù)庫抽取、文件傳輸、流式)、何種頻率(分鐘、小時、天、周、月)、何種抽取方式(全量抽取、增量抽?。┇@取數(shù)據(jù)。所以具體的實現(xiàn)也包含了大量的工作和技術(shù)難點。
2.2 數(shù)據(jù)轉(zhuǎn)換(Data Transformation)
數(shù)據(jù)轉(zhuǎn)換就是處理抽取上來的數(shù)據(jù)中存在的不一致的過程。數(shù)據(jù)轉(zhuǎn)換一般包括兩類:
第一類:數(shù)據(jù)名稱及格式的統(tǒng)一,即數(shù)據(jù)粒度轉(zhuǎn)換、商務(wù)規(guī)則計算以及統(tǒng)一的命名、數(shù)據(jù)格式、計量單位等;針對問題4中的”廠商標(biāo)識”字段,將取值統(tǒng)一為“華為、中興、阿郎、諾西、愛立信”。這樣就需要對A省的該字段取值“1,2,3,4,5”根據(jù)映射關(guān)系進行數(shù)據(jù)轉(zhuǎn)換;而對于問題5中的”Iu接口配置帶寬”字段,則將單位統(tǒng)一為Mbps,這樣在對B省數(shù)據(jù)進行處理時,需要對取值除以1000000進行匹配。
第二類:數(shù)據(jù)倉庫中存在源數(shù)據(jù)庫中可能不存在的數(shù)據(jù),因此需要進行字段的組合、分割或計算。以運營商獲取的用戶上網(wǎng)詳單為例,需要根據(jù)用戶上網(wǎng)內(nèi)容和流量類型確定用戶使用的業(yè)務(wù)類型(流媒體、即時通信、下載、瀏覽等),生成相應(yīng)字段。并對單個用戶在單個小區(qū)的各類型業(yè)務(wù)流量、次數(shù)、時間進行匯總統(tǒng)計
數(shù)據(jù)轉(zhuǎn)換實際上還包含了數(shù)據(jù)清洗的工作,需要根據(jù)業(yè)務(wù)規(guī)則對異常數(shù)據(jù)進行清洗,保證后續(xù)分析結(jié)果的準(zhǔn)確性。問題6中“RNC標(biāo)識”為空的字段將會被清除。
2.3 數(shù)據(jù)加載(Data Loading)
數(shù)據(jù)裝載的主要任務(wù)是將經(jīng)過清洗后的干凈的數(shù)據(jù)集按照物理數(shù)據(jù)模型定義的表結(jié)構(gòu)裝入目標(biāo)數(shù)據(jù)倉庫的數(shù)據(jù)表中,并允許人工干預(yù),以及提供強大的錯誤報告、系統(tǒng)日志、數(shù)據(jù)備份與恢復(fù)功能。整個操作過程往往要跨網(wǎng)絡(luò)、跨操作平臺。在實際的工作中,數(shù)據(jù)加載需要結(jié)合使用的數(shù)據(jù)庫系統(tǒng)(Oracle、Mysql、Spark、Impala等),確定最優(yōu)的數(shù)據(jù)加載方案,節(jié)約CPU、硬盤IO和網(wǎng)絡(luò)傳輸資源。
3. 分布式ETL技術(shù)架構(gòu)
傳統(tǒng)ETL通常都是采用昂貴的ETL工具(Datastage、SSIS等)基于高性能的小型機完成。這種方式已經(jīng)難以滿足“大數(shù)據(jù)”時代下TB甚至PB級的數(shù)據(jù)ETL需求,如何在有限的時間內(nèi),高效高質(zhì)量的完成海量數(shù)據(jù)的ETL工作,對ETL技術(shù)的架構(gòu)設(shè)計也提出了更高的要求。
目前主流的解決方案是通過對傳統(tǒng)ETL進行橫向擴展,將ETL工作轉(zhuǎn)化為并行或分布式的架構(gòu),從而縮短數(shù)據(jù)處理時間。目前基于分布式的ETL技術(shù)架構(gòu)有以下兩種:
3.1 基于多Agent方式的ETL技術(shù)架構(gòu)
該方法是將多Agent系統(tǒng)技術(shù)?1引入到分布式計算環(huán)境中,該分布式ETL框架把數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)加載分別對應(yīng)成各個Agent,同時把每一個模塊比如元數(shù)據(jù)管理、作業(yè)管理和轉(zhuǎn)換函數(shù)管理等各對應(yīng)到一個Agent,然后利用Agent之間的協(xié)作性、主動性和交互性來構(gòu)建分布式ETL框架。
這種架構(gòu)可以較好的解決分布式系統(tǒng)中的負(fù)載均衡問題,而且也能夠?qū)崿F(xiàn)準(zhǔn)實時的數(shù)據(jù)解析和入庫。但是該方式不能較好的保證各個Agent的穩(wěn)定性,一旦某個Agent出現(xiàn)故障,將會使整個系統(tǒng)處于崩潰狀態(tài),甚至有可能導(dǎo)致數(shù)據(jù)的丟失。
3.2 基于MapReduce的ETL技術(shù)架構(gòu)
Hadoop技術(shù)在其誕生之初就是定位于大數(shù)據(jù)的存儲、分析。所以在hadoop框架下基于MapReduce實現(xiàn)ETL也是很多企業(yè)自然而然的選擇。
在基于MapReduce的ETL技術(shù)框架下,開發(fā)人員只需要Map和Reduce兩個函數(shù)進行數(shù)據(jù)轉(zhuǎn)換的并行處理,并基于hadoop生態(tài)圈所提供的API接口進行數(shù)據(jù)抽取和加載。這樣可以提高開發(fā)效率,而且系統(tǒng)的并行處理能力也有成熟hadoop生態(tài)圈得以保證。但是MapReduce程序啟動較為耗時,并不適用于數(shù)據(jù)的實時加載和入庫,而且MapReduce作業(yè)流程的優(yōu)化也需要投入大量的時間。
4. 小結(jié)
在本文中我們簡單介紹了數(shù)據(jù)集成,并結(jié)合具體案例說明了ETL的主要流程,并對兩種分布式ETL技術(shù)架構(gòu)并進行了介紹和比較。在隨后的文章中,我們將基于某省級運營商的大數(shù)據(jù)分析需求,提供相應(yīng)的ETL技術(shù)架構(gòu)和實現(xiàn)方案。
聯(lián)系客服