張 偉
(中國大唐集團科學技術研究院有限公司,北京 100040)
數據的爆炸式增長以及其蘊含的巨大價值將對企業未來的發展產生深遠的影響,數據將成為企業的核心資產。大型國有企業擁有豐富客戶資源的海量數據積累,在大數據時代要充分挖掘數據價值,跟上時代步伐。如何應用數據,挖掘數據的價值,讓數據為企業的發展保駕護航,將是未來信息技術發展道路上關注的重點。
為了滿足大型企業對于數據多樣化、個性化需求,本設計方案提供高效、統一的數據接口,搭建一個數據精確、性能高效、方便分析的數據倉庫系統。通過該方案可對上游各類數據按照主題模型、應用集市進行匯總,為下游輸出標準化、模型化的數據,以滿足用戶的需求,同時利用數據倉庫高效的數據處理能力,縮短報表生成時間,提高數據統計效率。根據對應用業務及技術特點進行綜合評估,提出基于Hadoop模式的數據分析平臺方案。
數據分析平臺數據倉庫總體框架需要遵循如下技術原則:
(1)開放性:引入業界開放的、成熟的標準,從而保證系統成為符合標準又不失靈活性的開放平臺,為未來的系統擴展奠定基礎。
(2)可擴展性:隨著新的業務需求的不斷產生,支持基礎數據模型、應用分析模型、前端應用的擴展性;支持在統一系統架構中服務器、存儲、I/O設備等的可擴展性。
(3)可靠性:制定并實施數據倉庫高可用性方案、運行管理監控制度、運行維護制度、故障處理預案等,保證數據倉庫系統在復雜環境下的可靠性。
搭建數據分析的基礎平臺,建立完善的ETL(Extract-Transform-Load,數據倉庫技術)調度機制并對數據進行初步的整合,建立基于應用的基礎寬表。
基于Hadoop+Oracle混合技術架構的數據分析技術平臺,滿足數據分析工作及后續數據支撐的需要[1]。大數據分析平臺的邏輯架構如圖1所示。
(1)基于Hadoop架構的系統設計
首先,Hadoop支持超大文件存儲和處理,一般來說,HDFS存儲的文件可以支持TB和PB級別的數據。

圖1 大數據分析平臺的邏輯架構
其次,Hadoop具備高可用能力,可以快速應對硬件故障。在集群環境中,硬件故障是常見性問題,當有上千臺服務器連在一起時,故障率會增高,因此故障檢測和自動恢復HDFS文件系統是平臺的核心能力。假設某一個DataNode節點掛掉之后,因為數據備份,還可以從其他節點里找到。NameNode通過心跳機制來檢測DataNode是否還存在。數據自動保存多個副本,副本丟失后自動恢復。可構建在廉價機上,實現線性(橫向)擴展,當集群增加新節點之后,NameNode也可以感知,將數據分發和備份到相應的節點上。 最后,具備流式數據處理能力 ,HDFS的數據處理規模比較大,應用程序能以流的形式訪問數據庫。處理能力的核心的是數據的吞吐量,而不是訪問速度。訪問速度最終是要受制于網絡和磁盤的速度,機器節點再多,也不能突破物理的局限。HDFS具有高吞吐量。
但是,Oracle在企業數據庫領域耗時30多年建立起來的核心地位并不會很快消失,企業的大量歷史數據沉淀在Oracle中,基于Oracle進行數據整合和預處理,會大幅度提升開發效率,但是隨著業務的升級改造,新產品研發中,高性價比的研發投入在Hadoop架構下的高可擴展等優勢更加明顯。
總之,基于安全、穩定、高效的原因考慮,保留傳統Oracle數據平臺的數據分析功能,將傳統數據平臺中壓力較大的計算任務剝離,并降低數據存儲的容量,充分利用Hadoop平臺的分布式處理優勢,解決數據處理效率問題,支持向傳統平臺的數據回滾。數據分析平臺前期主要完成數據存儲、簡單查詢、各項管理工具、開發工具的應用實施,必須由下列組件完成相關的功能。所需的基礎組件如圖2所示。
(2)建設ETL調度系統
建設穩定、高效的ETL機制對數據進行清洗、轉換、加載等操作,并實現每日增全量數據的自動化加載;同時要實現對ETL任務的監控與ETL任務報錯后的跟蹤處理并保留一定時間的ETL日志。

圖2 Hadoop基礎架構組件
(3)整合ODS貼源層數據,建立常用基礎寬表
數據拆分系統與數據下載系統是兩個獨立的用于省內數據下發的系統,存在數據重復、互為補集等情況,需將兩處共有數據合并處理,整合形成操作數據存儲(Operational Data Store,ODS)貼源數據層。同時,各部門基于日常業務需求和技術應用,將多個數據表進行關聯,建立常用基礎寬表,以滿足客戶信息查詢、交易明細查詢、監管數據調取等日常工作需求,提高數據提取效率。
2.2.1數據導入
數據采集能從不同數據源中進行指定規則的數據提取作業,抽取后的數據存儲支持落地與不落地兩大類進行,抽取后的數據可以為數據轉換環節進行處理提供輸入,也可以直接進行處理或者加載。
數據采集采用多樣性的接口方式,除了支持傳統的JDBC/ODBC接口、FTP文件接口[2],從抽取支持的實時性來看,支持批量數據抽取;從抽取方式來看,包括全量抽取和增量抽取兩種方式,其中全量抽取可將所有歷史數據一次性抽取完成;增量抽取根據規則要求進行抽取。
數據加載功能包括數據初始化工作、文件加載、壓縮加載、不落地加載等。數據加載功能具備將采集、處理后的數據源文件保存到數據庫中。支持加載時事物提交的參數配置,允許設定數據文件相關輸入路徑與加載文件匹配規則等信息,由數據裝載完成發現文件、獲取文件、加載數據、數據校驗等操作流程后完成數據入庫操作。
在加載實現過程中支持提供不同類別的行為定義腳本,數據加載執行組件將根據定義行為腳本類型調起相應的腳本執行來加載到數據。數據加載結束或失敗時,都需要向在ETL系統相應的數據庫日志表中記錄操作日志,為后續數據稽核與問題排查提供詳細信息。
數據加載主要滿足以下功能:
(1)數據滿足自動加載和手動加載兩種方式,自動方式基于調度程序,定期定時執行抽取任務;且支持文件落地和不落地兩種存儲加載(落地加載是將數據源保存在ETL物理服務器中,進行接口保存加載。不落地加載是指將數據源寫入緩沖池中,不在物理機上保存而實現的加載)。
(2)支持多任務的并行加載,支持多個數據庫連接同一裝載任務的并發執行。
(3)加載過濾,即具備基于數據屬性值的過濾加載。
(4)數據裝載需要支持Oracle數據、TXT文本、Excel、CSV等多種不同數據格式進行加載。
(5)提供圖形化裝載界面對整個ETL裝載過程進行監控,包括文件名稱、目標表名稱、數據日期、加載開始日期、加載結束日期、加載狀態、成功筆數和失敗筆數等。
(6)數據裝載過程需要對錯誤數據進行過濾,在對記錄進行過濾的同時,能將發生錯誤的數據記錄到相應的錯誤表中,并給出錯誤原因。
(7)具備加載對象的參數配置功能,將數據加載過程中需要設置的命令、參數、規則進行配置,控件會自動生成相應的可執行代碼來完成作業。
2.2.2數據清洗
(1)數據探查
根據數據標準通過多維度視角進行數據的全面探查,系統使用者可以通過數據實體關系、主要指標項,數據實體輪廓、內容形式、自定義規則以及問題數據批注等方面進行數據的探查。
(2)指標探查
通過對數據實體評估指標進行探查分析,對于造成數據質量問題進行定位;通過評估指標規則,對表中的字段進行探查;可通過單一規則或組合規則進行明細數據記錄級的探查。
(3)內容探查
①獨特值探查
允許查看某個值在屬性中的重復頻率、哪些記錄包含該獨特值以及對實體表中各屬性的獨特值個數排序。
②模式探查
描述數據值字符形狀以標識格式偏差,其中 a 等同于字母、 d 等同于數字、下劃線 (_) 等同于空格(相對于其他約定)。例如,aaaa 模式(一行四個字母)將表示為“a4”。因此,數據值“Jane Rizzo”將表示為“a4_a5”。
③掩碼探查
將文本字符標識為字母、數字或特殊字符。掩碼模式是掩碼編碼的形狀,它指明了單詞、短語或數字的常見質量。例如, A 等同于一個字母, N 等同于一個數字。因此,如果產品代碼為 1H-3389BD,則其掩碼為 NA-NNNNAA。
(4)相似數據清洗檢查
利用模式匹配,對相似數據記錄進行去重,并且滿足相關記錄查詢;通過計算數據記錄的相似性,對相同或者相似的記錄進行分組,通過數據責任人確認進行去重或合并。
(5)最佳匹配記錄清洗
匹配記錄后,在匹配的記錄組中標準化并標記最佳記錄。根據用戶定義的規則標準化通過常見關鍵詞鏈接的一組匹配的記錄中的數據,例如,需要將一個匹配記錄中的出生日期或聯系方式填充到所有其他匹配記錄中[3]。用于最佳匹配的最常見規則包括:1字符值和數字值的上限/ 下限,2最長值和最短值,3最常出現值和最少出現值,4指定輸入源中的值,5最新的值和最舊的值。
2.2.3數據治理
數據治理過程需要逐一確定具體數據問題的原因,方可達到有效,提升數據質量[4]。數據質量問題主要體現在:數據質量不高、數據結構復雜、數據保存周期不一致、缺少數據字典等方面。建立數據分析平臺可以盡可能形成干凈、統一的數據源,為業務支撐提供數據支持。
(1)提升數據質量:對數據源系統及關聯源系統進行數據分析,排查數據重復的具體原因,搭建策略模型,以重新獲取缺失數據及空值數據,使得進入分析平臺的數據字段在數據類型、字段中文名稱、字段英文命名上的一致性。
(2)統一數據結構:按分門別類的對來源于零散的多個業務源系統數據進行存放,并進行簡單的匯總加工,以便后續直接使用。
(3)統一存放周期:通過整合層對核心數據(如:賬戶余額、協議等)形成歷史拉鏈表,統一數據周期,以支持長期歷史趨勢分析。
(4)統一數據字典:多渠道、多角度分析源系統數據,形成統一數據字典,并可對數據字典進行統一版本管理。
2.2.4ETL任務調度與監控
統一調度包括統一調度配置、統一調度運行、調度策略、統一調度監控等模塊。ETL調度與監控:通過對ETL整個處理流程中的獨立的ETL數據處理環節(如數據抽取、轉換或加載)進行監控,以及在監控過程中根據每個處理環節的處理任務自動生成該處理環節的監控指標,從而一方面可以及時發現問題數據以及進一步分析問題數據產生的原因,因而提高了ETL的監控效率以及提高了監控結果的準確性。通過郵件、短信等系統自動報警功能,減少人工監控,從而在進一步提高效率的同時還簡化了ETL監控的實現過程,減少了人為因素的影響從而進一步提高了 ETL監控結果以及對ETL處理過程的質量判斷的準確性[5]。
系統應用監控:系統應用監控主要針對即席查詢應用的監控。在硬件及操作系統層面,由全行統一的運行平臺統一進行監控。數據庫監控包括數據庫軟硬件監控、數據庫空間監控以及數據庫資源監控。
平臺安全設計考慮下面內容:通信使用SSL/HTTPS協議,保證傳遞數據間的安全性。數據庫中密碼采用MD5或DES加密以保障安全。系統資源采用獨立授權,采用逐級管理員方式保障用戶登錄合法性。系統日志記錄用戶各種操作,確保真實性,以便對系統進行審計[6]。系統提供備份和恢復知識庫的能力。在系統出現故障的時候,能夠收集錯誤信息。
對于數據倉庫的信息展示,需要提供靈活而又安全的訪問控制。面對現在的信息展示手段和技術的更新換代,數據倉庫的信息安全控制需要全面的滿足當前豐富的業務場景的需要。
搭建統一門戶,支持單點登錄,同步辦公門戶系統用戶信息,提供單點登錄的支持方案,支持采用第三方安全認證平臺(如AD/LDAP)。
安全控制:權限控制,與單位現有IT基礎架構緊密集成,集中管理用戶身份驗證和訪問授權,符合各部門安全策略要求[7]。
用戶管理是控制用戶功能權限、數據訪問權限、資源訪問權限的基礎。支持按用戶、用戶組、角色進行管理;支持多套應用系統共用同一套用戶管理系統。
用戶管理包括用戶、角色的管理。用戶是登錄系統的基本單位,一個用戶可以屬于多個機構。角色是一組權限的集合,通過給用戶或用戶組賦予角色,使之獲得相應的權限[8]。定義系統有的操作權限,或者說功能權限。
整個系統中有一個超級管理員對所有的管理員、用戶進行管理。
借助Hadoop+Oracle混合技術架構,發揮Oracle在垂直應用行業的先天優勢和Hadoop在云平臺的并行計算及分析優勢,構建一個多層平臺架構,包括數據導入、清洗、治理和監控等核心模塊,解決行業應用中的數據匯總和綜合分析問題,并對外提供安全可擴展的數據服務能力。在應用實施中,通過在Hadoop集群上建立常用基礎寬表,可以滿足客戶信息查詢、交易明細查詢、監管數據調取等日常工作需求,提高數據提取效率。