1、 什麼是數據湖
關於數據湖,如今是衆說紛紜,有人認爲數據湖只是數據存儲,是舊瓶裝新酒,沒啥新義;也有人認爲數據湖主要用於冷數據的備份,時間一長,基本等同於數據沼澤;但更多的人傾向於數據湖是解決現有大數據場景問題的一套完整的解決方案。架構
亞馬遜定義的數據湖是一個是集中式存儲庫,容許您以任意規模存儲全部結構化和非結構化數據。您能夠按原樣存儲數據,並運行不一樣類型的分析,從控制面板和可視化到大數據處理、實時分析和機器學習,以指導作出更好的決策。
微軟定義的數據湖是微軟Azure公共雲平臺的一部分,該平臺包括200多種產品和雲服務。它爲結構化,半結構化或非結構化數據提供了無限的存儲空間。它能夠用於存儲任何大小的任何類型的數據。
參考主流公有云服務提供商的數據湖產品,如今的數據湖不只包括數據的存儲,還包括數據的分析計算,是一整套解決方案。實時金融數據湖,是數據湖在中原銀行實時場景下的理解還有應用,但願本文能夠給你們帶來必定的參考。運維
2、 背景概況
(一) 建設背景
-
銀行的決策方式正發生巨大的變遷
銀行傳統的數據分析主要針對收入、成本、利潤、監管等財務數據分析。隨着互聯網金融的發展,銀行業務逐步受到擠壓,如今銀行須要更多的瞭解客戶,作有針對性的實時化營銷和決策分析。即決策方式已經從財務分析轉向面向客戶(KYC)的實時分析和決策。機器學習 -
在銀行體系下,傳統的數據倉庫還沒法替代
銀行面向收入、成本、利潤、監管等財務數據的分析,須要規範、精準的數據加工,而面向規範、精準加工的傳統數倉體系,可以較好的解決問題,這已經造成一個共識並存在很長時間,而且如今沒有能夠徹底替代數據倉庫的方案,即銀行的數據倉庫體系在很長時間內仍會是主流方案。學習 -
銀行數據倉庫沒法有效支持創新業務發展需求
數據倉庫總體變動困難,單位存儲成本較高,不適合海量日誌、事件等變動頻繁,實時性高的數據,且對半結構化和非結構化數據兼容差等,也決定了傳統數倉沒法有效支持銀行業務不斷創新發展的需求。大數據
(二)實時金融數據湖
實時金融數據湖建設背景闡明瞭銀行數據分析決策方式的改變,說明了銀行傳統數據倉庫的優點和不足,引出須要建設實時金融數據湖來應對業務不斷髮展的需求。總體上,實時金融數據湖應具有如下三個特色:優化
-
開放性:實時金融數據湖追求海納百川,不只要支持傳統面向財務數據分析,還須要非財務數據分析,總體上不限場景。url
-
時效性:實時金融數據湖須要具有T+0實時性,實現T+0實時BI和實時決策。spa
-
融合性:實時金融數據湖應包含數據倉庫,與銀行數據倉庫具有架構融合,造成統一數據視圖。
實時金融數據湖方案融合理念,包括數據匯聚的融合,規範設計的融合,數據管理的融合,技術實現的融合,物理位置的融合和數據存儲的融合。經過數據湖融合理念,讓數據湖和數據倉庫本來兩個獨立的集羣,造成湖倉一體化方案,以更好的助力於銀行分析業務發展。.net
3、 體系架構
建設一個具備融合架構的實時金融數據湖,須要一個完整的體系架構。下面將從架構、平臺、場景等方面,依次介紹。設計
實時金融數據湖功能架構上,數據源支持結構化、半結構化和非結構化數據源;經過統一數據接入平臺,按業務數據的不一樣類型,寫入對應的存儲;數據存儲有數據倉庫和數據湖,湖倉數據支持智能數據分佈;在數據存儲之上,提供數據服務和數據開發平臺,全面支持數字化應用;其中數據開發平臺,不只僅針對銀行傳統離線數據任務開發,還包括實時數據任務開發,是一站式數據開發平臺。
實時金融數據湖邏輯架構上,存儲層有數據倉庫和數據湖,數據倉庫是面向規範精準的財務分析場景,針對的是結構化數據的分析,數據湖是面向非財務分析場景,支持結構化、半結構化和非結構化數據,存儲層實現集羣級冷熱數據分級管理;計算層實現統一元數據服務,包括數據倉庫的元數據和數據湖中的元數據,存儲層計算層是存算分離的架構;服務層支持聯邦數據計算和數據服務API,聯邦數據計算是一個聯邦查詢引擎,能夠實現數據湖和數據倉庫數據的跨庫查詢。產品層使用統一的服務層,實現統一的數據查詢分析。
經過實時金融數據湖架構的介紹,咱們對它應具有的能力有了必定的認識。下面將從工程實踐角度進一步介紹,總體實踐基於開源方案實現,有存儲層、表結構層、查詢引擎層和聯邦計算層。存儲支持HDFS和對象存儲S3或OSS,表結構支持Iceberg、Hudi和Delta三種開源數據湖方案,對接Flink使用的是Iceberg。查詢引擎支持Flink、Spark, Hive等;聯邦計算層開源方案基於Presto,同時也在調研公有云服務提供商的聯邦查詢引擎。存儲層和表結構層,支持Upsert/Delete、Table Schema和ACID語義保證,兼容存儲非結構化和半結構化數據。查詢引擎層和聯邦計算層,支持統一數據開發平臺,實現一站式實時、離線數據任務的開發、管理、運維工做。
隨着銀行數字化轉型工做的不斷推動,銀行在營銷、風控、報表等業務的實時性要求愈來愈高且需求旺盛;但流計算技術使用門檻高,不適合普通銀行業務人員作通用業務需求開發;所以銀行須要統一的流計算開發平臺,提供通用化的實時任務開發解決方案,來解決銀行實時業務的需求。
我行流計算開發平臺以Flink引擎爲基礎,支持實時任務的開發、管理和運維工做。平臺統一資源調度支持K8s,具備雲原生特性;且支持多租戶管理和多項目管理,作到不一樣項目組邏輯和物理上隔離。經過流計算開發平臺的不斷推動,我行
數據開發人員可以使用SQL的方式實現實時數據任務需求的自主化開發。
流計算平臺經過Flink引擎,能夠作到數據處理的準確性和實時性,通用的流式數據處理流以下所示,數據實時寫入Kafka後,通過Flink處理後實時寫入目標端Kafka,若是涉及維表數據,使用ES進行存取。
上面通用流式數據處理流程,咱們稱爲「直通式」實時場景架構,它架構簡單,能夠支持數據實時處理,數據不落地直通應用,通常用在實時決策場景。以貸後臨期催收爲例,貸後臨期催收依賴賬戶餘額,交易金額和本期應還金額,決定貸款是經過短信、智能語音仍是人工電話的方式催收;傳統的離線數倉是T+1時效性,會有客戶已經還款但仍是打電話催收的問題。經過「直通式」場景架構,實時處理決策,完全解決了誤打電話的問題,有效提高了客戶體驗。
簡單的實時決策場景能夠經過「直通式」場景架構解決,但在實時BI場景下,問題和實時決策場景又不同。下面看一個實時BI的需求,咱們須要實時獲取過去一段時間到如今理財產品銷量信息,這個需求須要實時數據,需求中提到一段時間的數據,涉及歷史數據查詢,且理財信息業務邏輯複雜,涉及較多的業務邏輯,有較多的表JOIN。
簡單來講,上面的場景涉及多表Join、歷史數據查詢,使用「直通式」實時場景架構,沒法有效處理。金融場景業務大都邏輯複雜,關聯依賴表衆多,涉及歷史數據查詢。所以,咱們須要探索新的區別於「直通式」場景架構新的架構來有效解決問題。
這個新的架構是「落地式」實時金融場景架構,如圖所示,數據實時寫入Kafka,Flink讀Kafka數據實時處理不變,Flink處理的中間結果數據先寫入到數據湖中,再逐步進行處理,造成最終處理結果,結果經過Flink, Hive, Presto,Spark等查詢引擎對接應用。經過上面流程,針對實時BI需求,咱們能夠將業務邏輯拆分,以此來支持歷史數據查詢和複雜SQL查詢,更大程度的擴展實時金融場景。
上面介紹了實時金融數據湖的架構、工程實踐、流計算平臺和實時金融場景,系統說明了實時金融數據湖應具有的能力,總體上有如下三點:
-
開放性:支持大量金融場景,兼容支持複雜SQL查詢和歷史數據查詢。
-
時效性:支持T+0數據分析,支持實時BI和實時決策;支持「直通式」和「落地式」兩種應用對接方式
-
融合性:實現流批一體的結構化數據存儲、查詢、分析,兼容存儲非結構化數據和半結構化數據。
目前我行實時金融數據湖已上線運行,完成上下游各個平臺的對接,打通了數據壁壘,開放了平臺開發、存儲和分析算力,各開發團隊都可自主調用開發。經過實時金融數據湖的建設,支持了20+的金融場景,實現T+0數據時效性,且在存儲成本上,相對於數據倉庫下降5倍。
4、 應用場景
實時金融數據湖在實時決策中典型應用是實時反欺炸,我行在上線實時反欺炸平臺以後,可日均處理140w條風險數據,日均阻斷110次,預警108次,總體涵蓋交易監測、線上開戶、信用卡申請、異常客戶操做等複合場景。
實時金融數據湖在實時BI場景下的典型應用是客戶實時洞察平臺,經過實時洞察平臺的應用,現已落地實時BI分析用例26800個,實時BI分析平臺平均月活10000+,天天輔助分析各種實時BI需求30000+,總體打通實時分析類場景經常使用的需求和服務。
5、 將來規劃
實時金融數據湖是一個融合的數據湖方案,目標是解決金融行業大數據場景下,特別是實時數據在分析處理過程當中面臨的問題,將來須要在技術和場景上持續探索。技術上,實時金融數據湖會推動流批一體、聯邦查詢、統一元數據管理、統一開發平臺等技術持續落地,經過技術優化各平臺使用體驗;場景上,實時金融數據湖會深刻結合場景,真正走進業務,充分理解並幫助業務解決實時、批數據處理場景下的痛點,實現數據、平臺、業務的有機融合,真真正正讓平臺更實用,更好用。
做者:白學餘
版權歸做者全部,任何形式轉載請聯繫做者。
it_hr@zybank.com.cn