湖倉一體概念快問快答
概念篇
問題一
“湖倉一體”是什么?
“湖倉一體”是一種新的架構(gòu)模式,湖倉一體是將數(shù)據(jù)湖的靈活性和數(shù)倉的易用性、規(guī)范性、高性能結(jié)合起來的融合架構(gòu),無數(shù)據(jù)孤島。湖倉一體數(shù)據(jù)存儲在數(shù)據(jù)湖低成本的存儲架構(gòu)之上,既擁有數(shù)據(jù)湖數(shù)據(jù)格式的開放靈活性,又繼承了數(shù)據(jù)倉庫的高性能、易用性和規(guī)范性。
問題二湖倉一體是偽命題嗎?
當(dāng)然不是,湖倉一體是一種新的架構(gòu)模式,雖然它將數(shù)據(jù)倉庫與數(shù)據(jù)湖的優(yōu)勢充分結(jié)合,但它不同于數(shù)倉和數(shù)據(jù)湖的架構(gòu)。很多新技術(shù)和新概念的出現(xiàn)都會伴隨著用戶的質(zhì)疑,尤其是在中國數(shù)字化快速發(fā)展的過程中,甚至出現(xiàn)過曇花一現(xiàn)的新概念,讓很多企業(yè)投入了無效資源。就湖倉一體這個(gè)概念,我們不妨參考下國際權(quán)威咨詢機(jī)構(gòu) Gartner 對湖倉一體(Lakehouse)的定位,可以看到湖倉一體正處于快速發(fā)展的通道。
Gartner數(shù)據(jù)管理領(lǐng)域技術(shù)成熟度曲線
問題三湖倉一體貌似是個(gè)國外的概念?可能不太適用于中國的國情吧?
有些技術(shù)的發(fā)展在國內(nèi)外確實(shí)是存在較大差異,比如信息安全技術(shù),APP 等,但在數(shù)據(jù)庫和大數(shù)據(jù)基礎(chǔ)領(lǐng)域,中國與國際的發(fā)展非常同步。一個(gè)冷知識:由于中國本土存在著非常多的企業(yè)有著海量數(shù)據(jù)需要管理(如四大行、三大運(yùn)營商、互聯(lián)網(wǎng)大廠),中國在大規(guī)模分布式數(shù)據(jù)庫等方面的技術(shù)需求和土壤甚至要超過美國。得益于大型企業(yè)的超大數(shù)據(jù)體量和復(fù)雜管理需求,湖倉一體這一技術(shù)更可能在中國發(fā)展的更快更好。
問題四 可不可以理解為“湖+倉=湖倉一體”?
很多用戶誤以為湖+倉=湖倉一體,可能是因?yàn)楹}一體整合了湖和倉各自的優(yōu)勢,所以誤認(rèn)為湖倉一體就是原有湖和倉的簡單整合而已。
站在技術(shù)架構(gòu)的角度就會更容易理解這個(gè)問題,過往建設(shè)數(shù)據(jù)湖采用 Hadoop,建設(shè)數(shù)倉采用 MPP 數(shù)據(jù)庫,很難想象 Hadoop+MPP=湖倉一體 會是怎樣詭異的架構(gòu),因?yàn)?Hadoop 和 MPP 本身是無法兼容的,只能通過 Hadoop+MPP+統(tǒng)一管理組件 進(jìn)行邏輯整合,這其實(shí)是我們常說的“邏輯湖倉一體”、“湖倉分體”。
問題五云上的數(shù)據(jù)倉庫和數(shù)據(jù)湖都是可以實(shí)現(xiàn)彈性擴(kuò)展的,是不是可以理解為已經(jīng)實(shí)現(xiàn)了湖倉一體?
很多云廠商都提供了數(shù)據(jù)湖和數(shù)據(jù)倉庫架在自己的云底座上面的,確切的說是提供了云上的 MPP 和云上的 Hadoop,盡管實(shí)現(xiàn)了邏輯上的湖倉一體,但是湖+倉≠湖倉一體,云上的 MPP+Hadoop 仍然會各自形成數(shù)據(jù)孤島和數(shù)據(jù)冗余,仍要通過復(fù)雜的管理組件實(shí)現(xiàn)倉和湖的數(shù)據(jù)同步,本質(zhì)上大多數(shù)廠商的湖倉分體現(xiàn)狀是一樣的。
價(jià)值篇
問題六除了技術(shù)架構(gòu),湖倉一體相較于邏輯湖倉一體、湖倉分體還有哪些不同?創(chuàng)新點(diǎn)在哪里?
確實(shí),新技術(shù)的優(yōu)勢不僅體現(xiàn)在技術(shù)架構(gòu)上,必須在業(yè)務(wù)價(jià)值上形成創(chuàng)新點(diǎn)。為此我們經(jīng)過多個(gè)項(xiàng)目實(shí)踐和長期調(diào)研,總結(jié)出湖倉一體的六大創(chuàng)新點(diǎn) ANCHOR,同時(shí) ANCHOR 也可以作為檢驗(yàn)湖倉一體的金標(biāo)準(zhǔn)。
All Disparate Data(多源異構(gòu)數(shù)據(jù)):支持關(guān)系表、文本、圖像、視頻等結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)存儲。
Native on Cloud(云原生):適合云環(huán)境,自由增減計(jì)算和存儲資源,按用量計(jì)費(fèi),節(jié)約成本。
Consistency(數(shù)據(jù)一致性):通過完善的事務(wù)機(jī)制,保障不同用戶同時(shí)查詢和更新同 一份數(shù)據(jù)時(shí)的一致性。
High Concurrency (超高并發(fā)):支持?jǐn)?shù)十萬用戶使用復(fù)雜分析 查詢并發(fā)訪問同一份數(shù)據(jù)。
One Copy of Data(一份數(shù)據(jù)):所有用戶(BI 用戶、數(shù)據(jù)科學(xué)家 等)可以共享同一份數(shù)據(jù),避免數(shù)據(jù)孤島,實(shí)現(xiàn)一份數(shù)據(jù),就必須采用開放的格式。
Real-Time(實(shí)時(shí)T+0):通過全量數(shù)據(jù) T+0 的流處理和實(shí)時(shí)按需查詢,滿足基于數(shù)據(jù)的事前預(yù)測、事中判斷和事后分析。
問題七湖倉一體相較于邏輯湖倉一體、湖倉分體、湖上建倉,真正解決的痛點(diǎn)是啥?
解決的痛點(diǎn)正如前文答案所述,都是圍繞著 ANCHOR 六大價(jià)值點(diǎn)。除了實(shí)現(xiàn)了傳統(tǒng)架構(gòu)難以實(shí)現(xiàn)的一份數(shù)據(jù)、高性能和高并發(fā)、從離線到實(shí)時(shí)按需查詢,湖倉一體架構(gòu)為企業(yè)帶來的價(jià)值也可以通過一組數(shù)字來說明:
- 平臺共享一份數(shù)據(jù),存儲成本降低 2 倍
- 保障數(shù)據(jù)一致性,數(shù)據(jù)治理變得簡單,治理工作量降低 3 倍
- 平臺開發(fā)工作量降低 1 倍
- 平臺維護(hù)成本降低 2 倍
問題八湖倉一體技術(shù)棧如何選擇?
湖倉一體平臺技術(shù)棧的選擇可以從以下幾個(gè)角度考慮:數(shù)據(jù)需求和業(yè)務(wù)場景、數(shù)據(jù)規(guī)模和性能要求、技術(shù)成熟度和生態(tài)系統(tǒng)、系統(tǒng)復(fù)雜度和維護(hù)成本、團(tuán)隊(duì)技術(shù)能力和培訓(xùn)成本。技術(shù)成熟度和可獲得性方面,強(qiáng)烈建議抓住湖倉一體的本質(zhì)——ANCHOR 六大特性:All Disparate Data(多源異構(gòu)數(shù)據(jù))、Native on Cloud(云原生)、Consistency(數(shù)據(jù)一致性)、High Concurrency (超高并發(fā))、One Copy of Data(一份數(shù)據(jù))、Real-Time(實(shí)時(shí)T+0)。
問題九大家現(xiàn)在提湖倉一體,是“一體”更重要?還是湖和倉的“能力”更重要?
在這個(gè)語境下,我們認(rèn)為“一體”是一體化架構(gòu),“能力”是實(shí)現(xiàn)業(yè)務(wù)價(jià)值的能力?!耙惑w”和“能力”的關(guān)系應(yīng)該是怎樣的?企業(yè)數(shù)據(jù)平臺具備了湖倉一體的一體化架構(gòu),才擁實(shí)現(xiàn)業(yè)務(wù)價(jià)值的能力(即 ANCHOR 六大價(jià)值點(diǎn)),這是一個(gè)因果關(guān)系。單獨(dú)的湖、倉、單獨(dú)的倉、湖倉分體、邏輯湖倉一體都不能完全實(shí)現(xiàn) ANCHOR 六大價(jià)值點(diǎn)。比如使用開放數(shù)據(jù)格式,形成一份數(shù)據(jù),邏輯湖倉一體都是無法實(shí)現(xiàn)的。
問題十建設(shè)完湖倉一體之后,湖在哪里倉在哪里?
從概念上理解,湖倉一體架構(gòu)不再區(qū)分湖和倉。從數(shù)據(jù)存儲的角度,其數(shù)據(jù)存儲在低成本的存儲架構(gòu)之上,既擁有數(shù)據(jù)湖數(shù)據(jù)格式的開放靈活性,又繼承了數(shù)據(jù)倉庫的高性能、易用性和規(guī)范性。過往,構(gòu)建湖只能用 Hadoop 技術(shù)棧,否則存不下,做數(shù)倉就得用 MPP 數(shù)據(jù)庫,這本來就是割裂的,而現(xiàn)階的湖倉一體就不再有這樣的問題,所以湖和倉都在新的一體化平臺中,是架構(gòu)上的統(tǒng)一。
問題十一做湖倉一體是為了提升查詢性能,湖倉一體的數(shù)據(jù)量會越來越大,如何保障性能?
數(shù)據(jù)量越來越大恰恰是我們專注做湖倉一體的重要背景之一,也是湖倉一體重點(diǎn)要解決的問題。一個(gè)好的的湖倉一體架構(gòu)本質(zhì)上是存算分離的,因此,即便數(shù)據(jù)量越來越多,存儲和計(jì)算資源也可以有針對性的擴(kuò)展,保證平臺在面對數(shù)據(jù)快速膨脹的情況下仍然能夠高效執(zhí)行復(fù)雜查詢,此外,針對短時(shí)間內(nèi)大量的查詢需求,湖倉一體平臺可以通過彈性資源臨時(shí)增加計(jì)算資源來提升查詢效率。
需要注意的是,查詢性能不完全依賴環(huán)境資源,數(shù)據(jù)分區(qū)分片、索引優(yōu)化、查詢優(yōu)化、存儲優(yōu)化、緩存優(yōu)化等數(shù)據(jù)庫調(diào)優(yōu)策略都可以提升平臺性能。
實(shí)施篇
問題十二已經(jīng)有數(shù)據(jù)倉庫,將數(shù)據(jù)倉庫改造成湖倉一體容易嗎?
目前的數(shù)據(jù)倉庫基本都是基于 MPP 數(shù)據(jù)庫構(gòu)建的(當(dāng)然也有用 Oracle 做數(shù)倉的情況),MPP 存算耦合,擴(kuò)展能力有限,而湖倉一體架構(gòu)的本質(zhì)要求是存算分離,因此要用支持存算分離、多計(jì)算集群架構(gòu)的分布式數(shù)據(jù)庫替換原來的 MPP,并和其他引擎(如 Spark/Flink 等)共享同一份數(shù)據(jù)。因此基于數(shù)倉的湖倉一體改造路徑是進(jìn)行傳統(tǒng)MPP產(chǎn)品替換,并對既有模型和應(yīng)用進(jìn)行改造。
問題十三已經(jīng)有數(shù)據(jù)湖,是否可以將數(shù)據(jù)湖改造成湖倉一體?
數(shù)據(jù)湖基本都是基于 Hadoop 構(gòu)建的,底層存儲是 HDFS,因此將數(shù)據(jù)湖改造成湖倉一體理論上是可行的,但是需要注意的是,數(shù)據(jù)要采用①開放的格式,以及②存算分離改造。之所以對 Hadoop 平臺進(jìn)行存算分離改造,是因?yàn)榇蠖鄶?shù)的 Hadoop 部署都是存算耦合的,存算分離改造的最佳方式就是引入存支持存算分離、多計(jì)算集群架構(gòu)的分布式數(shù)據(jù)庫,讓多個(gè)引擎(如 Spark/Flink 等)可以共享同一份數(shù)據(jù)。
問題十四你提到讓DB、 Spark 和 Flink 等多個(gè)引擎共享一份數(shù)據(jù),引擎之間如果進(jìn)行分工?
引擎的分工方法和原則就是讓不同引擎做它最擅長的事情。傳統(tǒng)的數(shù)據(jù)湖和數(shù)據(jù)倉庫主要處理三大類數(shù)據(jù):結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)、流式數(shù)據(jù),因此可以有針對性采用不同引擎進(jìn)行數(shù)據(jù)的處理。比如,針對流數(shù)據(jù)處理,建議使用應(yīng)用廣泛的 Flink;針對非結(jié)構(gòu)化數(shù)據(jù)和機(jī)器學(xué)習(xí)等場景,建議使用 Spark;針對結(jié)構(gòu)化數(shù)據(jù)的查詢和跑批等核心場景,建議采用支持存算分離、多計(jì)算集群架構(gòu)的分布式數(shù)據(jù)庫,比如 OushuDB。
湖倉一體虛擬計(jì)算集群示意圖
問題十五目前我們企業(yè)既有湖也有倉,應(yīng)該新建湖倉一體,還是基于湖和倉改造升級比較好?升級改造的話,是從湖到湖倉一體還是從倉到湖倉一體?
對于有湖有倉的用戶,可以考慮從湖到湖倉一體的改造路線,并使用支持存算分離、多計(jì)算集群架構(gòu)的分布式數(shù)據(jù)庫替換傳統(tǒng)的數(shù)倉,請參考上一個(gè)回答的詳細(xì)內(nèi)容。當(dāng)然也可以考慮新建。
問題十六基于原有的湖進(jìn)行湖倉一體改造,改造工作量大嗎?
改造的工作量有些是基于需求而變化的,這里我們可以討論下一些必須的改造工作。
首先要看客戶是不是有數(shù)據(jù)倉庫。如果有數(shù)據(jù)倉庫,就需要進(jìn)行數(shù)倉的遷移,要理清數(shù)據(jù)倉庫的模型情況,實(shí)施過程還涉及到數(shù)據(jù)遷移,模型遷移,腳本遷移,還有做應(yīng)用接口改造,遷移過程中需要有自動化遷移工具。如果沒有數(shù)倉,遷移的工作就可以省去,但湖倉一體平臺建設(shè)就要覆蓋數(shù)據(jù)建模等工作,從0到1實(shí)現(xiàn)數(shù)據(jù)建模也是不小的工程。此外,原數(shù)據(jù)湖與新湖倉一體雖然可以共用底層存儲,比如 HDFS,S3 等,但仍涉及到腳本和應(yīng)用遷移。
這里還要分享一點(diǎn),就是我們不要畏懼平臺改造,平臺改造過程中可以重新梳理數(shù)據(jù)脈絡(luò),找出數(shù)據(jù)隱藏的暗病。解決了既有的數(shù)據(jù)問題,落地的湖倉一體平臺才會是一個(gè)高效的平臺。
問題十七管理數(shù)據(jù)湖和管理數(shù)倉是兩個(gè)團(tuán)隊(duì),實(shí)現(xiàn)湖倉一體后組織架構(gòu)需要什么變化嗎?
對于業(yè)務(wù)側(cè),湖倉一體的實(shí)現(xiàn)會直接影響企業(yè)的數(shù)字化轉(zhuǎn)型戰(zhàn)略,業(yè)務(wù)側(cè)的組織架構(gòu)的變化應(yīng)該根據(jù)企業(yè)數(shù)字化轉(zhuǎn)型戰(zhàn)略進(jìn)行調(diào)整。對于技術(shù)側(cè),IT 體系比較龐大的企業(yè)組織內(nèi)部很可能會區(qū)分?jǐn)?shù)據(jù)湖團(tuán)隊(duì)和數(shù)據(jù)倉庫團(tuán)隊(duì),兩個(gè)團(tuán)隊(duì)之間一般是平行關(guān)系,這也是由于以往技術(shù)架構(gòu)割裂和業(yè)務(wù)歸口造成的歷史原因。湖倉一體實(shí)現(xiàn)后,生態(tài)整合了,技術(shù)可擴(kuò)展性更強(qiáng)了,易用性更高了,湖倉一體平臺依然包括多個(gè)組件,比如數(shù)據(jù)庫,不同的計(jì)算引擎,存儲,調(diào)度,ETL 工具,數(shù)據(jù)資產(chǎn)管理,BI 工具等,根據(jù)用戶的具體情況,依然需要多人或者多個(gè)團(tuán)隊(duì)合作。但這本質(zhì)上是管理問題,不是技術(shù)問題,管理問題首先還是應(yīng)該理清企業(yè)自身的管理訴求和數(shù)字化轉(zhuǎn)型戰(zhàn)略。