摘 要:隨著企業(yè)數(shù)字化轉(zhuǎn)型的不斷推進(jìn),業(yè)界對海量數(shù)據(jù)的存儲、計算和價值挖掘的體系方法也在不斷的演進(jìn),本文主要分析了企業(yè)數(shù)據(jù)湖建設(shè)的方法和理念,對比了數(shù)據(jù)湖和傳統(tǒng)數(shù)據(jù)倉庫的特點,推演了數(shù)據(jù)湖架構(gòu)的升級演進(jìn)過程,并且通過實際的案例展示了企業(yè)數(shù)據(jù)湖的建設(shè)流程和實踐經(jīng)驗。
關(guān)鍵詞:數(shù)據(jù)湖;數(shù)據(jù)倉庫;數(shù)據(jù)治理;計算引擎
0? 引言
在數(shù)據(jù)量爆發(fā)式增長的數(shù)字經(jīng)濟(jì)新時代,數(shù)據(jù)已經(jīng)成為與土地、勞動力、資本和技術(shù)并列的生產(chǎn)要素之一,是驅(qū)動數(shù)字經(jīng)濟(jì)進(jìn)步的推動劑。數(shù)字資源作為企業(yè)的核心資源,得到了前所未有的重視,數(shù)字化轉(zhuǎn)型也成為大中型企業(yè)IT建設(shè)的重點。一般來說,企業(yè)數(shù)字化轉(zhuǎn)型的過程往往都經(jīng)歷一個自然的演化周期:最初階段的數(shù)據(jù)集市(DataMart)將各類應(yīng)用程序所產(chǎn)生的數(shù)據(jù)統(tǒng)一存儲在統(tǒng)一的集中式數(shù)據(jù)庫內(nèi)[1];在此基礎(chǔ)上,數(shù)據(jù)倉庫(Data Warehouse)按照主題領(lǐng)域?qū)⒍鄠€數(shù)據(jù)集市集中整合,主要用于歸檔、綜合和深層的數(shù)據(jù)分析[2-3],但其針對非結(jié)構(gòu)類數(shù)據(jù)和實時處理水平較差[4-5];而數(shù)據(jù)湖(Data Lake)是近期比較熱門的概念[6-7],其是大數(shù)據(jù)存儲、處理、分析、展示的基礎(chǔ)架構(gòu)。數(shù)據(jù)湖以數(shù)據(jù)為導(dǎo)向,能夠?qū)崿F(xiàn)全量數(shù)據(jù)采集、存儲和多范式處理以及數(shù)據(jù)全生命周期管理,主要解決中大型企業(yè)對存儲海量任意類型數(shù)據(jù)、完善的數(shù)據(jù)資產(chǎn)管理能力、更多樣的分析能力、更復(fù)雜的企業(yè)級應(yīng)用支撐的訴求。本文將重點闡述數(shù)據(jù)湖的特點和架構(gòu),并以實際案例為基礎(chǔ),總結(jié)并探討中大型企業(yè)在數(shù)字化轉(zhuǎn)型過程中如何建設(shè)并升級成數(shù)據(jù)湖的經(jīng)驗。
1? 數(shù)據(jù)湖的特點
數(shù)據(jù)湖是數(shù)據(jù)倉庫在企業(yè)數(shù)字化轉(zhuǎn)型過程中逐漸演變而來的,要理解數(shù)據(jù)湖首先要說明其和數(shù)據(jù)倉庫之間的區(qū)別。首先,數(shù)據(jù)倉庫的主要目標(biāo)用于歷史數(shù)據(jù)的存儲和處理,其存儲的數(shù)據(jù)是高度結(jié)構(gòu)化的并且一般以表格形式和結(jié)構(gòu)進(jìn)行存儲,而數(shù)據(jù)湖可以存儲任意不同類型的海量數(shù)據(jù),除了結(jié)構(gòu)化數(shù)據(jù),還包含半結(jié)構(gòu)化和無結(jié)構(gòu)的媒體數(shù)據(jù)。例如海量的圖片、視頻、PDF、CSV、XML等。其次數(shù)據(jù)倉庫存儲的主要是加工后的業(yè)務(wù)數(shù)據(jù),其本身是經(jīng)過處理過的,而數(shù)據(jù)湖更多存儲的是未經(jīng)過處理的原始數(shù)據(jù),無論業(yè)務(wù)數(shù)據(jù)的內(nèi)容、格式和模式都是原封不動的,無需進(jìn)行結(jié)構(gòu)化處理,是生產(chǎn)數(shù)據(jù)的副本。第三,對于數(shù)據(jù)的Schema來說,數(shù)據(jù)倉庫是在數(shù)據(jù)寫入之前完成設(shè)計的,即先要根據(jù)業(yè)務(wù)來定義數(shù)據(jù)模型,在數(shù)據(jù)導(dǎo)入時需要完全跟既定數(shù)據(jù)模型吻合,其好處是數(shù)據(jù)、業(yè)務(wù)耦合度高,但靈活性差,而數(shù)據(jù)湖架構(gòu)認(rèn)為業(yè)務(wù)的不確定性是常態(tài),通過保持?jǐn)?shù)據(jù)原始狀態(tài),保留一定的靈活性,將Schema的設(shè)計延后,放在數(shù)據(jù)讀取前,讓數(shù)據(jù)具備靈活貼合業(yè)務(wù)的能力,更加適合高速變化的業(yè)務(wù)需求。第四,數(shù)據(jù)倉庫具備批處理流程、商業(yè)BI分析和基本的可視化等分析能力,數(shù)據(jù)湖在數(shù)據(jù)倉庫的基礎(chǔ)上補全實時處、交互式分析等技術(shù)能力,根據(jù)企業(yè)的實際需要增加流式計算引擎、交互式分析引擎、機器學(xué)習(xí)引擎、大規(guī)模圖計算引擎等。最后,兩者面向的用戶不同,數(shù)據(jù)倉庫主要面向業(yè)務(wù)分析人員,而由于數(shù)據(jù)湖具備的上述特征,其對用戶的綜合能力要求更高,目標(biāo)用戶主要是數(shù)據(jù)科學(xué)家、數(shù)據(jù)開發(fā)人員等。
2? 企業(yè)數(shù)據(jù)湖架構(gòu)演進(jìn)
數(shù)據(jù)湖作為新一代企業(yè)級數(shù)據(jù)基礎(chǔ)設(shè)施,其架構(gòu)的核心主要包括三部分內(nèi)容:分布式對象存儲、豐富的數(shù)據(jù)計算引擎以及全鏈路的數(shù)據(jù)安全管控。數(shù)據(jù)湖架構(gòu)應(yīng)充分考慮可擴(kuò)展性,隨著數(shù)據(jù)不斷的在數(shù)據(jù)湖累積、沉淀和演化以及面向數(shù)據(jù)的業(yè)務(wù)需求不斷擴(kuò)張和升級,數(shù)據(jù)湖不僅要提供可持續(xù)提升的存儲及計算能力,還要不斷加強數(shù)據(jù)管理。例如企業(yè)數(shù)字化轉(zhuǎn)型初期可能只需要對數(shù)據(jù)進(jìn)行跑批處理能力并通過定義好的數(shù)據(jù)駕駛艙或數(shù)字大屏進(jìn)行展示即可,但隨著業(yè)務(wù)規(guī)模的不斷擴(kuò)張以及業(yè)務(wù)對數(shù)據(jù)分析時效性訴求的不斷提升,可能需要對海量大數(shù)據(jù)(億級別數(shù)量)進(jìn)行交互式的即席分析和展示能力,以及支持流式數(shù)據(jù)實時分析能力以及強大的機器學(xué)習(xí)能力等[8-10]。
數(shù)據(jù)湖架構(gòu)的演進(jìn)可以分為幾個階段,初期是基于開源離線數(shù)據(jù)處理架構(gòu)Hadoop,包括了存儲核心HDFS、計算模型MapReduce、資源管理Yarn以及眾多的大數(shù)據(jù)衍生產(chǎn)品,例如數(shù)據(jù)引擎Hbase、分析引擎Hive、交互式引擎Impala等[11-14]。隨著技術(shù)水平提升和業(yè)務(wù)需求變化,一些實時性要求高的處理場景催生了流式計算引擎,例如Flink、Storm等。第二階段的Lambda架構(gòu)將流式計算和批量計算統(tǒng)一化處理,用戶無需關(guān)注底層是批處理還是流式處理,數(shù)據(jù)能夠按照統(tǒng)一的范式得到處理結(jié)果即可,從而確保了上層應(yīng)用的訪問一致性。然而Lambda的“流批一體化”處理鏈路過于復(fù)雜,因此產(chǎn)生了第三階段的Kappa架構(gòu),即基于統(tǒng)一的流式計算引擎來處理批量和流式兩種計算邏輯,其中批量數(shù)據(jù)可以通過增加并發(fā)量和時間窗口來實現(xiàn)批處理。
從傳統(tǒng)的Hadoop到Lambda再到Kappa架構(gòu),主要演進(jìn)的是大數(shù)據(jù)存儲和處理能力,而數(shù)據(jù)湖架構(gòu)更強調(diào)的是對企業(yè)全量數(shù)據(jù)的管理、加工和輸出能力,具體可分為原數(shù)據(jù)管理、數(shù)據(jù)接入、數(shù)據(jù)質(zhì)量管理、數(shù)據(jù)治理、數(shù)據(jù)搬遷、訪問控制、任務(wù)管理、流程編排、數(shù)據(jù)資產(chǎn)目錄幾部分管理組件,如圖1所示。數(shù)據(jù)湖可對各類外部異構(gòu)的數(shù)據(jù)源進(jìn)行抽取遷移,支持對處理數(shù)據(jù)的各類任務(wù)進(jìn)行管理、編排、調(diào)度和監(jiān)測,能夠?qū)崿F(xiàn)“庫表行列”級別的數(shù)據(jù)訪問控制,且通過元數(shù)據(jù)處理,使得計算引擎在處理數(shù)據(jù)時能直接獲取數(shù)據(jù)分布、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)模式等信息,而無需人工干預(yù)。
3? 企業(yè)數(shù)據(jù)湖建設(shè)實踐
以某金融監(jiān)管機構(gòu)為例,其數(shù)字化轉(zhuǎn)型也經(jīng)歷了從建設(shè)數(shù)據(jù)集市到數(shù)據(jù)倉庫再到數(shù)據(jù)湖的演變過程。建設(shè)數(shù)據(jù)湖是為了更加貼近企業(yè)業(yè)務(wù)而進(jìn)行的,所有數(shù)據(jù)湖所包括的特性,例如元數(shù)據(jù)管理、數(shù)據(jù)資產(chǎn)目錄、數(shù)據(jù)權(quán)限、大規(guī)模流式計算、交互式分析、機器學(xué)習(xí)技術(shù)等,都是為了更好的適應(yīng)業(yè)務(wù)變化,提供更好的用戶界面。企業(yè)數(shù)據(jù)湖建設(shè)的基本流程:
一、數(shù)據(jù)盤點。對于一個金融監(jiān)管部門來說,構(gòu)建數(shù)據(jù)湖首先就要對自身組織的內(nèi)部數(shù)據(jù)以及被監(jiān)管機構(gòu)的外部數(shù)據(jù)全面摸底及調(diào)研,包括來源、類型、形態(tài)、結(jié)構(gòu)、存量、增量等。并通過數(shù)據(jù)盤點過程進(jìn)一步梳理數(shù)據(jù)和內(nèi)部/外部組織的關(guān)系,為后續(xù)確定數(shù)據(jù)湖平臺角色、用戶、分工和功能提供打下基礎(chǔ)。
二、技術(shù)選型。根據(jù)數(shù)據(jù)盤點摸底的情況,結(jié)合監(jiān)管業(yè)務(wù)的要求,來確定技術(shù)選型。在存儲引擎選型上,綜合考慮到響應(yīng)速度要求、使用頻率、并發(fā)用戶、成本等因素,數(shù)據(jù)湖應(yīng)該采用的存儲引擎應(yīng)該具有內(nèi)置多模特性,不僅能將海量原始數(shù)據(jù)進(jìn)行存儲,并且可以通過適當(dāng)?shù)拇鎯σ娲鎯?shù)據(jù)分析處理的結(jié)果。在實踐中,我們將基于簡單應(yīng)用的數(shù)據(jù)可存儲在Mysql中,大規(guī)模結(jié)構(gòu)化數(shù)據(jù)存放在HDFS,對于海量的非結(jié)構(gòu)化原始數(shù)據(jù)可存放在分布式對象存儲系統(tǒng)如OSS(阿里) [15]、OBS(華為)、S3(AWS)。完全依賴于業(yè)務(wù)對于計算的要求選擇合適的計算引擎,對于數(shù)據(jù)的加載、轉(zhuǎn)換、處理使用批量計算引擎,對于需要實時計算的內(nèi)容,會使用流計算引擎,對于部分實時性要求高的探索類的分析情形,則需要使用交互式分析引擎,而針對預(yù)測、回歸等場景,需要引入機器學(xué)習(xí)/深度學(xué)習(xí)框架[16]。在實踐中我們采用了Maxcompute、Blink、Hologres這套組合配置,能夠完全勝任當(dāng)前的業(yè)務(wù)需求。
三、數(shù)據(jù)整合。根據(jù)業(yè)務(wù)要求完成各種數(shù)據(jù)的梳理和歸類,形成元數(shù)據(jù)資源,構(gòu)建數(shù)據(jù)模型,分析數(shù)據(jù)血緣關(guān)系、形成數(shù)據(jù)地圖、并完成數(shù)據(jù)的接入和整合。在實踐中,我們將被監(jiān)管機構(gòu)的數(shù)據(jù)通過專門的數(shù)據(jù)報送工具DRP來完成結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的全量抽取和增量接入,并且分門別類的存儲,通過數(shù)據(jù)智能研發(fā)平臺進(jìn)行數(shù)據(jù)血緣分析。
四、應(yīng)用治理。從業(yè)務(wù)應(yīng)用著手,逐步確定需求,而在數(shù)據(jù)ETL的處理中,逐步生成可使用的數(shù)據(jù),最后形成數(shù)據(jù)模型、指標(biāo)架構(gòu)和對應(yīng)的質(zhì)量體系。數(shù)據(jù)湖技術(shù)預(yù)留了數(shù)據(jù)的處理與建??臻g,能迅速跟隨業(yè)務(wù)的發(fā)展變化。在實踐中,我們針對各個業(yè)務(wù)處室的需求建立了金融大數(shù)據(jù)業(yè)務(wù)模型,采用數(shù)據(jù)智能研發(fā)平臺實現(xiàn)了數(shù)據(jù)智能開發(fā)、任務(wù)管理、任務(wù)調(diào)度、數(shù)據(jù)安全隱私保護(hù)、數(shù)據(jù)遷移轉(zhuǎn)換等功能[17-19]。
五、業(yè)務(wù)支撐。數(shù)據(jù)湖通過數(shù)據(jù)服務(wù),來支撐各種類型的應(yīng)用系統(tǒng)、BI展示工具、大屏工具。在實踐中,我們建設(shè)了金融決策駕駛艙、數(shù)字大屏,并部署了BI軟件,來支撐定制化多樣化的報表展示。
4? 結(jié)語
在中大型企業(yè)數(shù)字化推進(jìn)過程中,數(shù)據(jù)湖的建設(shè)和升級是一個不斷演化的過程,它更多是一種理念、一套架構(gòu)方法論和一系列評判標(biāo)準(zhǔn),而非一套成型的標(biāo)準(zhǔn)模板。針對不同業(yè)務(wù)場景、不同數(shù)據(jù)規(guī)模、不同的建設(shè)成本,數(shù)據(jù)湖都會有不同的實現(xiàn)路徑。數(shù)據(jù)湖的核心是不斷提速數(shù)據(jù)應(yīng)用,簡化數(shù)據(jù)采集和存儲的復(fù)雜度,確保數(shù)據(jù)一致、實現(xiàn)統(tǒng)一安全管理,同時也能支持多類型處理范式等。而數(shù)據(jù)湖的建設(shè)也難免遇到很多技術(shù)上的挑戰(zhàn),例如把所有原始數(shù)據(jù)放到數(shù)據(jù)湖中,會增加數(shù)據(jù)利用難度,數(shù)據(jù)治理更加繁雜,數(shù)據(jù)服務(wù)效率不高,數(shù)據(jù)安全性等問題,這些問題都需要在不斷迭代更新進(jìn)行解決。
參考文獻(xiàn):
[1]馬凱航,高永明,吳止鍰等. 大數(shù)據(jù)時代數(shù)據(jù)管理技術(shù)研究綜述[J].軟件,2015,36(10):46-49
[2]張云佐,趙昕玥,高雪彤,等. 基于大數(shù)據(jù)的信息管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 軟件,2018,39(9):64-68
[3]尹航,楊歡,崔海斌,等. 基于大數(shù)據(jù)應(yīng)用的虛擬化云平臺建設(shè)方法研究[J]. 軟件,2018,39(4):201-207
[4]李蘇. 基于央行視角的分布式大數(shù)據(jù)技術(shù)應(yīng)用探析[J]. 軟件,2018,39(3):127-129
[5]諶迅. 大數(shù)據(jù)資產(chǎn)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].軟件,2016,37(02):50-53
[6]AWS Lake Formation- Build a secure data lake in days. https://aws.amazon.com/lake-formation/
[7]陳永南,許桂明,張新建. 一種基于數(shù)據(jù)湖的大數(shù)據(jù)處理機制研究[J].計算機與數(shù)字工程,2019,47(10):2540-2544
[8]信懷義. 基于商業(yè)銀行大數(shù)據(jù)訪問規(guī)律的HDFS 副本策略優(yōu)化研究[J].軟件,2015,36(11):74-79
[9]周彩冬,潘維民. 大數(shù)據(jù)在商業(yè)銀行反洗錢的應(yīng)用[J].軟件,2016,37(02):01-07
[10]陳惠娟,加云崗. 大數(shù)據(jù)時代下的信貸風(fēng)險預(yù)警系統(tǒng)研究[J]. 軟件,2018,39(01):39-44
[11]王書夢,吳曉松. 大數(shù)據(jù)環(huán)境下基于MapReduce 的網(wǎng)絡(luò)輿情熱點發(fā)現(xiàn)[J]. 軟件,2015,36(7):108-113
[12]倪禮豪,葉海鵬. 三網(wǎng)融合環(huán)境下企業(yè)私有云PaaS 平臺構(gòu)建研究[J]. 軟件,2015,36(8):51-54
[13]陳若飛,姜文紅. Hadoop 作業(yè)調(diào)度本地性的研究與優(yōu)化[J]. 軟件,2015,36(2):64-68
[14]李可,李昕. 基于Hadoop 生態(tài)集群管理系統(tǒng)Ambari 的研究與分析[J].軟件,2016,37(02):93-97
[15]基于OSS的EB級數(shù)據(jù)湖. https://developer.aliyun.com/article/772300
[16]智能數(shù)據(jù)湖運營平臺DAYU. https://www.huaweicloud.com/product/dayu.html
[17]卜曉波. 試論大數(shù)據(jù)云計算環(huán)境下的數(shù)據(jù)安全[J]. 軟件,2018,39(2):197-199
[18]劉文. 基于大數(shù)據(jù)優(yōu)化網(wǎng)絡(luò)的安全性策略的研究[J]. 軟件,2018,39(9):205-208
[19]王剛. 基于云計算的大數(shù)據(jù)安全隱私保護(hù)研究[J]. 軟件,2018,39(10):60-63
作者簡介:
盧康權(quán),1978年7月,男,浙江東陽人,碩士,工程師,大數(shù)據(jù)計算、區(qū)塊鏈方向.
(中國人民銀行杭州中心支行科技處? 浙江? 杭州? 310001)