基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架--原創(chuàng)
摘? 要:為了在大數(shù)據(jù)處理下提高ETL開發(fā)效率倘零、任務(wù)維護及監(jiān)控能力刁憋、減少人工操作工作珍昨、在多種相似數(shù)據(jù)存儲過程中共享ETL過程,提出一種基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架动羽。根據(jù)ETL工作原理、數(shù)據(jù)存儲過程以及任務(wù)特點渔期,在任務(wù)調(diào)度開發(fā)运吓、數(shù)據(jù)存儲過程方面進行了改進渴邦,以配置文件方式進行自動化開發(fā)模式,從而構(gòu)建基于大數(shù)據(jù)平臺化ETL可復(fù)用框架拘哨。在實際應(yīng)用中谋梭,將該可復(fù)用框架分別應(yīng)用于各個數(shù)據(jù)倉庫的項目建設(shè)和數(shù)據(jù)集市項目建設(shè)中。實驗結(jié)果表明該框架能夠大幅度提高工作效率以及任務(wù)監(jiān)控能力倦青,極大減少開發(fā)人員手工開發(fā)Shell腳本進行任務(wù)調(diào)度和后續(xù)任務(wù)調(diào)度的監(jiān)控及維護工作瓮床,以此驗證基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架的有效性。
關(guān)鍵詞:大數(shù)據(jù)處理产镐;ETL框架隘庄;平臺配置化;可復(fù)用
中圖法分類號:TP391???????? 文獻標識碼:A?????? 文章編號:
Design andImplementation of ETL General Framework Based
on Big Data
LIUDeng-he, SU Yu
Abstract:Aimingat the problems of low development efficiency, poor task maintenance andmonitoring capabilities, and more manual operations in the storage process ofthe traditional ETL framework, a general ETL framework based on big dataplatform is proposed. By analyzing the working principle of ETL, data storageprocess and task characteristics, design platform configuration task schedulingmanagement module, system monitoring module, etc. When using thisplatform-based framework for ETL development, data task scheduling can beachieved only by configuring the corresponding parameters of the task in theplatform. At the same time, the progress and logs of the task can be viewedaccording to the system monitoring module, and problems can be found andresolved in a timely manner, forming a closed loop as a whole. The ETL generalframework based on big data platform has been improved in task schedulingdevelopment and data storage process. The framework can focus more developerson data logic processing, which can greatly reduce the manual development ofshell scripts by developers. Maintenance work for task scheduling and follow-uptask scheduling improves work efficiency and task monitoring capabilities.
Key Words:Big
data processing; ETL framework; platform configuration; task scheduling; stored
procedure
0 引言
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展癣亚,不知不覺已進入大數(shù)據(jù)時代丑掺,產(chǎn)生的海量數(shù)據(jù)和信息是現(xiàn)代企業(yè)最重要的資源,通過對海量數(shù)據(jù)進行ETL處理以及有效的數(shù)據(jù)挖掘能夠從中挖掘出潛藏在數(shù)據(jù)中的有效規(guī)則述雾、有價值的信息街州,為企業(yè)提供決策支持,為科學(xué)管理企業(yè)提供數(shù)據(jù)支持[1]玻孟。目前基于大數(shù)據(jù)的ETL過程已經(jīng)成為建設(shè)數(shù)據(jù)倉庫唆缴、數(shù)據(jù)集市項目主要的技術(shù)手段,ETL過程能夠?qū)⒃聪到y(tǒng)中包含噪音數(shù)據(jù)黍翎、不完整數(shù)據(jù)以及無價值的數(shù)據(jù)進行抽取面徽、轉(zhuǎn)換以及裝載,最終將獲取到更高質(zhì)量的數(shù)據(jù)存放在數(shù)據(jù)倉庫中[2]玩敏。由于ETL過程在整個數(shù)據(jù)倉庫及數(shù)據(jù)集市建設(shè)中所占用的工作量較大斗忌,開發(fā)過程效率較低,若ETL過程中還存在質(zhì)量問題會直接影響數(shù)倉及數(shù)據(jù)集市構(gòu)建的效率及質(zhì)量[3]旺聚。因此本文致力于構(gòu)建基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架织阳,強調(diào)ETL框架的靈活性、可復(fù)用性以及可擴展性砰粹,能夠?qū)TL框架適用于數(shù)據(jù)倉庫和數(shù)據(jù)集市項目的構(gòu)建中唧躲,發(fā)現(xiàn)其共同特征、知識碱璃、需求等弄痹,以配置文件方式進行自動化開發(fā)模式,大幅度提高ETL開發(fā)效率嵌器、減少人工重復(fù)開發(fā)工作肛真,提高任務(wù)調(diào)度監(jiān)控能力,從而提升建設(shè)數(shù)據(jù)倉庫爽航、數(shù)據(jù)集市的效率蚓让。
1 ETL工作流方案設(shè)計
ETL的工作流程主要包括:數(shù)據(jù)抽惹馈(DataExtraction)、數(shù)據(jù)轉(zhuǎn)換(DataTransformation)历极、數(shù)據(jù)加載(DataLoading)窄瘟,它是從多個異構(gòu)的數(shù)據(jù)源中,依據(jù)一定的抽取規(guī)則獲取數(shù)據(jù),經(jīng)轉(zhuǎn)換后,加載到目標數(shù)據(jù)(倉)庫的處理過程[4]。在構(gòu)架數(shù)據(jù)倉庫時趟卸,數(shù)據(jù)ETL處理過程作為第一步蹄葱,也是最重要的一步操作,能夠為后續(xù)的數(shù)據(jù)挖掘及報表等經(jīng)營決策提供數(shù)據(jù)支持锄列。下面將詳細介紹ETL的三個階段图云。
1.1數(shù)據(jù)抽取
數(shù)據(jù)抽取作為ETL過程的第一步,需要分析各個不同的數(shù)據(jù)源獲取數(shù)據(jù)的策略右蕊,包括全量和增量兩種方式進行抽取琼稻,對于數(shù)據(jù)量大,不會修改和刪除歷史數(shù)據(jù)的表饶囚,必須考慮增量抽取帕翻。一般情況下,業(yè)務(wù)系統(tǒng)會記錄業(yè)務(wù)數(shù)據(jù)的發(fā)生時間萝风,可以作為增量標記嘀掸,每次執(zhí)行完一次ETL調(diào)度后,源系統(tǒng)會產(chǎn)生新的數(shù)據(jù)规惰,用增量標記來抽取其中所有變化的數(shù)據(jù)則為增量抽取睬塌,最后將抽取的全量和增量數(shù)據(jù)存入HDFS分布式文件系統(tǒng)中,完成數(shù)據(jù)抽取過程歇万。
1.2數(shù)據(jù)轉(zhuǎn)換
一般情況下揩晴,數(shù)據(jù)倉庫分為ODS、DW兩部分贪磺,通常的做法是從業(yè)務(wù)系統(tǒng)到ODS做清洗硫兰,將臟數(shù)據(jù)和不完整數(shù)據(jù)過濾掉,再從ODS到DW的過程中轉(zhuǎn)換寒锚,進行一些業(yè)務(wù)規(guī)則的計算和聚合[7]劫映。其中數(shù)據(jù)清洗的任務(wù)是過濾那些不符合要求的數(shù)據(jù),將過濾的結(jié)果交給業(yè)務(wù)主管部門刹前,確認是否過濾掉還是由業(yè)務(wù)單位修正之后再進行抽取泳赋。不符合要求的數(shù)據(jù)主要是有不完整的數(shù)據(jù)、錯誤的數(shù)據(jù)和重復(fù)的數(shù)據(jù)三大類喇喉。數(shù)據(jù)轉(zhuǎn)換的任務(wù)主要是進行不一致的數(shù)據(jù)轉(zhuǎn)換祖今、數(shù)據(jù)粒度的轉(zhuǎn)換和一些業(yè)務(wù)規(guī)則的計算。其中不一致數(shù)據(jù)轉(zhuǎn)換拣技,這個過程是一個整合的過程衅鹿,將不同業(yè)務(wù)系統(tǒng)的相同類型的數(shù)據(jù)統(tǒng)一撒踪;業(yè)務(wù)規(guī)則的計算,不同的業(yè)務(wù)部門有不同的業(yè)務(wù)規(guī)則大渤,不同的數(shù)據(jù)指標,這些指標有的時候不是簡單的加加減減就能完成掸绞,這個時候需要在ETL中將這些數(shù)據(jù)指標計算好了之后存儲在數(shù)據(jù)倉庫中泵三,供分析使用。
1.3數(shù)據(jù)加載
將源系統(tǒng)抽取轉(zhuǎn)換的數(shù)據(jù)最終裝載到數(shù)據(jù)倉庫中的數(shù)據(jù)匯總層和數(shù)據(jù)集市衔掸。
2 基于大數(shù)據(jù)的ETL可復(fù)用框架設(shè)計
現(xiàn)如今通過深入分析國內(nèi)某商業(yè)銀行各個業(yè)務(wù)系統(tǒng)烫幕,了解到各個業(yè)務(wù)系統(tǒng)每天都會產(chǎn)生大量的數(shù)據(jù),對數(shù)據(jù)倉庫所存儲的數(shù)據(jù)做一個總體的預(yù)估敞映。根據(jù)數(shù)據(jù)存儲情況较曼,設(shè)計基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架,將各個業(yè)務(wù)系統(tǒng)數(shù)據(jù)進行抽取振愿,在進行清洗和轉(zhuǎn)換捷犹,最終存儲在Hadoop分布式集群的HDFS文件系統(tǒng)中[5]。Hive是基于Hadoop的一個數(shù)據(jù)倉庫管理技術(shù)冕末,可以方便我們對HDFS上的文件進行轉(zhuǎn)換處理操作萍歉。由于ETL過程在整個數(shù)據(jù)倉庫及數(shù)據(jù)集市建設(shè)中所占用的工作量較大,開發(fā)過程效率較低档桃,若ETL過程中還存在質(zhì)量問題會直接影響數(shù)倉及數(shù)據(jù)集市構(gòu)建的效率及質(zhì)量[6]枪孩。因此本文致力于構(gòu)建基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架,強調(diào)ETL框架的靈活性藻肄、可復(fù)用性以及可擴展性蔑舞,以配置文件方式進行自動化開發(fā)模式,減少人工重復(fù)開發(fā)工作嘹屯,提高任務(wù)調(diào)度監(jiān)控能力攻询。本文中提供的ETL框架的運行環(huán)境為:Hadoop、Hive(數(shù)據(jù)倉庫管理工具)抚垄、Python語言蜕窿、Shell腳本。結(jié)合國內(nèi)某商業(yè)銀行的業(yè)務(wù)特點呆馁,構(gòu)建基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架如圖1所示桐经。
圖1 ETL復(fù)用框架設(shè)計
從圖中可以看出,基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架的流程主要是從業(yè)務(wù)系統(tǒng)如核心系統(tǒng)浙滤、線上貸款阴挣、聯(lián)合貸款等系統(tǒng)中進行數(shù)據(jù)抽取,將抽取和采集到的結(jié)構(gòu)化數(shù)據(jù)纺腊、非結(jié)構(gòu)化數(shù)據(jù)以及半結(jié)構(gòu)化數(shù)據(jù)等存儲在Hadoop分布式集群的HDFS中畔咧,在對這些數(shù)據(jù)通過shell茎芭、hive、sqoop誓沸、python等技術(shù)進行數(shù)據(jù)轉(zhuǎn)換和存儲梅桩,最終將底層數(shù)據(jù)源通過數(shù)據(jù)轉(zhuǎn)換分別存儲在數(shù)據(jù)倉庫的分層架構(gòu)中,包括數(shù)據(jù)湖ODS拜隧、主題模型層宿百、共性加工層以及數(shù)據(jù)集市層,完成整個數(shù)據(jù)存儲過程洪添。
2.1 ETL任務(wù)設(shè)計
傳統(tǒng)ETL任務(wù)采用人工方式進行重復(fù)性的ETL過程開發(fā)垦页、ETL任務(wù)調(diào)度開發(fā)、airflow日志告警干奢,實現(xiàn)整個ETL數(shù)據(jù)存儲到數(shù)據(jù)倉庫中痊焊。為避免開發(fā)人員重復(fù)開發(fā)繁重ETL腳本,能夠高效忿峻、高質(zhì)量完成ETL的數(shù)據(jù)處理和存儲薄啥,本文將設(shè)計構(gòu)建大數(shù)據(jù)平臺化ETL可復(fù)用框架。本文將設(shè)計構(gòu)建大數(shù)據(jù)平臺化ETL可復(fù)用框架炭菌。本文在國內(nèi)某商業(yè)銀行的內(nèi)部資產(chǎn)定價轉(zhuǎn)移(FTP)項目基礎(chǔ)上罪佳,通過基于大數(shù)據(jù)平臺化的ETL框架來完成數(shù)據(jù)的轉(zhuǎn)換和存儲。在遵循ETL邏輯架構(gòu)的基礎(chǔ)上黑低,為各個源數(shù)據(jù)系統(tǒng)中的每一張業(yè)務(wù)表設(shè)計一個調(diào)度作業(yè)任務(wù)赘艳,其中調(diào)度作業(yè)就是業(yè)務(wù)表的ETL開發(fā)過程。
在進行ETL開發(fā)時克握,只需登錄大數(shù)據(jù)管理平臺蕾管,在Web頁面上將必須的配置參數(shù)進行寫入,包括編號菩暗、業(yè)務(wù)線掰曾、源庫類型、數(shù)據(jù)源表停团、結(jié)果表寫入模式旷坦、任務(wù)id、子任務(wù)id佑稠、任務(wù)描述秒梅、sql參數(shù)、資源分配情況等參數(shù)舌胶,將配置化參數(shù)存在Mysql數(shù)據(jù)庫中捆蜀,通過對配置參數(shù)進行解析,自動生成Spark的ETL任務(wù)和Airflow分布式調(diào)度作業(yè),實現(xiàn)整個ETL過程到數(shù)據(jù)倉庫中辆它,最后要為任務(wù)處理過程中的一些常用操作提供公共工具接口誊薄,以方便全局調(diào)用,最終達到大數(shù)據(jù)平臺一體化的ETL配置過程锰茉。因此針對新增ETL任務(wù)能夠通過在Web頁面上寫入必要配置參數(shù)呢蔫,通過配置文件解析程序來實現(xiàn)任務(wù)作業(yè)。針對ETL任務(wù)作業(yè)運行過程中飒筑,需要實時監(jiān)控所有作業(yè)的執(zhí)行情況咐刨,設(shè)計監(jiān)控程序,首先要分析整理出調(diào)度作業(yè)的任務(wù)信息扬霜,包括數(shù)據(jù)源系統(tǒng)、各個系統(tǒng)中所有調(diào)度作業(yè)的編號而涉、調(diào)度作業(yè)的階段信息著瓶、調(diào)度作業(yè)之間的前后驅(qū)關(guān)系等。通過Airflow分布式任務(wù)調(diào)度查看日志內(nèi)容啼县,遍歷日志中出現(xiàn)的關(guān)鍵字進行告警材原。
圖2 ETL任務(wù)設(shè)計流程圖
2.2 ETL任務(wù)調(diào)度實現(xiàn)
在上述設(shè)計的ETL任務(wù)調(diào)度中,所有的操作過程都是通過配置參數(shù)來實現(xiàn)的季眷。開發(fā)外部SQL腳本程序余蟹,調(diào)用配置參數(shù)來實現(xiàn)ETL系統(tǒng)的數(shù)據(jù)調(diào)度功能。SQL取數(shù)邏輯腳本可以根據(jù)不同的業(yè)務(wù)需求進行編寫子刮,實現(xiàn)其功能威酒,這樣做的好處是配置作業(yè)比較容易。根據(jù)業(yè)務(wù)需求,進行調(diào)度作業(yè)的任務(wù)配置,創(chuàng)建一個調(diào)度作業(yè)任務(wù)JOB巨缘,JOB表結(jié)構(gòu)如圖3所示啊易。該表記錄了實現(xiàn)任務(wù)作業(yè)以及調(diào)用程序的基本信息,包括:任務(wù)作業(yè)名稱超凳、任務(wù)作業(yè)類型、調(diào)用腳本、編號宰啦、業(yè)務(wù)線、源庫類型饼拍、數(shù)據(jù)源表赡模、結(jié)果表寫入模式、任務(wù)id惕耕、子任務(wù)id纺裁、任務(wù)描述、sql腳本、sql參數(shù)欺缘、資源分配情況等參數(shù)栋豫,該方法方便初始化任務(wù)作業(yè)信息。當新增任務(wù)作業(yè)信息時谚殊,可直接寫入詳細參數(shù)完成新增任務(wù)作業(yè)的信息存儲丧鸯,調(diào)用sql腳本等參數(shù),在airflow分布式調(diào)度中生成任務(wù)作業(yè)嫩絮,完成數(shù)據(jù)開發(fā)過程丛肢,最終將表中的業(yè)務(wù)數(shù)據(jù)存儲備份至數(shù)據(jù)倉庫中。當需要重新調(diào)度新的作業(yè)時剿干,初始化JOB表為空蜂怎,插入新增任務(wù)作業(yè)信息,根據(jù)新作業(yè)的業(yè)務(wù)特點置尔,修改SQL腳本邏輯杠步,在airflow分布式調(diào)度系統(tǒng)中實現(xiàn)新增任務(wù)作業(yè)的調(diào)度功能。當作業(yè)調(diào)度開發(fā)結(jié)束后榜轿,通過查詢調(diào)度作業(yè)日志幽歼,查看數(shù)據(jù)調(diào)度是否成功,調(diào)度成功則數(shù)據(jù)成功存儲至數(shù)據(jù)倉庫中谬盐,如圖4所示甸私。若調(diào)度失敗,則查看日志飞傀,找到調(diào)度失敗原因并修改皇型,重新執(zhí)行調(diào)度任務(wù),直至調(diào)度作業(yè)執(zhí)行成功助析。
2.3 ETL監(jiān)控設(shè)計
在進行ETL任務(wù)調(diào)度運行時犀被,需要實時監(jiān)控所有的作業(yè)執(zhí)行情況,而Airflow分布式調(diào)度任務(wù)作業(yè)中包含著運行日志是不能夠進行告警提示外冀,需要人工查看日志才能夠知道作業(yè)的執(zhí)行情況寡键,同時還需要在yarn中查看詳細的錯誤日志,才能定位到問題所在雪隧。這樣的方式會占有大量人工查看任務(wù)日志的時間西轩,針對錯誤任務(wù)的手工處理效率較低。因此本文設(shè)計的ETL監(jiān)控系統(tǒng)能夠?qū)崟r的監(jiān)控所有作業(yè)執(zhí)行情況脑沿,遍歷所有任務(wù)作業(yè)的執(zhí)行日志藕畔,通過關(guān)鍵詞進行任務(wù)結(jié)果判斷,若有失敗信息等關(guān)鍵詞庄拇,則通過數(shù)據(jù)檢測消息發(fā)送器發(fā)送告警信息注服,我們可接收數(shù)據(jù)檢測消息發(fā)送器的消息并做相應(yīng)的處理韭邓。
3 結(jié)束語
本文以國內(nèi)某商業(yè)銀行的內(nèi)部資產(chǎn)定價轉(zhuǎn)移(FTP)項目為背景,設(shè)計開發(fā)了基于大數(shù)據(jù)平臺化的ETL可復(fù)用框架溶弟,整體架構(gòu)靈活易擴展女淑、支持跨平臺,改變傳統(tǒng)ETL開發(fā)方式辜御,同時減少了傳統(tǒng)ETL人工開發(fā)成本鸭你,節(jié)約時間開銷,提高執(zhí)行效率等優(yōu)點擒权,具有良好的應(yīng)用價值袱巨。實現(xiàn)將商業(yè)銀行各個業(yè)務(wù)系統(tǒng)的底層數(shù)據(jù)進行加工轉(zhuǎn)換后存儲到數(shù)據(jù)倉庫的過程,最終目的是高效率實現(xiàn)全行業(yè)務(wù)數(shù)據(jù)的一致化碳抄、標準化和高質(zhì)量化愉老,全面提升商業(yè)銀行數(shù)字化發(fā)展水平。在大數(shù)據(jù)時代下剖效,人工智能和數(shù)據(jù)挖掘技術(shù)已被廣泛應(yīng)用于商業(yè)銀行俺夕,這也成為了商業(yè)銀行競爭的重要手段和方式,因此做好數(shù)據(jù)倉庫顯得尤為重要贱鄙,基于數(shù)據(jù)倉庫進行數(shù)據(jù)挖掘,能夠更好的挖掘出商業(yè)銀行潛在的客戶及商業(yè)信息等姨谷,能夠為領(lǐng)導(dǎo)提供管理決策支持逗宁,使商業(yè)銀行的經(jīng)濟效益最大化,從而使銀行更好更快的發(fā)展梦湘。
參考文獻
[1] 徐俊剛,裴瑩. 數(shù)據(jù)ETL研究綜述[J]. 計算機科學(xué),
2011,38(4):15-20
[2] L Baldacci,M Golfarelli,S Graziani,et al.QETL:An Approach toOn-Demand ETL from Non-Owned Data Sources[J].Data & Knowledge Engineering,2017.
[3] V Theodorou,A Abelló,M Thiele,et al.Frequent Patterns in ETLWorkflows: An Empirical Approach[J].Data & Knowledge Engineering,2017:112.
[4] Dupor S,Jovanovic V.An approach to conceptual modelling of ETL
processes[C].International Convention on Information and CommunicationTechnology,Electronics and Microelectronics.IEEE,2014:1485-1490.
[5] 沈琦,陳博.基于大數(shù)據(jù)處理的ETL框架的研究與設(shè)計[J].電子設(shè)計工程,2016,24(2):25-27.
[6] 張靖,雷航,唐雪飛,等.ETL應(yīng)用優(yōu)化設(shè)計與實現(xiàn)研究[J].微電子學(xué)與計算機,2012,29(4):134-137.
[7] 宋旭東,劉曉冰.數(shù)據(jù)倉庫ETL任務(wù)調(diào)度模型研究[J].控制與決策,2011,26(2):271-275.