黃家凱
(湖北省地質(zhì)調(diào)查院,湖北武漢 430034)
在云計算、大數(shù)據(jù)技術(shù)快速發(fā)展的背景下,隨著Hadoop等海量分布式存儲技術(shù)、分布式計算技術(shù)的快速普及,數(shù)據(jù)湖已被廣泛用于大數(shù)據(jù)平臺的存儲與使用。盡管目前對數(shù)據(jù)湖的定義尚有許多分歧,但其核心理念已得到接受。地質(zhì)大數(shù)據(jù)具有海量、異構(gòu)以及快速增長的特點,天然符合數(shù)據(jù)湖的特點。目前包括“地質(zhì)云”“自然資源云”等地質(zhì)大數(shù)據(jù)平臺的構(gòu)建過程中,對“地質(zhì)數(shù)據(jù)湖”的概念涉及較少,尚未對地質(zhì)數(shù)據(jù)湖做出完整的定義,更未對地質(zhì)數(shù)據(jù)湖的構(gòu)建方法做出闡釋。本文將從地質(zhì)數(shù)據(jù)湖的定義出發(fā),淺析地質(zhì)數(shù)據(jù)湖的構(gòu)建方法,以期為湖北省地質(zhì)局地質(zhì)大數(shù)據(jù)平臺的下一步建設(shè)方向開闊技術(shù)思路。
搞清數(shù)據(jù)湖的定義后,將其數(shù)據(jù)的邊界限定在地質(zhì)領(lǐng)域,也就搞清了地質(zhì)數(shù)據(jù)湖的定義。數(shù)據(jù)湖是目前比較熱的一個概念,業(yè)內(nèi)對于其的定義尚未完全達(dá)成一致,比較具有代表性的觀點如下:
數(shù)據(jù)湖是一類存儲數(shù)據(jù)自然/原始格式的系統(tǒng)或存儲,通常是對象塊或者文件。數(shù)據(jù)湖通常是企業(yè)中全量數(shù)據(jù)的單一存儲。全量數(shù)據(jù)包括原始系統(tǒng)所產(chǎn)生的原始數(shù)據(jù)拷貝以及為了各類任務(wù)而產(chǎn)生的轉(zhuǎn)換數(shù)據(jù),各類任務(wù)包括報表、可視化、高級分析和機器學(xué)習(xí)。數(shù)據(jù)湖中包括來自于關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)(行和列)、半結(jié)構(gòu)化數(shù)據(jù)(如CSV、日志、XML、JSON)、非結(jié)構(gòu)化數(shù)據(jù)(如email、文檔、PDF等)和二進制數(shù)據(jù)(如圖像、音頻、視頻)。
數(shù)據(jù)湖是一個集中式存儲庫,允許用戶以任意規(guī)模存儲所有結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。用戶可以按原樣存儲數(shù)據(jù)(無需先對數(shù)據(jù)進行結(jié)構(gòu)化處理),并運行不同類型的分析—從控制和可視化到大數(shù)據(jù)處理、實時分析和機器學(xué)習(xí),以指導(dǎo)做出更好的決策[1]。
Azure的數(shù)據(jù)湖包括一切使得開發(fā)者、數(shù)據(jù)科學(xué)家、分析師能更簡單地存儲、處理數(shù)據(jù)的能力,這些能力使得用戶可以存儲任意規(guī)模、任意類型、任意產(chǎn)生速度的數(shù)據(jù),并且可以跨平臺、跨語言的做所有類型的分析和處理。
從上述業(yè)內(nèi)關(guān)于數(shù)據(jù)湖的具有代表性的定義可以看出,雖然觀點不盡相同,對數(shù)據(jù)的內(nèi)容、數(shù)據(jù)的應(yīng)用能力略有差別,但可以總結(jié)出數(shù)據(jù)湖具有以下特性:
(1)數(shù)據(jù)湖需要提供足夠用的數(shù)據(jù)存儲能力,這個存儲保存了一個企業(yè)/組織中的所有數(shù)據(jù)。(2)數(shù)據(jù)湖可以存儲海量的任意類型的數(shù)據(jù),包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。(3)數(shù)據(jù)湖中的數(shù)據(jù)是原始數(shù)據(jù),是業(yè)務(wù)數(shù)據(jù)的完整副本。數(shù)據(jù)湖中的數(shù)據(jù)保持了它們在業(yè)務(wù)系統(tǒng)中原來的樣子。(4)數(shù)據(jù)湖需要具備完善的數(shù)據(jù)管理能力(完善的元數(shù)據(jù)),可以管理各類數(shù)據(jù)相關(guān)的要素,包括數(shù)據(jù)源、數(shù)據(jù)格式、連接信息、數(shù)據(jù)schema、權(quán)限管理等。(5)數(shù)據(jù)湖需要具備多樣化的分析能力,包括但不限于批處理、流式計算、交互式分析以及機器學(xué)習(xí);同時,還需要提供一定的任務(wù)調(diào)度和管理能力。(6)數(shù)據(jù)湖需要具備完善的數(shù)據(jù)生命周期管理能力。不光需要存儲原始數(shù)據(jù),還需要能夠保存各類分析處理的中間結(jié)果,并完整地記錄數(shù)據(jù)的分析處理過程,能幫助用戶完整詳細(xì)追溯任意一條數(shù)據(jù)的產(chǎn)生過程。(7)數(shù)據(jù)湖需要具備完善的數(shù)據(jù)獲取和數(shù)據(jù)發(fā)布能力。數(shù)據(jù)湖需要能支撐各種各樣的數(shù)據(jù)源,并能從相關(guān)的數(shù)據(jù)源中獲取全量/增量數(shù)據(jù);然后規(guī)范存儲。數(shù)據(jù)湖能將數(shù)據(jù)分析處理的結(jié)果推送到合適的存儲引擎中,滿足不同的應(yīng)用訪問需求。(8)對于大數(shù)據(jù)的支持,包括超大規(guī)模存儲以及可擴展的大規(guī)模數(shù)據(jù)處理能力。
綜上,地質(zhì)數(shù)據(jù)湖是一種不斷演進中、可擴展的大數(shù)據(jù)存儲、處理、分析的基礎(chǔ)設(shè)施;以數(shù)據(jù)為導(dǎo)向,實現(xiàn)任意來源、任意速度、任意規(guī)模、任意類型數(shù)據(jù)的全量獲取、全量存儲、多模式處理與全生命周期管理;并通過與各類外部異構(gòu)數(shù)據(jù)源的交互集成,支持各類企業(yè)級應(yīng)用[2]。
亞馬遜的數(shù)據(jù)湖基于AWS Lake Formation構(gòu)建,它與其他AWS服務(wù)互相配合,來完成整個企業(yè)級數(shù)據(jù)湖構(gòu)建功能(如圖1所示)。包含數(shù)據(jù)流入、數(shù)據(jù)沉淀、數(shù)據(jù)計算、數(shù)據(jù)應(yīng)用四個步驟。
2.1.1 數(shù)據(jù)流入
數(shù)據(jù)流入是整個數(shù)據(jù)湖構(gòu)建的起始,包括元數(shù)據(jù)的流入和業(yè)務(wù)數(shù)據(jù)流入兩個部分。元數(shù)據(jù)流入包括數(shù)據(jù)源創(chuàng)建、元數(shù)據(jù)抓取兩步,最終會形成數(shù)據(jù)資源目錄,并生成對應(yīng)的安全設(shè)置與訪問控制策略。業(yè)務(wù)數(shù)據(jù)的流入通過ETL來完成的。AWS提供的數(shù)據(jù)湖解決方案,支持S3、AWS關(guān)系型數(shù)據(jù)庫、A W S N o S Q L 數(shù)據(jù)庫,A W S 利用G L U E、EMR、Athena等組件支持?jǐn)?shù)據(jù)的自由流動。
2.1.2 數(shù)據(jù)沉淀
采用Amazon S3作為整個數(shù)據(jù)湖的集中存儲,按需擴展/按使用量付費。
2.1.3 數(shù)據(jù)計算
采用A W S G L U E 來進行基本的數(shù)據(jù)處理。G L U E 基本的計算形式是各類批處理模式的ETL任務(wù),任務(wù)的出發(fā)方式分為手動觸發(fā)、定時觸發(fā)、事件觸發(fā)三種。事件觸發(fā)模式上,利用AWS Lambda進行擴展開發(fā),同時觸發(fā)一個或多個任務(wù);各類ETL任務(wù)通過CloudWatch進行監(jiān)控。
2.1.4 數(shù)據(jù)應(yīng)用
在提供基本的批處理計算模式之外,AWS通過各類外部計算引擎,來提供豐富的計算模式支持,例如通過Athena/Redshift來提供基于SQL的交互式批處理能力;通過EMR來提供各類基于Spark的計算能力,包括Spark能提供的流計算能力和機器學(xué)習(xí)能力。
2.1.5 權(quán)限管理
通過Lake Formation來提供相對完善的權(quán)限管理,粒度包括“庫-表-列”。
圖1 AWS 數(shù)據(jù)湖解決方案示意圖
圖2 華為數(shù)據(jù)湖解決方案示意圖
2.1.6 數(shù)據(jù)治理
數(shù)據(jù)治理屬于數(shù)據(jù)所有者的責(zé)任,AWS的通用解決方案不囊括這塊內(nèi)容,用戶可以通過開源組件(如Apache Griffin)針對數(shù)據(jù)治理自行定制開發(fā)。
華為的數(shù)據(jù)湖解決方案包括數(shù)據(jù)湖探索(Data Lake Insight,DLI)和智能數(shù)據(jù)湖運營平臺(DAYU)(如圖2所示)。其中DLI相當(dāng)于是AWS的Lake Formation、GLUE、Athena、EMR(Flink&Spark)的集合。
2.2.1 華為云數(shù)據(jù)湖探索(DLI)
華為的數(shù)據(jù)湖解決方案比較完整,DLI承擔(dān)了數(shù)據(jù)湖構(gòu)建、數(shù)據(jù)處理、數(shù)據(jù)管理、數(shù)據(jù)應(yīng)用的核心功能。DLI具有完備的分析引擎,包括基于SQL的交互式分析以及基于Spark+Flink的流批一體處理引擎。DLI通過OBS來提供核心存儲引擎,和AWS S3的能力基本對標(biāo)。華為數(shù)據(jù)湖幾乎支持所有目前華為云上提供的數(shù)據(jù)源服務(wù)。
DLI可以與華為的CDM(云數(shù)據(jù)遷移服務(wù))和DIS(數(shù)據(jù)接入服務(wù))對接:借助DIS,DLI可以定義各類數(shù)據(jù)點,并可以在Flink作業(yè)中被使用,作為source或者sink;借助CDM,DLI甚至能接入IDC、第三方云服務(wù)的數(shù)據(jù)。
2.2.2 華為云數(shù)據(jù)湖智能運營平臺(DAYU)
為了更好地支持?jǐn)?shù)據(jù)集成、數(shù)據(jù)開發(fā)、數(shù)據(jù)治理、質(zhì)量管理等數(shù)據(jù)湖高級功能, 華為云提供了D A Y U 平臺。DAYU涵蓋了整個數(shù)據(jù)湖治理的核心流程,并對其提供了相應(yīng)的工具支持??梢钥吹?本質(zhì)上DAYU數(shù)據(jù)治理的方法論其實是傳統(tǒng)數(shù)據(jù)倉庫治理方法論在數(shù)據(jù)湖基礎(chǔ)設(shè)施上的延伸:從數(shù)據(jù)模型來看,依然包括貼源層、多源整合層、明細(xì)數(shù)據(jù)層,這與數(shù)據(jù)倉庫完全一致。
阿里云采用OSS作為數(shù)據(jù)湖的集中存儲。在數(shù)據(jù)源的支持上,支持所有的阿里云數(shù)據(jù)庫,包括OLTP、OLAP和NoSQL等各類數(shù)據(jù)庫。核心關(guān)鍵點如下:
2.3.1 數(shù)據(jù)接入與搬遷
在建湖過程中,DLA組件具備元數(shù)據(jù)發(fā)現(xiàn)和一鍵建湖的能力。
2.3.2 數(shù)據(jù)資源目錄
DLA提供Meta data catalog組件對于數(shù)據(jù)湖中的數(shù)據(jù)資產(chǎn)進行統(tǒng)一的管理,無論數(shù)據(jù)是在“湖中”還是在“湖外”。
2.3.3 數(shù)據(jù)計算分析
DLA提供SQL計算引擎和Spark計算引擎兩種,并與Meta data catalog深度集成,能方便地獲取元數(shù)據(jù)信息?;赟park的能力,DLA解決方案支持批處理、流計算和機器學(xué)習(xí)等計算模式。
2.3.4 異構(gòu)數(shù)據(jù)管理
DLA除了支持各類異構(gòu)數(shù)據(jù)源做數(shù)據(jù)接入與匯聚之外,還能與云原生數(shù)據(jù)倉庫(原ADB)深度整合。
2.3.5 數(shù)據(jù)集成和開發(fā)
阿里云的數(shù)據(jù)湖解決方案提供兩種選擇:一種是采用dataworks完成;另一種是采用DMS來完成。兩種都能對外提供可視化的流程編排、任務(wù)調(diào)度、任務(wù)管理能力。
2.3.6 數(shù)據(jù)管理和數(shù)據(jù)安全
D M S 提供了強大的能力。D M S 的數(shù)據(jù)管理粒度分為“庫-表-列-行”,完善的支持企業(yè)級的數(shù)據(jù)安全管控需求。DMS把原來基于數(shù)據(jù)庫的devops理念擴展到了數(shù)據(jù)湖,使得數(shù)據(jù)湖的運維、開發(fā)更加精細(xì)化。
Azure的數(shù)據(jù)湖解決方案包括數(shù)據(jù)湖存儲、接口層、資源調(diào)度與計算引擎層。存儲層是基于Azure object Storage構(gòu)建的,是對結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提供支撐。接口層為WebHDFS,在Azure object Storage實現(xiàn)了HDFS的接口。在資源調(diào)度上,Azure基于YARN實現(xiàn)。計算引擎上,Azure提供了U-SQL、hadoop和Spark等多種處理引擎。限于篇幅,本文不再對其做深入剖析。
地質(zhì)數(shù)據(jù)湖的建設(shè)過程應(yīng)該與地質(zhì)信息化工作緊密結(jié)合。但是地質(zhì)數(shù)據(jù)湖的建設(shè)過程與傳統(tǒng)的數(shù)據(jù)倉庫,甚至是當(dāng)前大熱的數(shù)據(jù)中臺應(yīng)該是有所區(qū)別的。區(qū)別在于,數(shù)據(jù)湖應(yīng)該以一種更敏捷的方式去構(gòu)建,“邊建邊用,邊用邊治理”。
摸清楚數(shù)據(jù)的基本情況,包括數(shù)據(jù)來源、數(shù)據(jù)類型、數(shù)據(jù)形態(tài)、數(shù)據(jù)模式、數(shù)據(jù)總量、數(shù)據(jù)增量。數(shù)據(jù)湖是對原始數(shù)據(jù)做全量保存,因此無需事先進行深層次的設(shè)計。
當(dāng)前我局地質(zhì)大數(shù)據(jù)平臺中,圍繞成果地質(zhì)資料、地質(zhì)數(shù)據(jù)庫形成了完整的半結(jié)構(gòu)化、非結(jié)構(gòu)化地質(zhì)大數(shù)據(jù)中心(地質(zhì)資料中心)。在MySQL、達(dá)夢數(shù)據(jù)庫等關(guān)系數(shù)據(jù)庫管理平臺基礎(chǔ)上,對財務(wù)、項目、質(zhì)量等管理業(yè)務(wù)形成了結(jié)構(gòu)化的業(yè)務(wù)數(shù)據(jù)。今后還將持續(xù)入云增量數(shù)據(jù),以及增加地質(zhì)工作全業(yè)務(wù)、全流程的其它數(shù)據(jù)內(nèi)容。
根據(jù)數(shù)據(jù)摸底的情況,確定地質(zhì)數(shù)據(jù)湖建設(shè)的技術(shù)選型。事實上,關(guān)于數(shù)據(jù)湖的技術(shù)選型,業(yè)界有很多的通行的做法,基本原則是:“計算與存儲分離”“彈性”“獨立擴展”。存儲選型是分布式對象存儲系統(tǒng)(如S 3/O S S/O B S/HDFS等);計算引擎上建議重點考慮批處理需求和SQL處理能力,因為在實踐中,這兩類能力是數(shù)據(jù)處理的關(guān)鍵。無論是計算還是存儲,優(yōu)先考慮serverless的形式;后續(xù)可以在應(yīng)用中逐步演進,需要獨立資源池的時候再考慮構(gòu)建專屬集群。
確定要接入的數(shù)據(jù)源,完成數(shù)據(jù)的全量抽取與增量接入。
當(dāng)前局地質(zhì)大數(shù)據(jù)平臺的數(shù)據(jù)還是分散在各業(yè)務(wù)系統(tǒng)中,數(shù)據(jù)接入過程中要重點考慮數(shù)據(jù)產(chǎn)權(quán)、數(shù)據(jù)模式?jīng)_突、異構(gòu)數(shù)據(jù)的兼容性等技術(shù)問題。
這一步是構(gòu)建地質(zhì)數(shù)據(jù)湖的關(guān)鍵,從數(shù)據(jù)湖的角度來看,數(shù)據(jù)應(yīng)用和數(shù)據(jù)治理應(yīng)該是相互融合、密不可分的。從數(shù)據(jù)應(yīng)用入手,在應(yīng)用中明確需求,在數(shù)據(jù)ETL的過程中,逐步形成業(yè)務(wù)可使用的數(shù)據(jù);同時形成數(shù)據(jù)模型、指標(biāo)體系和對應(yīng)的質(zhì)量標(biāo)準(zhǔn)。數(shù)據(jù)湖強調(diào)對原始數(shù)據(jù)的存儲,強調(diào)對數(shù)據(jù)的探索式分析與應(yīng)用,但這絕對不是說數(shù)據(jù)湖不需要數(shù)據(jù)模型;恰恰相反,對業(yè)務(wù)的理解與抽象,將極大地推動數(shù)據(jù)湖的發(fā)展與應(yīng)用,數(shù)據(jù)湖技術(shù)使得數(shù)據(jù)的處理與建模,保留了極大地敏捷性,能快速適應(yīng)業(yè)務(wù)的發(fā)展與變化。
從技術(shù)視角來看,地質(zhì)數(shù)據(jù)湖不同于大數(shù)據(jù)平臺之處,還在于地質(zhì)數(shù)據(jù)湖為了支撐數(shù)據(jù)的全生命周期管理與應(yīng)用,需要具備相對完善的數(shù)據(jù)管理、類目管理、流程編排、任務(wù)調(diào)度、數(shù)據(jù)溯源、數(shù)據(jù)治理、質(zhì)量管理、權(quán)限管理等能力。在計算能力上,需要支持SQL和可編程的批處理兩種模式(對機器學(xué)習(xí)的支持,可以采用Spark或者Flink的內(nèi)置能力);在處理范式上,可以采用基于有向無環(huán)圖的工作流的模式,并提供集成開發(fā)環(huán)境。
地質(zhì)數(shù)據(jù)湖作為新一代大數(shù)據(jù)分析處理的基礎(chǔ)設(shè)施,需要超越傳統(tǒng)的大數(shù)據(jù)平臺[3]。今后在適當(dāng)時機,有必要將地質(zhì)大數(shù)據(jù)中心拓展升級,真正形成地質(zhì)數(shù)據(jù)湖。未來地質(zhì)數(shù)據(jù)湖可能會朝以下方向發(fā)展:
基于地質(zhì)數(shù)據(jù)湖實現(xiàn)存儲和計算分離,計算能力和存儲能力均可獨立擴展;多模態(tài)計算引擎支持,SQL、批處理、流式計算、機器學(xué)習(xí)等;提供serverless態(tài)服務(wù),確保足夠的彈性。
通過數(shù)據(jù)湖提供更為強大的數(shù)據(jù)管理能力,包括但不限于數(shù)據(jù)源管理、數(shù)據(jù)類目管理、處理流程編排、任務(wù)調(diào)度、數(shù)據(jù)溯源、數(shù)據(jù)治理、質(zhì)量管理、權(quán)限管理等。
目前絕大多數(shù)數(shù)據(jù)分析人員都只有數(shù)據(jù)庫的使用經(jīng)驗,大數(shù)據(jù)平臺的能力雖強,但是對于用戶來說并不友好,數(shù)據(jù)科學(xué)家和數(shù)據(jù)分析師應(yīng)該關(guān)注數(shù)據(jù)、算法、模型及其與業(yè)務(wù)場景的適配,而不是花大量的時間精力去學(xué)習(xí)大數(shù)據(jù)平臺的開發(fā)。
對各種異構(gòu)數(shù)據(jù)源的管理與支持,對異構(gòu)數(shù)據(jù)的全量/增量遷移支持,對各種數(shù)據(jù)格式的支持都是需要不斷完善的方向。同時,需要具備一個完備的、可視化的、可擴展的集成開發(fā)環(huán)境。
典型數(shù)據(jù)湖架構(gòu)的構(gòu)成基本已經(jīng)成為了業(yè)界共識:分布式對象存儲+多模態(tài)計算引擎+數(shù)據(jù)管理[4]。決定數(shù)據(jù)湖構(gòu)建成敗的關(guān)鍵在于數(shù)據(jù)管理,無論是原始數(shù)據(jù)的管理、數(shù)據(jù)類目的管理、數(shù)據(jù)模型的管理、數(shù)據(jù)權(quán)限的管理還是處理任務(wù)的管理,都離不開與業(yè)務(wù)的適配和集成;地質(zhì)數(shù)據(jù)湖與地質(zhì)數(shù)據(jù)科學(xué)家和地質(zhì)數(shù)據(jù)分析師形成良性發(fā)展與互動。如何在地質(zhì)數(shù)據(jù)湖預(yù)置地質(zhì)行業(yè)數(shù)據(jù)模型、ETL流程、分析模型和定制算法,可能是未來地質(zhì)數(shù)據(jù)湖競爭力的一個關(guān)鍵點。