劉雪劍 徐贏 張輝 馬崇瑞
(1.北京中電普華信息技術有限公司 北京市 100000 2.國網遼寧省電力有限公司大連供電公司 遼寧省大連市 116000)
數據中心是公司重要的基本支持平臺。在2019年,該公司將統一組織數據中心技術能力規劃和產品選擇。在全方位服務的統一數據中心分析領域的現有組件的基礎上,將引進成熟數據中臺產品來改進數據中心組件系統。
根據前期公司規劃的數據中臺能力架構,數據中臺技術能力主要包括數據接入、存儲計算、數據分析、數據服務、數據資產管理、運營管理六方面。
根據數據中臺技術能力架構,數據接入、數據計算存儲、數據分析、數據服務、數據資產管理、數據運營管理六方面能力對應國網公司16 種技術組件,對應1 種公司自研組件,六大能力。
數據接入方面,包括DataHub、DTS、DataWorks DI 三種組件,其中DataHub 組件功能類似開源Kafka 組件,主要用于結構化數據增量和采集量測類數據實時接入;DTS 組件功能類似Oracle OGG組件,主要用于存儲結構化數據的關系型數據庫間的數據復制和遷移;DataWorks DI 組件功能類似Informatica 組件,主要用于結構化數據全量抽取或增量標識的數據增量抽取。
數據存儲計算方面, 包括MaxCompute、DRDS、OTS、TSDB、Blink、MaxcomputeSpark、GraphCompute、OSS總計8種組件,其中MaxCompute 組件在數據存儲上類似開源Hive+HDFS,同事提供分布式數據倉庫和離線計算服務,Maxcompute Spark 提供內存計算服務,MaxCompute Analytic 類似GBase 數據庫,提供即席查詢和多維匯總計算能力;DRDS 組件與RDS 組件結合提供分布式關系數據庫服務;OTS 組件功能類似開源HBase 數據庫,用于海量結構化數據存儲;TSDB 組件功能類似開源OPEN TSDB組件,主要用于采集量測類時序數據存儲;Blink 組件功能類似開源Flink 組件,用于流式數據實時計算,OSS 組件為對象存儲,可用于存儲非結構數據。
數據服務方面, 包括DataWorks 組件和CSB 組件,用于數據服務封裝,服務封裝后統一注冊至云上API 網關對外服務。
數據分析方面,包括QuickBI 組件,用于數據自助式分析和報表可視化展示。
數據資源管理和運營管理方面,包括DataWorks、DataQ 組件,其中DataQ 組件主要用于標簽管理,數據資源管理和運營管理能力由DataWorks 統一提供。
以應用需求為導向,結合國網技術產品特點,設計構建數據中臺總體架構,全面支撐離線數據分析、實時計算、非結構化數據三類應用場景構建。數據中臺總體架構如圖1所示。
(1)實時計算場景:該場景重點基于結構化數據、量測數據,經過數據實時接入、流式計算處理,以服務訂閱的方式為應用提供實時數據。

圖1:國網數據中臺總體架構圖
(2)離線數據分析場景:該場景重點基于結構化數據、量測數據,經過數據接入、數據整合(量測數據關聯計算或清洗轉換)、(寬表)邏輯處理或分析模型運算、服務封裝發布等環節后,滿足應用T+1 或H+1 數據分析需求。
(3)非結構化數據場景:該場景基于非結構化數據,經過非結構化對象存儲、非結構化內容提取分析、結構化數據轉換等環節后,滿足應用對非結構化數據的分析處理需求。
此次數據中臺試點建設涉及離線數據分析場景和實時計算場景。多維精益管理體系頻道化報表、現代(智慧)供應鏈智慧運營中心、數字化審計涉及離線數據分析場景;供電服務指揮平臺、同期線損主要涉及量測數據計算場景。
3.2.1 數據流轉架構
對2019年各試點單位多維精益管理體系頻道化報表、現代(智慧)供應鏈智慧運營中心、數字化審計等業務邏輯和數據邏輯進行分析提煉后,形成基于結構化數據分析計算的典型數據流轉結構。
結構化數據在中臺流轉主要經過貼源層、共享層和分析層三層。其中貼源層定位為貼近源業務系統,主要存儲源業務系統的存量及增量數據,其表結構與源業務系表結構基本保持一致;共享層定位為模型層,用于存儲按照SG-CIM 模型整合轉換的模型表;分析層用于存儲按業務邏輯處理后的結果表。具體的結構化數據流向如下:
(1)源業務系統至貼源層:源系統數據通過數據接入工具全量抽取到中臺貼源層中,并根據實際業務需求配置增量數據接入的頻度。
(2)貼源層至共享層:依據國網下發的SG-CIM 模型,通過數據集成開發工具在共享層建模,按照模型將貼源層數據進行清洗整合,形成模型表存入共享層。
(3)共享層至分析層:依據具體的業務場景需求,對共享層的物理模型表按照具體業務分析計算邏輯,進行數據開發并形成結果表存儲至分析層。
3.2.2 技術架構
貼源層使用分布式數據倉庫MaxCompute,源業務系統數據通過DataWorks、DTS、OGG、DataHub 組件接入;共享層使用分布式數據倉庫MaxCompute,通過DataWorks 組件完成貼源層數據表到SG-CIM 模型層數據表轉化;分析層使用MaxCompute Analytic、DRDS(RDS),基于業務邏輯通過DataWorks 組件完成業務分析計算后的結果表開發;通過DataWorks 組件對計算結果封裝為Webservice、Restful 等類型的數據服務API,發布注冊至API網關后,供外部報表工具調用進行可視化展示。
源端數據接入:針對源端為Oracle 數據庫的數據表,采用“定期全量抽取”和“初始化存量抽取+增量接入定期合并”的方式接入數據中臺,具體如下:
全量抽取:使用DataWorks DI 組件通過Oracle 數據庫只讀賬號直連源端數據庫,將全量數據的一次性批量接入和定期全量寫入
MaxCompute。
增量接入:使用OGG+DataHub 組合方式,源端業務系統數據庫OGG 服務增量數據實時同步至數據中臺OGG 目標端服務,經DataHub 插件解析后,以流方式通過DataHub 寫入MaxCompute 貼源層增量表中;增量數據按業務需要通過DataWorks 與上一周期數據進行合并。
數據清洗整合:按照SG-CIM 模型,使用DataWorks 工具在共享層中創建模型物理表,基于模型表與貼源表的映射關系和清洗規則,形成SQL 計算邏輯,執行數據同步任務將貼源層數據進行轉換寫入共享層模型物理表。
數據分析計算:基于DataWorks 可以對貼源層和共享層模型數據進行分析計算,使用封裝好的數據分析服務及算法模型服務,將數據通過DataWorks 數據集成同步至分析層DRDS(RDS)或MaxCompute Analytic,形成統計指標結果、主題關聯寬表等,供上層應用使用。
進行數據分析計算時,根據模型數據的復雜度和業務需求,合理選用DataWorks 的數據分析計算工具(包括ODPS Spark、PyODPS 或ODPS SQL)。ODPS SQL 適合處理邏輯清晰,針對某一行或者多行不會進行多次迭代計算,通常循環一次就可實現的數據開發場景。需要多次迭代或者動態查詢并計算的場景結合自身開發能力,選用ODPS Spark 或者PyODPS 進行數據開發。通過編寫數據分析計算腳本或者程序,進行計算匯總、形成寬表,再通過DataWorks DI 將匯總數據同步到分析層DRDS 中。
數據服務:基于DataWorks 數據服務模塊,將分析層計算結果數據封裝為數據服務API 接口,發布至API 網關,在API 網關組件上對發布的API 進行調用授權許可。根據調用規模采用不同方式,當單個數據服務返回結果超過2000 條或大小超過5MB 時,使用數據分頁查詢機制,通過構建帶分頁功能的數據服務,業務應用調用數據服務時指定分頁頁數和每頁數據條數參數,通過多次調用完成全部數據結果查詢。
3.3.1 數據流轉架構
根據公司采集量測類應用的數據需求,采集量測類數據包括離線計算及實時計算兩類,具體的量測數據流轉為:
(1)實時計算類采集量測數據接入。
(2)實時數據關聯計算。
(3)實時計算結果發布。
(4)實時計算維度表映射。
3.3.2 技術架構
2019年部分省公司未部署TSDB 數據庫,試點驗證主要采用Maxcompute 數據庫和OTS 數據庫,經與原廠技術專家溝通,在采集量測類應用技術架構中,建議采用TSDB 存儲處理采集量測數據,計算結果可基于MaxCompute Analytic 構建數據服務,同時TSDB與其他中臺組件集成性還需要進一步驗證。
接入層:采集量測類數據使用DataWorks 從大數據平臺HBase全量遷移;使用OGG + DataHub 實現增量數據抽取。檔案結構化數據使用dataworks 工具實現全量數據抽取;使用OGG + DataHub實現增量數據抽取。
計算存儲層:通過MaxCompute 構建離線數據場景,通過TSDB、OTS 構建準實時數據場景,通過DataWorks+MaxCompute開展離線計算、統計分析,通過Blink+DataHub 開展實時計算。
數據服務層:基于DataWorks 提供Webservice、Restful 等API服務,通過QuickBI 服務開發相關數據報表。
源端為Oracle 表,通過OGG+DataHub 方式進行接入,通過OGG 程序將Oracle 生產庫中數據同步至實時數據分發平臺DataHub,通過Blink 流計算組件將DataHub 中數據進行清洗換為標準模型后雙發至TSDB/OTS 和MaxCompute 中。
源端為增量E 文件,通過自研解析工具Eparse 解析E 文件方式進行接入,利用采集量測組件SG-ETL 將原始E 文件轉換為標準E 文件,自研解析工具Eparse 解析標準E 文件后發送數據至DataHub,通過Blink 組件將DataHub 中數據雙發至TSDB/OTS 和MaxCompute 中。
采集量測存量數據存儲在全業務統一數據中心HBase 中,將全業務統一數據中心HBase 中存量量測數據通過DataWorks 組件遷移至MaxCompute。DataWorks 數據開發中通過OPDS SQL 將HBase數據表中RowKey 拆分寫入到MaxCompute 中。
通過“消息隊列+實時計算”組件完成采集量測類實時計算,實時計算引擎通過實時消費DataHub 數據和維度表(實時計算關聯的全部表都是維度表,如用戶檔案表等)關聯完成實時計算,實時計算維度表類型包括分布式列式數據庫OTS、分布式數據倉庫MaxCompute 和關系型數據庫DRDS/RDS 中,實時計算結果數據按需支撐量測業務應用。
根據不同業務的分析計算需求,可按需將實時計算結果數據存儲至分析型數據庫(支撐數據服務發布)、分布式數據倉庫(支撐離線類分析計算)、消息隊列(支撐數據實時發布訂閱)及時序數據庫(支撐時序數據處理)以支撐業務應用。
通過數據中臺DataWorks 組件實現數據服務的快速封裝發布,支持向導模式和SQL 模式兩種模式,通過API 網關實現數據服務的統一管理,支持DRDS、RDS、OTS 等數據源。