多(duō)源異構數(shù)據爆炸式增長帶來(lái)數(shù)據沼澤、信息孤島等問題,導緻無用數(shù)據和(hé)陳舊(jiù)數(shù)據産生(shēng),而數(shù)據湖(hú)憑借原始格式存儲、數(shù)據存儲類型多(duō)樣和(hé)開(kāi)放訪問等優勢解決了數(shù)據存入問題,但(dàn)其缺乏事務管理(lǐ)支持能力、數(shù)據治理(lǐ)能力,從而限制(zhì)了數(shù)據産出。因此,企業多(duō)以将數(shù)據提取/加載/轉換(ELT)到數(shù)據湖(hú)後再提取/轉 換/加載(ETL)到數(shù)據倉庫中的方式打通(tōng)湖(hú)倉之間(jiān)管道(dào)以同時(shí)獲取二者優勢,但(dàn)這種二層架構存儲成本高(gāo)、數(shù)據一緻性和(hé)可(kě)靠性不足、對高(gāo)級分析的支持有(yǒu)限。在此基礎上(shàng),業界提出湖(hú)倉一體(tǐ)(lakehouse),在數(shù)據湖(hú)上(shàng)添加高(gāo)級管理(lǐ)層具化數(shù)據倉庫功能,實現多(duō)元化數(shù)據存儲、存儲計(jì)算(suàn)資源分離、事務管理(lǐ)支持、豐富場(chǎng)景分析應用等優勢組合。
當前少(shǎo)數(shù)企業已面向業務需求實施湖(hú)倉一體(tǐ)解決方案,但(dàn)仍存在功能不完善、架構不通(tōng)用、治理(lǐ)不成熟、數(shù)據難共享、系統難擴展等挑戰。為(wèi)此,本文從數(shù)據治理(lǐ)的視(shì)角出發,基于數(shù)據倉庫、數(shù)據湖(hú)、湖(hú)倉一體(tǐ)三代數(shù)據平台的差異性,分析湖(hú)倉一體(tǐ)面臨的挑戰,提出分布式湖(hú)倉一體(tǐ)架構,并綜合當前研究構建靜态湖(hú)倉一體(tǐ)功能模塊及動态流批一體(tǐ)數(shù)據流轉過程,形成具有(yǒu)一定可(kě)行(xíng)性、通(tōng)用性和(hé)可(kě)擴展性的湖(hú)倉一體(tǐ)架構體(tǐ)系,以支持企業決策。Databricks公司于2020年率先提出湖(hú)倉一體(tǐ)概念,并将其描述為(wèi)“一個(gè)新的、開(kāi)放的數(shù)據管理(lǐ)架構,将數(shù)據湖(hú)的靈活性、成本效益和(hé)規模與數(shù)據倉庫的數(shù)據管理(lǐ)和(hé)事務管理(lǐ)結合起來(lái)”;Armbrust等将其定義為(wèi)“基于低(dī)成本和(hé)可(kě)直接訪問的存儲數(shù)據管理(lǐ)系統,同時(shí)具備傳統分析型數(shù)據庫管理(lǐ)系統的管理(lǐ)和(hé)性能特征,如事務管理(lǐ)、數(shù)據版本、審計(jì)、索引、緩存和(hé)查詢優化”。目前并無對湖(hú)倉一體(tǐ)的統一且成熟的定義,相關研究多(duō)引用Armbrust等的說法。國外學者分别定義了自下而上(shàng)[數(shù)據源/數(shù)據湖(hú)/元數(shù)據、緩存和(hé)索引層/應用程序編程接口(API)層/消費用例]、自上(shàng)而下(數(shù)據源/采集過程/原始數(shù)據開(kāi)放格式存儲并治理(lǐ)/開(kāi)放API/消費用例)、自左到右(數(shù)據源/存儲層/計(jì)算(suàn)層/API層/消費用例)的湖(hú)倉一體(tǐ)架構,雖表述存在差異,但(dàn)提出的湖(hú)倉一體(tǐ)架構有(yǒu)相似的5個(gè)組成部分:數(shù)據源、數(shù)據存儲、計(jì)算(suàn)層、API層以及消費用例。Armbrust等明(míng)确将數(shù)據存儲在數(shù)據湖(hú)中以強調湖(hú)倉一體(tǐ)滿足不同類型數(shù)據的開(kāi)放格式存儲需求。Microsoft Azure、Databricks等公司的湖(hú)倉一體(tǐ)架構則更為(wèi)重視(shì)對存儲對象的區(qū)域劃分:青銅區(qū)(原始數(shù)據采集和(hé)保留)、白銀區(qū)(過程數(shù)據過濾、清洗和(hé)增值)和(hé)黃金區(qū)(業務數(shù)據彙總)。1.2 數(shù)據倉庫、數(shù)據湖(hú)和(hé)湖(hú)倉一體(tǐ)的差異數(shù)據倉庫、數(shù)據湖(hú)和(hé)湖(hú)倉一體(tǐ)之間(jiān)的差異(見表1)主要體(tǐ)現在以下幾點。(1)數(shù)據類型:數(shù)據倉庫內(nèi)部高(gāo)度結構化且多(duō)為(wèi)關系型數(shù)據庫,一般隻支持在入倉前完成處理(lǐ)工作(zuò)的結構化數(shù)據存儲;數(shù)據湖(hú)可(kě)包容開(kāi)放的數(shù)據類型,但(dàn)其主要存儲原始格式的數(shù)據,數(shù)據加工處理(lǐ)屬于額外工作(zuò);湖(hú)倉一體(tǐ)存儲所有(yǒu)類型的已處理(lǐ)和(hé)原格式數(shù)據。 (2)采集過程:數(shù)據倉庫的寫時(shí)模式需在數(shù)據入倉前預先建模,并按照既定的ETL模式,以專屬格式導入;數(shù)據湖(hú)的讀時(shí)模式在數(shù)據入湖(hú)後按需定義架構,湖(hú)中數(shù)據以開(kāi)放格式存在以适應多(duō)變的業務需求;湖(hú)倉一體(tǐ)同時(shí)支持預定義數(shù)據和(hé)開(kāi)放數(shù)據導入以及需求導向的數(shù)據加工轉換。 (3)訪問方式:數(shù)據倉庫內(nèi)的數(shù)據訪問以SQL(Structured Query Language)為(wèi)主,用戶可(kě)以獲取具有(yǒu)專屬格式的數(shù)據;數(shù)據湖(hú)和(hé)湖(hú)倉一體(tǐ)配置大(dà)量開(kāi)放API,可(kě)支持對數(shù)據的直接讀取,讀取方式包括SQL、 R、Python等語言,湖(hú)倉一體(tǐ)同時(shí)支持原格式和(hé)處理(lǐ)後數(shù)據的訪問。 (4)可(kě)靠性和(hé)安全性:數(shù)據倉庫發展較為(wèi)成熟,基于其高(gāo)度結構化的管理(lǐ)能力,可(kě)實現高(gāo)質量和(hé)安全性的數(shù)據存儲;數(shù)據湖(hú)內(nèi)部數(shù)據具有(yǒu)多(duō)源異構性,尚未形成有(yǒu)效治理(lǐ)策略,易導緻數(shù)據沼澤,這也是其當前面臨的最大(dà)挑戰;湖(hú)倉一體(tǐ)在湖(hú)存儲機制(zhì)上(shàng)添加數(shù)據倉庫管理(lǐ)功能和(hé)數(shù)據安全保障機制(zhì),可(kě)顯著提高(gāo)數(shù)據可(kě)靠性和(hé)安全性。(5)适用場(chǎng)景:數(shù)據倉庫适用于BI(Business Intelligence)、SQL應用和(hé)報告等;數(shù)據湖(hú)适用于數(shù)據科學和(hé)機器(qì)學習,二者僅支持有(yǒu)限應用場(chǎng)景;湖(hú)倉一體(tǐ)可(kě)同時(shí)滿足SQL分析需求和(hé)數(shù)據科學、機器(qì)學習等高(gāo)級分析需求,且支持直接在原始數(shù)據上(shàng)應用各類分析工具,以及對流數(shù)據的持續處理(lǐ)和(hé)實時(shí)分析。盡管湖(hú)倉一體(tǐ)可(kě)以實現對數(shù)據湖(hú)和(hé)數(shù)據倉庫優勢的有(yǒu)機結合,但(dàn)依然存在以下挑戰。(1)單體(tǐ)架構需擴展:湖(hú)倉一體(tǐ)仍是一種綜合數(shù)據倉庫、數(shù)據湖(hú)、Delta Lake、Spark等技(jì)術(shù)的單體(tǐ)架構,存在可(kě)擴展性不足、管理(lǐ)成本高(gāo)等問題。數(shù)據網格是Dehghani于2019年提出的分散架構模式,融合了分布式領域驅動、自助平台設計(jì)、數(shù)據産品化以及聯合計(jì)算(suàn)治理(lǐ)思維。區(qū)别于微服務,數(shù)據網格專注于數(shù)字工程而非軟件工程,将其分布式領域驅動概念抽象化,以支持湖(hú)倉一體(tǐ)擴展。(2)架構體(tǐ)系需完善:相關企業湖(hú)倉一體(tǐ)架構多(duō)以特定業務為(wèi)導向而不具有(yǒu)通(tōng)用性,現有(yǒu)研究尚未形成完善的架構體(tǐ)系,存在缺乏完整數(shù)據生(shēng)命周期過程、對存儲對象定義不明(míng)确、數(shù)據治理(lǐ)能力需優化、支撐應用軟件技(jì)術(shù)需補充等問題。(3)領域數(shù)據需共享:當前企業數(shù)據多(duō)由中央數(shù)據團隊集中統一管理(lǐ),各業務領域間(jiān)缺乏高(gāo)效數(shù)據共享機制(zhì),易形成數(shù)據孤島。領域數(shù)據專業化管理(lǐ)并自主共享更符合海量數(shù)據環境下的數(shù)據治理(lǐ)願景。為(wèi)此,針對湖(hú)倉一體(tǐ)面臨的挑戰,在解耦海量數(shù)據資源并形成分布式湖(hú)倉一體(tǐ)架構基礎上(shàng),分别構建靜态湖(hú)倉一體(tǐ)功能模塊以完善化、合理(lǐ)化湖(hú)倉一體(tǐ)系統中各功能組件構成,以及動态流批一體(tǐ)數(shù)據流轉過程,這一過程貫穿數(shù)據采集、存儲、處理(lǐ)、分析等數(shù)據生(shēng)命周期。分布式湖(hú)倉一體(tǐ)按業務領域劃分海量數(shù)據資源,由熟悉業務的領域團隊獲取相關數(shù)據并履行(xíng)管理(lǐ)義務,以降低(dī)數(shù)據集中化治理(lǐ)難度并提高(gāo)治理(lǐ)效率,其優勢如下:通(tōng)過調整領域結構來(lái)應對不斷變化的數(shù)據環境和(hé)多(duō)元化業務需求,避免企業“牽一發而動全身”;各領域按需部署湖(hú)倉一體(tǐ)功能模塊以支撐數(shù)據采集、存儲、處理(lǐ)、分析等數(shù)據生(shēng)命周期過程,脫離中央數(shù)據團隊而自主發布數(shù)據訪問請(qǐng)求并有(yǒu)效共享;中央和(hé)領域團隊協同發布聯合數(shù)據治理(lǐ)策略并參與治理(lǐ)過程,既确保企業層面數(shù)據治理(lǐ)的可(kě)持續和(hé)有(yǒu)效性,又适應不同業務領域層面治理(lǐ)過程的獨特性、靈活性,并最終實現共同戰略目标下治理(lǐ)結果的一緻性。分布式湖(hú)倉一體(tǐ)架構(見圖1)由中央發布網格目錄、聯合數(shù)據治理(lǐ)标準并提供相關基礎設施,通(tōng)過業務解耦定義分布式領域節點(領域1、領域2、…、領域n),對于不斷擴展的數(shù)據源、用例或訪問類型隻需增加相應領域節點,每個(gè)領域獨立治理(lǐ)和(hé)維護,通(tōng)過端到端完備的數(shù)據服務确保數(shù)據可(kě)訪問和(hé)調用。各領域湖(hú)倉一體(tǐ)可(kě)擁有(yǒu)獨立的數(shù)據目錄,網格目錄鏈接所有(yǒu)節點并獲取完整元數(shù)據信息,是用于發現不同節點中可(kě)用數(shù)據元素的主目錄,各節點通(tōng)過數(shù)據共享服務和(hé)網格目錄實現跨領域數(shù)據訪問。基于湖(hú)倉一體(tǐ)功能模塊和(hé)流、批數(shù)據流轉過程需要搭建基礎設施,各節點通(tōng)過本地實施的物理(lǐ)服務器(qì)、虛拟機和(hé)容器(qì)或雲服務自動部署技(jì)術(shù)支撐組件,避免重複建設。應用分布式領域驅動概念,将企業業務域解耦并映射到數(shù)據視(shì)角,再将數(shù)據域解耦以消除冗餘。可(kě)根據企業實際業務和(hé)組織分類來(lái)定義領域,例如某個(gè)産品組、獨立組織實體(tǐ)或特定業務流程都可(kě)以作(zuò)為(wèi)域,更具系統性的方法是将數(shù)據域劃分為(wèi)3種類型:源數(shù)據域(以下簡稱“源域”)、聚合數(shù)據域和(hé)消費者/用戶數(shù)據域。源域與處于原始狀态的數(shù)據源(例如業務系統、社交媒體(tǐ)等)一緻,此類數(shù)據尚未用于拟合或建模而直接反映當前業務事實,多(duō)以業務域事件形式存在,其依據分布式日志(zhì)或易于消費的曆史片段(在密切反映業務域變化的間(jiān)隔時(shí)間(jiān)段內(nèi)進行(xíng)彙總)。源域內(nèi)數(shù)據的建模和(hé)訪問并非直接在數(shù)據源上(shàng)進行(xíng),而是在湖(hú)倉一體(tǐ)中存儲和(hé)結構化以便更好地理(lǐ)解和(hé)訪問報告、機器(qì)學習訓練和(hé)各類非交易性工作(zuò)負載。此外,數(shù)據源變化與源域內(nèi)數(shù)據變化的頻率可(kě)能不一緻,二者擁有(yǒu)不同的生(shēng)命周期。企業範圍內(nèi)業務域與數(shù)據源系統可(kě)能并非一對一映射,通(tōng)常許多(duō)源系統可(kě)為(wèi)屬于一個(gè)共享業務域的部分數(shù)據提供服務,因此可(kě)能有(yǒu)衆多(duō)與源系統對應的數(shù)據,需要将其彙總到一個(gè)統一的聚合數(shù)據域中。例如,通(tōng)過營銷和(hé)銷售數(shù)據生(shēng)成用戶畫(huà)像,這個(gè)過程需要由多(duō)個(gè)源域內(nèi)數(shù)據組成的長期聚合數(shù)據以形成對用戶的整體(tǐ)看法。與源域內(nèi)數(shù)據相比,消費者/用戶(例如數(shù)據科學家(jiā)、數(shù)據分析師(shī))數(shù)據域內(nèi)的數(shù)據擁有(yǒu)不同的性質,通(tōng)常通(tōng)過處理(lǐ)、加工、轉換等将源域中的事件轉變為(wèi)适合特定用例的結構和(hé)內(nèi)容。例如,數(shù)據科學家(jiā)從源域內(nèi)數(shù)據中提取某些(xiē)特征和(hé)附加信息,一旦這些(xiē)特征(屬性)被提取便可(kě)作(zuò)為(wèi)與用戶數(shù)據相一緻的領域數(shù)據被維護和(hé)共享,以訓練情感分析模型或其他相鄰領域模型。分布式領域驅動剝離中心節點,各領域湖(hú)倉一體(tǐ)提供數(shù)據共享服務,且任意領域間(jiān)可(kě)以共享數(shù)據,跨領域湖(hú)倉一體(tǐ)數(shù)據共享過程如下:各節點數(shù)據發布者發布元數(shù)據到數(shù)據目錄中,管理(lǐ)員審查數(shù)據治理(lǐ)規範後錄入,同時(shí)在網格目錄中更新元數(shù)據信息。當某一節點産生(shēng)數(shù)據需求,便可(kě)浏覽網格目錄查詢感興趣數(shù)據集所在節點,并向數(shù)據共享服務發送訪問請(qǐng)求,訪問請(qǐng)求通(tōng)過消息傳遞組件被路由同步到相關數(shù)據發布者。當請(qǐng)求通(tōng)過後,發布者則将感興趣數(shù)據集通(tōng)過數(shù)據共享服務與請(qǐng)求者所在領域節點共享,并不斷監測數(shù)據使用模式以保證共享過程可(kě)控。傳統單一集中化的數(shù)據治理(lǐ)模式低(dī)效且難以應對快速變化的數(shù)據視(shì)圖,數(shù)據網格模式下各領域擁有(yǒu)數(shù)據主權并通(tōng)過全局标準化實現互操作(zuò)性,因此聯合數(shù)據治理(lǐ)包含兩種治理(lǐ)模式:全局數(shù)據治理(lǐ)和(hé)領域數(shù)據治理(lǐ)。全局數(shù)據治理(lǐ)模式包括:定義數(shù)據所有(yǒu)權和(hé)各領域邊界等信息;發布可(kě)适用于所有(yǒu)領域的通(tōng)用治理(lǐ)方案,例如治理(lǐ)策略、流程、組織等;制(zhì)定共同遵循的數(shù)據規範,例如共享API接口描述語言或元數(shù)據建模标準語言;統一業務詞彙表建模,例如對客戶識别号等概念的共同定義;确立最低(dī)數(shù)據質量和(hé)安全标準,例如在一組固定維度上(shàng)評估所有(yǒu)領域質量以及根據中央身份管理(lǐ)來(lái)執行(xíng)訪問控制(zhì);通(tōng)過網格目錄對領域數(shù)據産品實施有(yǒu)效監控。在領域數(shù)據治理(lǐ)模式下,治理(lǐ)責任被分配給領域數(shù)據團隊,并根據各領域數(shù)據産品的屬性(例如數(shù)據類型、格式、訪問方式等)制(zhì)定元數(shù)據管理(lǐ)、數(shù)據質量管理(lǐ)、數(shù)據生(shēng)命周期管理(lǐ)等治理(lǐ)計(jì)劃,這種去中心化的自治模式對大(dà)數(shù)據治理(lǐ)更有(yǒu)效。企業各領域按需自動部署湖(hú)倉一體(tǐ),對功能模塊要考慮可(kě)面向所有(yǒu)領域的通(tōng)用性以及架構體(tǐ)系的完整性。功能上(shàng),确保結構化、半結構化、非結構化數(shù)據的采集、存儲、共享、實時(shí)處理(lǐ)和(hé)分析,以及全生(shēng)命周期數(shù)據治理(lǐ);結構上(shàng),直接在數(shù)據湖(hú)上(shàng)配置數(shù)據倉庫功能,以免除數(shù)據遷庫帶來(lái)的成本和(hé)不一緻等問題;服務上(shàng),支持複雜場(chǎng)景的數(shù)據分析應用。湖(hú)倉一體(tǐ)功能模塊(見圖2)包括3個(gè)部分:數(shù)據源、湖(hú)倉一體(tǐ)核心功能區(qū)和(hé)用戶。立足數(shù)據生(shēng)命周期維度,可(kě)将湖(hú)倉一體(tǐ)的核心功能區(qū)拆解為(wèi)6層:數(shù)據采集層、數(shù)據湖(hú)層、計(jì)算(suàn)層、數(shù)據服務層、數(shù)據分析層和(hé)數(shù)據治理(lǐ)層。任何生(shēng)成數(shù)據的操作(zuò)系統都可(kě)能成為(wèi)潛在數(shù)據源,通(tōng)常聯機事務處理(lǐ)過程(Online Transaction Processing,OLTP)産生(shēng)事務數(shù)據,這些(xiē)事務數(shù)據以結構化數(shù)據為(wèi)主,并以高(gāo)度結構化形式存儲于關系數(shù)據庫中。此外,非結構化數(shù)據存儲于NoSQL數(shù)據庫中,包括鍵值對、圖形和(hé)JSON(JavaScript Object Notation)數(shù)據等。除操作(zuò)系統外的其他數(shù)據源以非結構化數(shù)據為(wèi)主,其中:文本數(shù)據是非結構化數(shù)據的主要類型,包括文件和(hé)純文本等,通(tōng)過自然語言處理(lǐ)可(kě)以從文本數(shù)據中洞察信息;流數(shù)據是固定時(shí)間(jiān)點某一系統不斷傳輸的數(shù)據,包括從物聯網設備發出的遙測數(shù)據、來(lái)自社交媒體(tǐ)平台的持續反饋以及來(lái)自地理(lǐ)信息系統的位置信息等,流數(shù)據為(wèi)實時(shí)分析提供支持,可(kě)以滿足情感分析、關鍵詞檢測等用例需求;媒體(tǐ)數(shù)據以圖像、語音(yīn)和(hé)視(shì)頻為(wèi)主,可(kě)以完成對圖像識别、語音(yīn)識别、語音(yīn)翻譯文本等高(gāo)級用例的支持。3.2 湖(hú)倉一體(tǐ)核心功能區(qū)數(shù)據采集方式以批量數(shù)據采集和(hé)實時(shí)數(shù)據采集為(wèi)主。批量數(shù)據采集是指定期将數(shù)據提取到數(shù)據湖(hú)層,采集周期受數(shù)據源生(shēng)産、推送能力和(hé)允許拉取數(shù)據能力等影(yǐng)響,實施批量采集操作(zuò)需考慮源系統可(kě)否用于數(shù)據獲取以及可(kě)獲取批量數(shù)據規模的大(dà)小(xiǎo)。實時(shí)數(shù)據采集是指在數(shù)據産生(shēng)于源系統時(shí)将其拉入數(shù)據湖(hú)層,多(duō)基于Kafka隊列服務實現,該服務将實時(shí)數(shù)據流分組并臨時(shí)存儲為(wèi)用于采集的隊列,還(hái)可(kě)捕獲數(shù)據庫中的數(shù)據變更。實時(shí)數(shù)據為(wèi)持續數(shù)據流,對系統吞吐量和(hé)延遲等方面有(yǒu)更高(gāo)要求。數(shù)據采集層的功能是支持各主流關系數(shù)據庫管理(lǐ)系統(Relational Database Management System,RDBMS)數(shù)據遷庫,可(kě)進行(xíng)跨平台實時(shí)文件交換、各類應用系統實時(shí)日志(zhì)采集、基于業務數(shù)據庫日志(zhì)的增量同步和(hé)各類消息隊列服務等。湖(hú)倉一體(tǐ)将存儲對象可(kě)視(shì)化為(wèi)數(shù)據湖(hú),以确保繼承數(shù)據湖(hú)的多(duō)元混合存儲機制(zhì),同時(shí)按數(shù)據格式和(hé)存儲狀态将數(shù)據湖(hú)劃分為(wèi)原始數(shù)據區(qū)、中間(jiān)數(shù)據區(qū)、已處理(lǐ)數(shù)據區(qū)和(hé)存檔數(shù)據區(qū)。數(shù)據以離線和(hé)實時(shí)兩種形式接入原始數(shù)據區(qū)長期存儲,并保留原格式(如CSV、Apache Parquet和(hé)JSON等)。中間(jiān)數(shù)據區(qū)是原始數(shù)據完成處理(lǐ)任務的中間(jiān)階段,例如數(shù)據清洗、過濾、聚合、附加等,保留中間(jiān)數(shù)據的好處在于避免處理(lǐ)過程重啓造成的數(shù)據丢失。已處理(lǐ)數(shù)據區(qū)是數(shù)據湖(hú)最高(gāo)層,經過加工轉換後的數(shù)據将被應用于數(shù)據分析任務(例如BI、報告和(hé)機器(qì)學習等),以及響應消費需求,服務于各類系統(如報告系統、下遊應用系統、數(shù)據共享系統)等。存檔數(shù)據區(qū)為(wèi)應對長期存儲目标而存在,以冷數(shù)據存儲為(wèi)主,這類數(shù)據一般沒有(yǒu)快速檢索的需求,因此多(duō)采用低(dī)價存儲技(jì)術(shù)。湖(hú)內(nèi)數(shù)據以Apache Parquet等标準文件格式存儲在對象存儲系統中,并附加元數(shù)據層和(hé)API層。元數(shù)據層是數(shù)據湖(hú)存儲重要組件,以往數(shù)據湖(hú)存儲系統僅支持低(dī)級别的對象存儲或文件系統接口,而豐富有(yǒu)效的元數(shù)據可(kě)實現湖(hú)內(nèi)事務管理(lǐ)和(hé)其他數(shù)據管理(lǐ)功能,如Apache Hive工具允許以事務方式更新表,Delta lake和(hé)Apache Iceberg工具支持Apache Parquet、ORC格式文件,在實現與原始數(shù)據湖(hú)相似存儲機制(zhì)的基礎上(shàng)增強可(kě)操作(zuò)性。API層提供豐富的SQL API以支持BI和(hé)報告等,并開(kāi)發大(dà)量聲明(míng)性DataFrame API以支持數(shù)據科學和(hé)機器(qì)學習等高(gāo)級分析,外部應用可(kě)查詢元數(shù)據層并通(tōng)過适當接口實現對湖(hú)內(nèi)數(shù)據的訪問。湖(hú)倉一體(tǐ)功能模塊解耦存儲和(hé)計(jì)算(suàn)資源,使其分别使用獨立集群,可(kě)以實現存儲計(jì)算(suàn)的獨立擴展以支持具有(yǒu)大(dà)數(shù)據工作(zuò)負載的并發用戶。計(jì)算(suàn)層內(nèi)置Hive、Spark、Flink、Impala等計(jì)算(suàn)引擎,為(wèi)湖(hú)內(nèi)數(shù)據的集成、處理(lǐ)、分析等提供豐富的計(jì)算(suàn)環境,主要包括可(kě)支持讀寫分離的數(shù)據倉庫中間(jiān)件、數(shù)據ETL/ELT過程所需的批處理(lǐ)計(jì)算(suàn)引擎、實時(shí)分析所需的流計(jì)算(suàn)引擎、內(nèi)存計(jì)算(suàn)以及可(kě)支持高(gāo)級分析的機器(qì)學習庫。已處理(lǐ)數(shù)據通(tōng)過數(shù)據服務層滿足下遊用戶消費需求,主要包括基于SQL技(jì)術(shù)的數(shù)據倉庫服務、基于NoSQL技(jì)術(shù)的數(shù)據接口(API)和(hé)實時(shí)數(shù)據服務以及基于數(shù)據共享技(jì)術(shù)的共享數(shù)據服務。(1)SQL技(jì)術(shù):根據系統的查詢性能和(hé)成本優化,主要可(kě)采用兩種架構類型的SQL數(shù)據庫作(zuò)為(wèi)服務層。其一是對稱多(duō)處理(lǐ)(SMP)架構,包括SQL Server、Oracle、MySQL等,此類架構優勢在于高(gāo)速度、低(dī)延遲、少(shǎo)故障及事務管理(lǐ),但(dàn)其高(gāo)耦合結構隻适用于數(shù)據量較少(shǎo)的場(chǎng)景,當數(shù)據以PB級别擴張,則需應用大(dà)規模并行(xíng)處理(lǐ)(MPP)架構,包括Azure Synapse、Amazon Redshift等。該架構将數(shù)據按區(qū)塊劃分且并行(xíng)獨立處理(lǐ),同時(shí)支持系統的垂直和(hé)水(shuǐ)平擴展,适用于大(dà)數(shù)據場(chǎng)景。(2)NoSQL技(jì)術(shù):包括文本數(shù)據庫(如MangoDB),具有(yǒu)高(gāo)靈活性和(hé)可(kě)擴展性且支持實時(shí)數(shù)據訪問、鍵值存儲,簡化查詢,用數(shù)據緩存方式降低(dī)訪問延遲、提高(gāo)吞吐量并實現類似于關系數(shù)據庫的寬列存儲,通(tōng)過表內(nèi)可(kě)靈活調整的列結構和(hé)數(shù)據庫寫入模式優化查詢速度。(3)數(shù)據共享技(jì)術(shù):規定數(shù)據發布過程的相關條款和(hé)使用條件、共享過程的訪問管理(lǐ)和(hé)請(qǐng)求審批,确保數(shù)據以受控和(hé)結構化方式在企業內(nèi)部各領域或外部實體(tǐ)間(jiān)流轉。按照湖(hú)倉一體(tǐ)內(nèi)數(shù)據的來(lái)源、數(shù)據類型以及數(shù)據消費群體(tǐ)等,可(kě)主要劃分4類數(shù)據服務:①數(shù)據倉庫服務不僅可(kě)存儲在線和(hé)曆史數(shù)據,還(hái)可(kě)以支持BI和(hé)報告,為(wèi)業務分析需求提供數(shù)據查詢平台,同時(shí)可(kě)作(zuò)為(wèi)下遊數(shù)據集市的數(shù)據源;②實時(shí)數(shù)據服務對接下遊應用系統,例如在線移動系統、客戶關系管理(lǐ)(CRM)系統、網站(zhàn)推薦引擎等;③基于API的服務通(tōng)過各類API與外部服務進行(xíng)交互,通(tōng)常以JSON文件類型為(wèi)主,此類服務可(kě)擴展性最高(gāo);④數(shù)據共享服務提供多(duō)源異構數(shù)據系統間(jiān)數(shù)據共享所需的控制(zhì)方式和(hé)策略,支持數(shù)據以結構化方式共享,該服務通(tōng)常基于API進行(xíng)。數(shù)據分析是将數(shù)據轉化為(wèi)洞察力的過程。湖(hú)倉一體(tǐ)中可(kě)能存在的數(shù)據分析類型包括按需查詢、商業報告、自助BI、數(shù)據湖(hú)探索等在內(nèi)的描述性分析,以及數(shù)據科學、機器(qì)學習等高(gāo)級分析。(1)描述性分析:按需查詢以業務需求為(wèi)導向,理(lǐ)解潛在數(shù)據模式并創建SQL數(shù)據表以查詢獲取數(shù)據、執行(xíng)分析;商業報告根據具體(tǐ)要求定期生(shēng)成,并以移動APP等渠道(dào)分發給相關用戶,報告通(tōng)過挖掘服務層中的數(shù)據和(hé)預先定義的标準化報告格式來(lái)創建,提供了對多(duō)業務領域曆史和(hé)當前的看法以及跨功能維度的分析彙總;自助BI為(wèi)功能用戶擺脫技(jì)術(shù)依賴進行(xíng)分析提供可(kě)能,不同用戶可(kě)依托自助BI對分析報告進行(xíng)切片以創建不同數(shù)據視(shì)圖,滿足個(gè)性化分析需求;基于SQL的工具無法支撐數(shù)據湖(hú)探索工作(zuò),應由技(jì)術(shù)型用戶探索數(shù)據特征生(shēng)成特征集,并建立針對性數(shù)據模型,例如Jupyter Notebook為(wèi)典型的開(kāi)源數(shù)據湖(hú)探索工具。 (2)高(gāo)級分析:數(shù)據科學、機器(qì)學習等高(gāo)級分析以算(suàn)法為(wèi)支撐,用曆史數(shù)據集來(lái)獲得(de)預測結果或從數(shù)據中提取複雜數(shù)學關系來(lái)産生(shēng)洞察力。數(shù)據分析層通(tōng)過分析沙盒、BI服務、數(shù)據科學和(hé)機器(qì)學習等組件,支撐多(duō)種類型的分析活動。(1)分析沙盒:根據執行(xíng)分析的類型創建按需計(jì)算(suàn)的集群,例如SQL集群和(hé)Spark集群等,并通(tōng)過如Jupyter Notebook等交互式工具與數(shù)據湖(hú)或數(shù)據倉庫交互,用其存儲的大(dà)量數(shù)據進行(xíng)特别分析或假設推演分析,沙盒可(kě)支持按需查詢和(hé)數(shù)據湖(hú)探索。 (2)BI服務:具有(yǒu)查看、分析和(hé)理(lǐ)解數(shù)據等能力,并輔助關鍵決策制(zhì)定,為(wèi)企業提供強有(yǒu)力的分析平台,可(kě)支持商業報告和(hé)自助BI。商業報告以标準化格式為(wèi)主,例如預制(zhì)報告和(hé)可(kě)視(shì)化儀表盤等;自助BI可(kě)實現在線分析處理(lǐ)(OLAP)功能,以測量和(hé)維度的形式創建用戶友(yǒu)好型數(shù)據描述。 (3)數(shù)據科學和(hé)機器(qì)學習系統:基本支持湖(hú)格式數(shù)據的直接讀取以進行(xíng)有(yǒu)效訪問,同時(shí)聲明(míng)性DataFrame API可(kě)對機器(qì)學習工作(zuò)負載中的數(shù)據訪問進行(xíng)查詢優化。類似分析沙盒,機器(qì)學習系統由計(jì)算(suàn)層機器(qì)學習庫獲取計(jì)算(suàn)資源并創建按需計(jì)算(suàn)的實例,以執行(xíng)相關探索性數(shù)據分析、特征工程、模型訓練和(hé)測試、可(kě)視(shì)化模型開(kāi)發等。數(shù)據治理(lǐ)為(wèi)相關數(shù)據管理(lǐ)活動提供可(kě)靠遵循規範,避免系統淪為(wèi)數(shù)據沼澤。數(shù)據治理(lǐ)層以保證湖(hú)倉一體(tǐ)數(shù)據的可(kě)靠性、可(kě)訪問性和(hé)高(gāo)質量為(wèi)目标,從內(nèi)容和(hé)過程控制(zhì)的角度可(kě)劃分為(wèi)數(shù)據治理(lǐ)策略、數(shù)據生(shēng)命周期管理(lǐ)、元數(shù)據管理(lǐ)、主數(shù)據管理(lǐ)、數(shù)據質量管理(lǐ)和(hé)數(shù)據安全管理(lǐ)。(1)數(shù)據治理(lǐ)策略:是确保企業數(shù)據和(hé)信息資産得(de)到一緻管理(lǐ)和(hé)正确使用的章程,定義數(shù)據的可(kě)用性、完整性和(hé)一緻性等參數(shù),在數(shù)據發布方式和(hé)消費方式上(shàng)保持一緻,同時(shí)建立數(shù)據架構、标準定義和(hé)版本控制(zhì)等原則,這些(xiē)原則随企業成熟度、願景變化而變化。為(wèi)企業制(zhì)定數(shù)據治理(lǐ)度量評估體(tǐ)系,依托評估工具,根據相關度量維度和(hé)規則為(wèi)治理(lǐ)結果打分并提出改進計(jì)劃。(2)數(shù)據生(shēng)命周期管理(lǐ):持續監管數(shù)據由産生(shēng)到消亡的價值屬性,并實時(shí)反饋,使企業掌握當前數(shù)據狀态。此工作(zuò)需依據基于完整的元數(shù)據信息獲取的數(shù)據特征和(hé)關聯信息來(lái)完成,并創建索引來(lái)跟蹤特定數(shù)據及其關聯數(shù)據。(3)元數(shù)據管理(lǐ):可(kě)為(wèi)湖(hú)內(nèi)數(shù)據提供完整性描述以保持其可(kě)操作(zuò)性,以元數(shù)據為(wèi)基礎形成數(shù)據目錄是避免數(shù)據沼澤化的關鍵。按蘊含信息和(hé)功能屬性可(kě)将元數(shù)據劃分為(wèi)技(jì)術(shù)元數(shù)據、操作(zuò)元數(shù)據和(hé)業務元數(shù)據,需要元數(shù)據捕獲引擎、圖譜和(hé)搜索引擎等組件支持編制(zhì)數(shù)據目錄,分别實現元數(shù)據的定期自動掃描捕獲、自動編目形成可(kě)視(shì)化關系圖以及提供訪問窗口。 (4)主數(shù)據管理(lǐ):針對關鍵業務實體(tǐ)(如員工、客戶、産品、供應商等)建立統一視(shì)圖以在相關數(shù)據存儲中獲得(de)唯一實體(tǐ)識别,并對已識别主數(shù)據按數(shù)據規範要求進行(xíng)治理(lǐ)和(hé)互聯網技(jì)術(shù)(IT)改造,其目标在于提供準确、及時(shí)、完整的主數(shù)據來(lái)源,保證在企業範圍內(nèi)重要業務實體(tǐ)數(shù)據的一緻性(定義和(hé)實際物理(lǐ)數(shù)據一緻),以支持企業內(nèi)部決策分析和(hé)業務流程再造、企業業務流和(hé)工具鏈的打通(tōng)和(hé)串聯。(5)數(shù)據質量管理(lǐ):數(shù)據治理(lǐ)層的最重要環節,數(shù)據質量可(kě)定義為(wèi)數(shù)據适合實際使用的程度,高(gāo)質量的數(shù)據是企業做(zuò)出正确決策的基礎。質量管理(lǐ)的前提是定義同時(shí)适用于數(shù)據湖(hú)層和(hé)數(shù)據服務層的質量規則,依據規則劃分質量等級(以數(shù)據成本和(hé)價值效益為(wèi)參考),按規則實時(shí)監測數(shù)據的完整性、時(shí)效性、唯一性、一緻性、有(yǒu)效性和(hé)精确性等并進行(xíng)打分,以評估企業當前數(shù)據質量水(shuǐ)平,打分結果為(wèi)提出質量改進計(jì)劃和(hé)重新定義質量規則提供可(kě)靠參考。(6)數(shù)據安全管理(lǐ):通(tōng)過身份和(hé)訪問管理(lǐ)(IAM)對訪問用戶進行(xíng)授權和(hé)認證,以确保湖(hú)倉數(shù)據按需訪問的安全性,可(kě)以阻止惡意訪問并通(tōng)過基于風險的訪問控制(zhì)、身份保護和(hé)認證工具來(lái)保證證書(shū)的完整性,同時(shí)不會(huì)幹擾正常的訪問過程。通(tōng)過數(shù)據加密将信息編碼,包括對稱加密和(hé)非對稱加密,加密過程以算(suàn)法(如高(gāo)級加密标準等)和(hé)各類加密工具為(wèi)基礎,以保護存儲在雲服務器(qì)中的數(shù)據并防止多(duō)種網絡攻擊。通(tōng)過數(shù)據屏蔽實現數(shù)據加密但(dàn)保持其可(kě)讀性(僅适用于特定的敏感數(shù)據元素),并在需要時(shí)将屏蔽解除,以靜态數(shù)據屏蔽(SDM)和(hé)動态數(shù)據屏蔽(DDM)方法為(wèi)主。除身份和(hé)訪問控制(zhì)之外,湖(hú)倉一體(tǐ)外部網絡和(hé)內(nèi)部各層級之間(jiān)數(shù)據流動的安全性可(kě)通(tōng)過虛拟網絡、防火(huǒ)牆、虛拟專用網絡(VPN)等技(jì)術(shù)得(de)到保障。依據數(shù)據分析和(hé)服務的主題可(kě)将用戶分為(wèi)技(jì)術(shù)用戶和(hé)功能用戶:前者是在特定領域具有(yǒu)技(jì)術(shù)能力的利益相關者,包括數(shù)據分析師(shī)、數(shù)據科學家(jiā)等;後者是擁有(yǒu)特定領域專業知識的利益相關者,例如管理(lǐ)人(rén)員和(hé)各類信息系統等。湖(hú)倉一體(tǐ)确保所有(yǒu)類型數(shù)據原始格式和(hé)轉換格式的可(kě)訪問性以滿足各類用戶需求。數(shù)據科學家(jiā)專注于所有(yǒu)數(shù)據,在特定平台創建和(hé)測試數(shù)據模型;數(shù)據分析師(shī)受業務驅動,專注于清洗和(hé)處理(lǐ)後的數(shù)據,通(tōng)過查詢、彙總和(hé)切片數(shù)據來(lái)完成分析任務。企業管理(lǐ)人(rén)員通(tōng)過BI工具,由報告系統獲取業務報告用于業務決策。報告系統定期獲取數(shù)據并生(shēng)成報告,為(wèi)訂閱者提供預定、臨時(shí)和(hé)自助式服務。下遊應用系統可(kě)能是OLTP系統、其他系統中的數(shù)據倉庫或數(shù)據湖(hú),這些(xiē)系統定期提取處理(lǐ)後的信息或采用一定機制(zhì)将信息推送至最終用戶。湖(hú)倉一體(tǐ)通(tōng)過大(dà)量API向各類內(nèi)、外部系統提供數(shù)據服務,基于API的數(shù)據消費可(kě)滿足特定系統的個(gè)性化交付需求,具有(yǒu)較高(gāo)的可(kě)擴展性。數(shù)據共享系統為(wèi)用戶提供開(kāi)放可(kě)控的數(shù)據市場(chǎng)。各業務領域湖(hú)倉一體(tǐ)功能模塊各層級間(jiān)依據一定規則實現數(shù)據流入流出。由于數(shù)據倉庫的ETL或數(shù)據湖(hú)的ELT過程均難以滿足湖(hú)倉一體(tǐ)內(nèi)部數(shù)據流轉需要,采用一種提取/加載/轉換/加載(ELTL)方法實現流批一體(tǐ)的數(shù)據采集、存儲和(hé)處理(lǐ),如圖3所示。原格式數(shù)據通(tōng)過批量采集引擎以推/拉方式加載到數(shù)據湖(hú)原始數(shù)據區(qū)并長期保存,采集服務按需提供,在數(shù)據源可(kě)執行(xíng)采集操作(zuò)時(shí)被激活,數(shù)據推送方法包括文件傳輸協議(FTP)和(hé)編程語言等,數(shù)據拉取方法包括開(kāi)放數(shù)據庫鏈接或JAVA數(shù)據庫鏈接等。原始數(shù)據會(huì)加載到批處理(lǐ)引擎,由于湖(hú)內(nèi)數(shù)據的多(duō)源異構屬性,以分布式批處理(lǐ)方式為(wèi)主:制(zhì)定分布策略,将數(shù)據集劃分為(wèi)多(duō)塊,包括散列分布和(hé)循環分布等,并為(wèi)每一塊數(shù)據子集配置獨立計(jì)算(suàn)單元以實施轉換過程。分布式批處理(lǐ)支持計(jì)算(suàn)單位的水(shuǐ)平和(hé)垂直擴展來(lái)加速處理(lǐ),在數(shù)據處理(lǐ)過程中,中間(jiān)數(shù)據被保留,已處理(lǐ)數(shù)據被重新合并為(wèi)統一數(shù)據集保存在已處理(lǐ)數(shù)據區(qū)并按需加載到數(shù)據服務層,中間(jiān)數(shù)據區(qū)和(hé)已處理(lǐ)數(shù)據區(qū)可(kě)與批處理(lǐ)引擎進行(xíng)多(duō)次交互。實時(shí)數(shù)據來(lái)自社交媒體(tǐ)平台、物聯網等流數(shù)據源,主要價值在于時(shí)效性,實時(shí)分析多(duō)在數(shù)據上(shàng)直接進行(xíng),因此無須長期存儲。實時(shí)數(shù)據通(tōng)過事件發布/訂閱服務等消息中間(jiān)件采集到原始數(shù)據區(qū)用作(zuò)備份,并按需加載到流處理(lǐ)引擎。流數(shù)據的轉換過程可(kě)分為(wèi)微批處理(lǐ)和(hé)執行(xíng)階段,微批處理(lǐ)負責從流數(shù)據中提取較小(xiǎo)數(shù)據集并轉換,這個(gè)階段基于時(shí)間(jiān)和(hé)事件。完成微批處理(lǐ)創建後需在其上(shàng)執行(xíng)處理(lǐ)任務,包括分組任務(如過濾、聚合、排序、連接等)以及某一特定事件的事件導向型任務,經處理(lǐ)的數(shù)據将被第一時(shí)間(jiān)推送至數(shù)據服務層并載入已處理(lǐ)數(shù)據區(qū)。數(shù)據湖(hú)向湖(hú)倉一體(tǐ)的過渡代表數(shù)據平台向管理(lǐ)結構化、系統化方向轉變。分布式湖(hú)倉一體(tǐ)意在通(tōng)過業務數(shù)據解耦使單體(tǐ)數(shù)據架構向可(kě)擴展架構轉變,這種轉變更是海量分布數(shù)據環境下數(shù)據治理(lǐ)思維方式的升級。通(tōng)過比較三代數(shù)據平台差異并分析當前湖(hú)倉一體(tǐ)面臨的挑戰,提出分布式湖(hú)倉一體(tǐ)架構,構建完整數(shù)據生(shēng)命周期下的湖(hú)倉一體(tǐ)功能模塊和(hé)數(shù)據流轉過程。下一步,将依托相關技(jì)術(shù)研究該架構落地方法以供相關研究或企業參考。