我看好數(shù)據(jù)湖的未來(lái),但不看好數(shù)據(jù)湖的現(xiàn)在

先隨便扯一扯
2020年中期的時(shí)候,數(shù)據(jù)湖這個(gè)概念應(yīng)該開(kāi)始頻繁的進(jìn)入大家的視線了。
很多兄弟都沒(méi)有搞懂?dāng)?shù)據(jù)湖的概念的時(shí)候就開(kāi)始吹了。
這也符合咱們中國(guó)商業(yè)和技術(shù)環(huán)境特點(diǎn),先把牛逼吹出去,文章先發(fā)出來(lái),先在大家腦海里占有一席之地,然后咱們?cè)匍_(kāi)始干活。
我在之前的文章中,詳細(xì)提到過(guò)數(shù)據(jù)湖這個(gè)概念,說(shuō)實(shí)話,小編自己也是一臉懵逼。
在此,我求求這些大佬你們別天天整這么高大上的詞匯了,以后發(fā)文最好能通俗一點(diǎn)。
下面這段是直接找的Wikipedia和AWS的介紹。此外,阿里云也推出了自己的云產(chǎn)品Data Lake Formation,這個(gè)我們稍后介紹。
Wikipedia 是這么定義的:
A data lake is a system or repository of data stored in its natural/raw format,usually object blobs or files. A data lake is usually a single store of all enterprise data including raw copies of source system data and transformed data used for tasks such as reporting, visualization, advanced analytics and machine learning. A data lake can include structured data from relational databases (rows and columns), semi-structured data (CSV, logs, XML, JSON), unstructured data (emails, documents, PDFs) and binary data (images, audio, video). [2]A data swamp is a deteriorated and unmanaged data lake that is either inaccessible to its intended users or is providing little value
行了,我知道大家不會(huì)看,其實(shí)我也沒(méi)看。翻譯過(guò)來(lái)就是:
數(shù)據(jù)湖是一類存儲(chǔ)數(shù)據(jù)自然/原始格式的系統(tǒng)或存儲(chǔ),通常是對(duì)象塊或者文件。數(shù)據(jù)湖通常是企業(yè)中全量數(shù)據(jù)的單一存儲(chǔ)。全量數(shù)據(jù)包括原始系統(tǒng)所產(chǎn)生的原始數(shù)據(jù)拷貝以及為了各類任務(wù)而產(chǎn)生的轉(zhuǎn)換數(shù)據(jù),各類任務(wù)包括報(bào)表、可視化、高級(jí)分析和機(jī)器學(xué)習(xí)。數(shù)據(jù)湖中包括來(lái)自于關(guān)系型數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)(行和列)、半結(jié)構(gòu)化數(shù)據(jù)(如CSV、日志、XML、JSON)、非結(jié)構(gòu)化數(shù)據(jù)(如email、文檔、PDF等)和二進(jìn)制數(shù)據(jù)(如圖像、音頻、視頻)。數(shù)據(jù)沼澤是一種退化的、缺乏管理的數(shù)據(jù)湖,數(shù)據(jù)沼澤對(duì)于用戶來(lái)說(shuō)要么是不可訪問(wèn)的要么就是無(wú)法提供足夠的價(jià)值。
AWS給出的定義在這里:
A data lake is a centralized repository that allows you to store all your structured and unstructured data at any scale. You can store your data as-is, without having to first structure the data, and run different types of analytics—from dashboards and visualizations to big data processing, real-time analytics, and machine learning to guide better decisions.
翻譯過(guò)來(lái)是這樣的:
數(shù)據(jù)湖是一個(gè)集中式存儲(chǔ)庫(kù),允許您以任意規(guī)模存儲(chǔ)所有結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。您可以按原樣存儲(chǔ)數(shù)據(jù)(無(wú)需先對(duì)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理),并運(yùn)行不同類型的分析 – 從控制面板和可視化到大數(shù)據(jù)處理、實(shí)時(shí)分析和機(jī)器學(xué)習(xí),以指導(dǎo)做出更好的決策。
另外,標(biāo)準(zhǔn)狂魔微軟也給出了自己的定義,我反正沒(méi)看懂,就不說(shuō)了。
我在阿里云的官網(wǎng)上看到的簡(jiǎn)介倒是非常的合理:
數(shù)據(jù)湖是一個(gè)集中式存儲(chǔ)庫(kù),可存儲(chǔ)任意規(guī)模結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),支持大數(shù)據(jù)和AI計(jì)算。數(shù)據(jù)湖構(gòu)建服務(wù)(Data Lake Formation,DLF)作為云原生數(shù)據(jù)湖架構(gòu)核心組成部分,幫助用戶簡(jiǎn)單快速地構(gòu)建云原生數(shù)據(jù)湖解決方案。數(shù)據(jù)湖構(gòu)建提供湖上元數(shù)據(jù)統(tǒng)一管理、企業(yè)級(jí)權(quán)限控制,并無(wú)縫對(duì)接多種計(jì)算引擎,打破數(shù)據(jù)孤島,洞察業(yè)務(wù)價(jià)值。
綜上所述,大家都在突出的一個(gè)概念是:任意規(guī)模結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
好,假設(shè)上面說(shuō)的都是對(duì)的,那么數(shù)據(jù)湖給我描述的應(yīng)該是一個(gè)全新的,分別超越了:
以Hadoop為核心的的離線數(shù)倉(cāng)第一階段
以Lamda為代表架構(gòu)批流一體第二階段
以Kappa為代表架構(gòu)的數(shù)據(jù)一致性第三階段
這三種我們已經(jīng)使用非常成熟的三種構(gòu)建數(shù)據(jù)中心或者數(shù)據(jù)倉(cāng)庫(kù)的形式。
都說(shuō)數(shù)據(jù)湖好?好在哪里?
小編參考了AWS的官網(wǎng)發(fā)現(xiàn),AWS對(duì)于這個(gè)問(wèn)題給了用戶一個(gè)清晰的答案:
數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)優(yōu)化的數(shù)據(jù)庫(kù),用于分析來(lái)自事務(wù)系統(tǒng)和業(yè)務(wù)線應(yīng)用程序的關(guān)系數(shù)據(jù)。事先定義數(shù)據(jù)結(jié)構(gòu)和 Schema 以優(yōu)化快速 SQL 查詢,其中結(jié)果通常用于操作報(bào)告和分析。數(shù)據(jù)經(jīng)過(guò)了清理、豐富和轉(zhuǎn)換,因此可以充當(dāng)用戶可信任的“單一信息源”。
數(shù)據(jù)湖有所不同,因?yàn)樗鎯?chǔ)來(lái)自業(yè)務(wù)線應(yīng)用程序的關(guān)系數(shù)據(jù),以及來(lái)自移動(dòng)應(yīng)用程序、IoT 設(shè)備和社交媒體的非關(guān)系數(shù)據(jù)。捕獲數(shù)據(jù)時(shí),未定義數(shù)據(jù)結(jié)構(gòu)或 Schema。這意味著您可以存儲(chǔ)所有數(shù)據(jù),而不需要精心設(shè)計(jì)也無(wú)需知道將來(lái)您可能需要哪些問(wèn)題的答案。您可以對(duì)數(shù)據(jù)使用不同類型的分析(如 SQL 查詢、大數(shù)據(jù)分析、全文搜索、實(shí)時(shí)分析和機(jī)器學(xué)習(xí))來(lái)獲得見(jiàn)解。

上圖中,AWS特別強(qiáng)調(diào)了"讀取型 Schema"。什么意思?
我個(gè)人的淺見(jiàn):傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)在建設(shè)之前要經(jīng)過(guò)非常詳細(xì)、嚴(yán)謹(jǐn)?shù)脑O(shè)計(jì),比如復(fù)雜的分層、詳細(xì)的表結(jié)構(gòu)甚至預(yù)留大量擴(kuò)展字段應(yīng)對(duì)不時(shí)之需。
【讀取型 Schema】強(qiáng)調(diào)的是,業(yè)務(wù)在進(jìn)入數(shù)倉(cāng)設(shè)計(jì)前的不確定性客觀存在而且大概率沒(méi)有辦法預(yù)測(cè),索性我們一股腦先丟進(jìn)去,在使用的時(shí)候在根據(jù)需要查詢出來(lái)。
基于以上的考慮,數(shù)據(jù)湖的另外一個(gè)能力必須要足夠強(qiáng)大,那就是:可管理性,否則你的數(shù)據(jù)湖就會(huì)退化為【數(shù)據(jù)沼澤】,處于不可用狀態(tài)。
數(shù)據(jù)湖可能的架構(gòu)
這方面小編沒(méi)有什么經(jīng)驗(yàn),我們直接把阿里云的一個(gè)典型Demo圖拿過(guò)來(lái)看一下:

圖來(lái)源于阿里云官網(wǎng)
這個(gè)架構(gòu)里,數(shù)據(jù)湖構(gòu)建完美適配數(shù)據(jù)存儲(chǔ)OSS,同時(shí)對(duì)接大量計(jì)算引擎,滿足用戶不同的分析需求。小編不才,認(rèn)為整個(gè)數(shù)據(jù)湖構(gòu)建的關(guān)鍵在于選擇一類可以擴(kuò)展的基于對(duì)象存儲(chǔ)的分布式文件系統(tǒng)作為最底層的存儲(chǔ)系統(tǒng),開(kāi)源的好像除了HDFS沒(méi)有別的選擇。
此外,大家在各個(gè)大廠的分享中也看到了一些典型的數(shù)據(jù)湖架構(gòu):
小紅書
中原銀行
騰訊數(shù)據(jù)平臺(tái)部
關(guān)于技術(shù)選型
我們先來(lái)看看開(kāi)源的各大廠家的技術(shù)方案是怎么做的?
AWS

上圖是AWS官網(wǎng)給出的數(shù)據(jù)湖解決方案。2018年,AWS 推出了 AWS Lake Formation,整個(gè)方案基于AWS Lake Formation構(gòu)建。根據(jù)AWS的官網(wǎng)介紹,使用 AWS CloudFormation 模板可以在幾分鐘內(nèi)完成數(shù)據(jù)湖架構(gòu)的部署。

阿里云
很遺憾,我沒(méi)有在阿里云官網(wǎng)找到一個(gè)比較完整的大圖,但是我在一篇文章中找到了下面這張圖:

整個(gè)方案依然采用OSS作為數(shù)據(jù)湖的集中存儲(chǔ),其中的 Data Lake Formation 大概和 AWS 的AWS Lake Formation大同小異。
當(dāng)然華為云和騰訊云等等都有自己的解決方案,整體上都和上面類似。
開(kāi)源的方案
開(kāi)源的方案,目前數(shù)據(jù)湖領(lǐng)域跳的最兇的三巨頭包括:Delta、Apache Iceberg 和 Apache Hudi。因?yàn)槠颍疚牟辉谡归_(kāi)討論了,小編在之前的文章中深度對(duì)比過(guò)這些解決方案的異同點(diǎn):

Apache Iceberg 和 Apache Hudi 因?yàn)槿块_(kāi)源,且社區(qū)蓬勃發(fā)展,目前是主流被各大小公司能接受的方案。
我的困惑
我的困惑不在于數(shù)據(jù)湖本身,而在于大眾賦予數(shù)據(jù)湖的定義。
數(shù)據(jù)湖這個(gè)詞是由Pentaho首席技術(shù)官詹姆斯迪克森最初提出的。截止目前為止,各大公司都對(duì)數(shù)據(jù)湖進(jìn)行了自己的定義,但沒(méi)有一個(gè)人能跳出來(lái)告訴我們誰(shuí)是對(duì)的,誰(shuí)是錯(cuò)的?
各大公司和開(kāi)發(fā)者們,你們也不能因?yàn)閿?shù)據(jù)架構(gòu)上用了一個(gè)Hudi或者IceBerg就告訴我你們是【數(shù)據(jù)湖解決方案】。
那么我覺(jué)得,阿里云的驚玄老師說(shuō)的有些道理:
數(shù)據(jù)湖不應(yīng)該從一個(gè)簡(jiǎn)單的技術(shù)平臺(tái)視角來(lái)看,實(shí)現(xiàn)數(shù)據(jù)湖的方式也多種多樣,評(píng)價(jià)一個(gè)數(shù)據(jù)湖解決方案是否成熟,關(guān)鍵應(yīng)該看其提供的數(shù)據(jù)管理能力,具體包括但不限于元數(shù)據(jù)、數(shù)據(jù)資產(chǎn)目錄、數(shù)據(jù)源、數(shù)據(jù)處理任務(wù)、數(shù)據(jù)生命周期、數(shù)據(jù)治理、權(quán)限管理等,以及與外圍生態(tài)的對(duì)接打通能力。
然而上述的這些能力,在傳統(tǒng)的實(shí)時(shí)數(shù)倉(cāng)、離線數(shù)倉(cāng)、批流一體的數(shù)據(jù)倉(cāng)庫(kù)足夠支持業(yè)務(wù)場(chǎng)景的情況下,什么時(shí)機(jī)去搞數(shù)據(jù)湖也值得深思。
難道像2020年初大家瘋了似的上馬Flink,然后一個(gè)月一個(gè)版本進(jìn)行升級(jí)?
我踏馬直呼內(nèi)行。
所以我的觀點(diǎn)【學(xué)而暫時(shí)不用】。
索性等大廠把坑填完了,我們直接短平快卡卡西過(guò)去就好。

