7000字,詳解倉湖一體架構(gòu)!

在了解湖倉一體化之前,我們先來看一則有關(guān)數(shù)據(jù)倉庫的有趣故事吧~
沃爾瑪擁有世界上最大的數(shù)據(jù)倉庫系統(tǒng),它利用數(shù)據(jù)挖掘方法對交易數(shù)據(jù)進行分析后發(fā)現(xiàn)"跟尿布一起購買最多的商品竟是啤酒!后來經(jīng)過大量實際調(diào)查和分析,發(fā)現(xiàn)在美國,一些年輕的父親下班后經(jīng)常要到超市去買嬰兒尿布,而他們中有30%~40%的人同時也為自己買一些啤酒,這是因為美國的太太們常叮囑她們的丈夫下班后為小孩買尿布,而丈夫們在買尿布后又隨手帶回了他們喜歡的啤酒。
這就是大數(shù)據(jù)領域經(jīng)常講的啤酒與尿布的故事!
01 ?什么是數(shù)據(jù)倉庫、數(shù)據(jù)集市和數(shù)據(jù)湖?
一、數(shù)據(jù)倉庫
早期系統(tǒng)采用數(shù)據(jù)庫來存放管理數(shù)據(jù),但是隨著大數(shù)據(jù)技術(shù)的興起,大家想要通過大數(shù)據(jù)技術(shù)來找到數(shù)據(jù)之間可能存在的關(guān)系,所以大家設計了一套新的數(shù)據(jù)存儲管理系統(tǒng),把所有的數(shù)據(jù)全部存儲到數(shù)據(jù)倉庫,然后統(tǒng)一對數(shù)據(jù)處理,這個系統(tǒng)叫做數(shù)據(jù)倉庫。而數(shù)據(jù)庫缺少靈活和強大的處理能力。
在計算機領域,數(shù)據(jù)倉庫(英語:data warehouse,也稱為企業(yè)數(shù)據(jù)倉庫)是用于報告和數(shù)據(jù)分析的系統(tǒng),被認為是商業(yè)智能的核心組件。數(shù)據(jù)倉庫是來自一個或多個不同源的集成數(shù)據(jù)的中央存儲庫。數(shù)據(jù)倉庫將當前和歷史數(shù)據(jù)存儲在一起,以利各種分析方法如在線分析處理(OLAP)、數(shù)據(jù)挖掘(Data Mining),幫助決策者能快速從大量數(shù)據(jù)中,分析出有價值的信息,幫助建構(gòu)商業(yè)智能(BI)。
盡管倉庫非常適合結(jié)構(gòu)化數(shù)據(jù),但是許多現(xiàn)代企業(yè)必須處理非結(jié)構(gòu)化數(shù)據(jù),半結(jié)構(gòu)化數(shù)據(jù)以及具有高多樣性、高速度和高容量的數(shù)據(jù)。數(shù)據(jù)倉庫不適用于許多此類場景,并且成本效益并非最佳。


二、數(shù)據(jù)集市
例如公司里的某一個部門想對投資者服務數(shù)據(jù)進行分析,于是他們建立一個投資者服務數(shù)據(jù)的數(shù)據(jù)集市,其中數(shù)據(jù)從數(shù)據(jù)倉庫中抽取:

三、數(shù)據(jù)湖
隨著當前大量信息化發(fā)展和電子設備產(chǎn)品普及,產(chǎn)生大量的照片、視頻、文檔等非結(jié)構(gòu)化數(shù)據(jù),人們也想通過大數(shù)據(jù)技術(shù)找到這些數(shù)據(jù)的關(guān)系,所以設計了一個比數(shù)據(jù)倉庫還要大的系統(tǒng),可以把非結(jié)構(gòu)化和結(jié)構(gòu)化數(shù)據(jù)共同存儲和做一些處理,這個系統(tǒng)叫做數(shù)據(jù)湖。
數(shù)據(jù)倉庫的成長性很好,而數(shù)據(jù)湖更靈活。數(shù)據(jù)倉庫支持的數(shù)據(jù)結(jié)構(gòu)種類比較單一,數(shù)據(jù)湖的種類比較豐富,可以包羅萬象。數(shù)據(jù)倉庫更加適合成熟的數(shù)據(jù)當中的分析和處理,數(shù)據(jù)湖更加適合在異構(gòu)數(shù)據(jù)上的價值的挖掘。

數(shù)據(jù)湖雖然適合存儲數(shù)據(jù),但缺少一些關(guān)鍵功能:它們不支持事務處理,不保證數(shù)據(jù)質(zhì)量,并且缺乏一致性/隔離性,從而幾乎無法實現(xiàn)混合追加和讀取數(shù)據(jù),以及完成批處理和流式作業(yè)。由于這些原因,數(shù)據(jù)湖的許多功能尚未實現(xiàn),并且在很多時候喪失了數(shù)據(jù)湖的優(yōu)勢。
02 ?數(shù)據(jù)湖+數(shù)據(jù)倉=湖倉一體?
之前的微博基于大數(shù)據(jù)的需求發(fā)展了數(shù)據(jù)倉庫平臺,基于AI的需求,發(fā)展了數(shù)據(jù)湖平臺,這兩套大數(shù)據(jù)平臺在集群層面完全是割裂的,數(shù)據(jù)和計算無法在兩個平臺間自由流動。而使用湖倉一體,就能實現(xiàn)數(shù)據(jù)湖和數(shù)倉之間的無縫流轉(zhuǎn),打通了數(shù)據(jù)存儲和計算的不同的層面。
2、靈活性與成長性兼得

通過上面這張圖,可知靈活性和成長性,對于處于不同時期的企業(yè)來說,重要性不同。
當企業(yè)處于初創(chuàng)階段,數(shù)據(jù)從產(chǎn)生到消費還需要一個創(chuàng)新探索的階段才能逐漸沉淀下來,那么用于支撐這類業(yè)務的大數(shù)據(jù)系統(tǒng),靈活性就更加重要,數(shù)據(jù)湖的架構(gòu)更適用。
當企業(yè)逐漸成熟起來,已經(jīng)沉淀為一系列數(shù)據(jù)處理流程,問題開始轉(zhuǎn)化為數(shù)據(jù)規(guī)模不斷增長,處理數(shù)據(jù)的成本不斷增加,參與數(shù)據(jù)流程的人員、部門不斷增多,那么用于支撐這類業(yè)務的大數(shù)據(jù)系統(tǒng),成長性的好壞就決定了業(yè)務能夠發(fā)展多遠。數(shù)據(jù)倉庫的架構(gòu)更適用。

經(jīng)過對數(shù)據(jù)湖和數(shù)據(jù)倉庫的深入闡述和比較,可以發(fā)現(xiàn):數(shù)據(jù)湖和數(shù)據(jù)倉庫一個面向初創(chuàng)用戶友好,一個成長性更佳。對企業(yè)來說,數(shù)據(jù)湖和數(shù)據(jù)倉庫是否必須是一個二選一的選擇題?是否能有一種方案同時兼顧數(shù)據(jù)湖的靈活性和云數(shù)據(jù)倉庫的成長性,將二者有效結(jié)合起來為用戶實現(xiàn)更低的總體擁有成本?那么湖倉一體化就是答案!
04 ?什么是湖倉一體化?
湖倉一體是一種新型開放式架構(gòu),將數(shù)據(jù)湖和數(shù)據(jù)倉庫的優(yōu)勢充分結(jié)合,它構(gòu)建在數(shù)據(jù)湖低成本的數(shù)據(jù)存儲架構(gòu)之上,又繼承了數(shù)據(jù)倉庫的數(shù)據(jù)處理和管理功能,打通數(shù)據(jù)湖和數(shù)據(jù)倉庫兩套體系,讓數(shù)據(jù)和計算在湖和倉之間自由流動。作為新一代大數(shù)據(jù)技術(shù)架構(gòu),將逐漸取代單一數(shù)據(jù)湖和數(shù)據(jù)倉庫架構(gòu)。
有人把“湖倉一體”做了形象的比喻,就好像湖邊搭建了很多小房子,有的可以負責數(shù)據(jù)分析,有的來運轉(zhuǎn)機器學習,有的來檢索音視頻等等,而這些數(shù)據(jù)源流,都可以從數(shù)據(jù)湖里輕松取得。

05 ?湖倉一體Data Lakehouse介紹
事務支持:Lakehouse可以處理多條不同的數(shù)據(jù)管道。這意味著它可以在不破壞數(shù)據(jù)完整性的前提下支持并發(fā)的讀寫事務。 Schemas:數(shù)倉會在所有存儲其上的數(shù)據(jù)上施加Schema,而數(shù)據(jù)湖則不會。Lakehouse的架構(gòu)可以根據(jù)應用的需求為絕大多數(shù)的數(shù)據(jù)施加schema,使其標準化。 報表以及分析應用的支持:報表和分析應用都可以使用這一存儲架構(gòu)。Lakehouse里面所保存的數(shù)據(jù)經(jīng)過了清理和整合的過程,它可以用來加速分析。同時相比于數(shù)倉,它能夠保存更多的數(shù)據(jù),數(shù)據(jù)的時效性也會更高,能顯著提升報表的質(zhì)量。 數(shù)據(jù)類型擴展:數(shù)倉僅可以支持結(jié)構(gòu)化數(shù)據(jù),而Lakehouse的結(jié)構(gòu)可以支持更多不同類型的數(shù)據(jù),包括文件、視頻、音頻和系統(tǒng)日志。 端到端的流式支持:Lakehouse可以支持流式分析,從而能夠滿足實時報表的需求,實時報表在現(xiàn)在越來越多的企業(yè)中重要性在逐漸提高。 計算存儲分離:我們往往使用低成本硬件和集群化架構(gòu)來實現(xiàn)數(shù)據(jù)湖,這樣的架構(gòu)提供了非常廉價的分離式存儲。Lakehouse是構(gòu)建在數(shù)據(jù)湖之上的,因此自然也采用了存算分離的架構(gòu),數(shù)據(jù)存儲在一個集群中,而在另一個集群中進行處理。 開放性:Lakehouse在其構(gòu)建中通常會使Iceberg,Hudi,Delta Lake等構(gòu)建組件,首先這些組件是開源開放的,其次這些組件采用了Parquet,ORC這樣開放兼容的存儲格式作為下層的數(shù)據(jù)存儲格式,因此不同的引擎,不同的語言都可以在Lakehouse上進行操作。
湖倉一體能發(fā)揮出數(shù)據(jù)湖的靈活性與生態(tài)豐富性,以及數(shù)據(jù)倉庫的成長性與企業(yè)級能力。幫助企業(yè)建立數(shù)據(jù)資產(chǎn)、實現(xiàn)數(shù)據(jù)業(yè)務化、進而推進全線業(yè)務智能化,實現(xiàn)數(shù)據(jù)驅(qū)動下的企業(yè)數(shù)據(jù)智能創(chuàng)新,全面支撐企業(yè)未來大規(guī)模業(yè)務智能落地。其主要優(yōu)勢主要有以下幾個方面:
數(shù)據(jù)重復性:如果一個組織同時維護了一個數(shù)據(jù)湖和多個數(shù)據(jù)倉庫,這無疑會帶來數(shù)據(jù)冗余。在最好的情況下,這僅僅只會帶來數(shù)據(jù)處理的不高效,但是在最差的情況下,它會導致數(shù)據(jù)不一致的情況出現(xiàn)。湖倉一體的結(jié)合,能夠去除數(shù)據(jù)的重復性,真正做到了唯一。
高存儲成本:數(shù)據(jù)倉庫和數(shù)據(jù)湖都是為了降低數(shù)據(jù)存儲的成本。數(shù)據(jù)倉庫往往是通過降低冗余,以及整合異構(gòu)的數(shù)據(jù)源來做到降低成本。而數(shù)據(jù)湖則往往使用大數(shù)據(jù)文件系統(tǒng)和Spark在廉價的硬件上存儲計算數(shù)據(jù)。湖倉一體架構(gòu)的目標就是結(jié)合這些技術(shù)來最大力度降低成本。
報表和分析應用之間的差異:數(shù)據(jù)科學傾向于與數(shù)據(jù)湖打交道,使用各種分析技術(shù)來處理未經(jīng)加工的數(shù)據(jù)。而報表分析師們則傾向于使用整合后的數(shù)據(jù),比如數(shù)據(jù)倉庫或是數(shù)據(jù)集市。而在一個組織內(nèi),往往這兩個團隊之間沒有太多的交集,但實際上他們之間的工作又有一定的重復和矛盾。而當使用湖倉一體架構(gòu)后,兩個團隊可以在同一數(shù)據(jù)架構(gòu)上進行工作,避免不必要的重復。
數(shù)據(jù)停滯:在數(shù)據(jù)湖中,數(shù)據(jù)停滯是一個最為嚴重的問題,如果數(shù)據(jù)一直無人治理,那將很快變?yōu)閿?shù)據(jù)沼澤。我們往往輕易的將數(shù)據(jù)丟入湖中,但缺乏有效的治理,長此以往,數(shù)據(jù)的時效性變得越來越難追溯。湖倉一體的引入,對于海量數(shù)據(jù)進行治理,能夠更有效地幫助提升分析數(shù)據(jù)的時效性。
潛在不兼容性帶來的風險:數(shù)據(jù)分析仍是一門興起的技術(shù),新的工具和技術(shù)每年仍在不停地出現(xiàn)中。一些技術(shù)可能只和數(shù)據(jù)湖兼容,而另一些則又可能只和數(shù)據(jù)倉庫兼容。湖倉一體的架構(gòu)意味著為兩方面做準備。
07? 湖倉一體落地路徑與成本
A:現(xiàn)在大多數(shù)企業(yè)都已經(jīng)有了自己的一套大數(shù)據(jù)架構(gòu),他們?nèi)绾位谝延械募軜?gòu)落地湖倉一體?有哪些可行的落地路徑?成本可能主要會來自哪里?
Q:現(xiàn)在有一部分企業(yè)已經(jīng)有了自己的大數(shù)據(jù)架構(gòu),這些企業(yè)相對來說可能誕生的比較早,大多數(shù)都是選的 Hadoop 體系,或是自建的 Hadoop 體系,或是使用云上托管的 Hadoop 體系。這些企業(yè)可以有很多選擇,他可以選擇像 Databricks 那樣的方案,也可以選擇像 MaxCompute 這樣的方案。
這兩條路徑都相對可行,那怎么選?這通常要看企業(yè)是不是希望在大數(shù)據(jù)技術(shù)棧上做更多投入。如果企業(yè)覺得沒必要在基礎設施上投很多資源,而是要把更多資源放在業(yè)務上,那選一個更偏全托管版的湖倉一體解決方案更有價值。反之,如果企業(yè)技術(shù)人員很多,希望底層基礎設施足夠靈活并且是自己可控的,就可以選擇在湖上建倉的模式。
還有一些比較新的企業(yè),比如過去三年內(nèi)成立的,它們有很多都處于高速增長階段。這些企業(yè)其實天生就長在云上,甚至一開始選的大數(shù)據(jù)架構(gòu)就已經(jīng)是云數(shù)倉的架構(gòu),這類企業(yè)基于現(xiàn)有的架構(gòu)向前演進相對比較簡單。只要盡量使用云基礎設施,開通幾個云服務就能形成一套湖倉一體架構(gòu)了,這是一個簡單直接且相對單一化的路徑。
那成本主要來自哪里?如果企業(yè)選擇全托管的湖倉一體解決方案,則成本主要來自于對當前數(shù)據(jù),比如數(shù)倉遷移、數(shù)據(jù)整理等一次性開支,一旦這部分工作做完,后續(xù)在數(shù)據(jù)治理上形成正循環(huán),整體成本不會太高。如果企業(yè)選擇自己維護一套湖倉一體架構(gòu),則成本主要來自持續(xù)維護和調(diào)優(yōu)整套基礎設施的人力成本和硬件成本。
A:根據(jù)您的了解,當前企業(yè)嘗試落地湖倉一體的時候遇到的問題和挑戰(zhàn)主要有哪些?現(xiàn)在是采用湖倉一體的好時機嗎?
Q:現(xiàn)在大多數(shù)企業(yè)都還沒有用到湖倉一體的新架構(gòu),他們要么選擇了數(shù)據(jù)湖方案,要么選擇了數(shù)倉方案。湖倉一體作為一個新興架構(gòu),很多企業(yè)目前還在早期探索階段。有些企業(yè)在把數(shù)據(jù)放到數(shù)據(jù)湖上之后,發(fā)現(xiàn)在數(shù)據(jù)湖上做好數(shù)據(jù)治理或者數(shù)據(jù)管理相對比較困難,這個時候再去采用湖倉一體模式,在現(xiàn)有相對更靈活但不夠管理化的數(shù)據(jù)上,再抽象一層數(shù)倉層和治理層,對數(shù)據(jù)做更好的管理和治理。對于數(shù)倉的用戶,如果采用的數(shù)倉系統(tǒng)支持湖倉一體架構(gòu),直接掛載數(shù)據(jù)湖就好了。
企業(yè)嘗試落地湖倉一體時會遇到的問題和挑戰(zhàn)主要有幾點。首先,如果團隊沒有足夠好的數(shù)據(jù)治理或數(shù)據(jù)管理經(jīng)驗,挑戰(zhàn)會比較大。這也是為什么我們推出的方案幾乎都在向全托管或全服務的 SaaS 模式走,就是希望能夠降低門檻。
其次,對于自建湖倉一體的企業(yè),他們會遇到的挑戰(zhàn)主要是湖倉一體的高復雜度,特別是湖倉之間如何協(xié)同的問題,這里面涉及到兩套系統(tǒng)存儲打通的問題、元數(shù)據(jù)一致性問題、湖和倉上不同引擎之間數(shù)據(jù)交叉引用的問題,以及帶寬問題、安全問題,等等。另外,由于湖倉一體架構(gòu)底層是一個二元體系,那向上面向用戶的時候,用戶是不是能看到兩個體系?如果用戶能夠看到兩個體系的話,如何區(qū)分和引導?如果用戶看不到的話,那底下開發(fā)需要做什么樣的封裝?這些都是自建湖倉體系會遇到的問題。
總之,如果企業(yè)并不是一定要大力投入做基礎設施的話,直接采用全托管版本的湖倉一體的架構(gòu)會簡單很多。
最后,湖倉一體還是一個新興的方向,很多問題還在探索中,比如哪些數(shù)據(jù)放在數(shù)倉 / 數(shù)據(jù)湖?更適合有一定探索和創(chuàng)新意愿的企業(yè)。
