到底什么是“數(shù)據(jù)湖”?
什么是數(shù)據(jù)湖
數(shù)據(jù)湖,英文名叫做Data Lake。它和數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)一樣,是一種存儲(chǔ)和處理數(shù)據(jù)的平臺(tái)。
或者,更準(zhǔn)確來(lái)說(shuō),數(shù)據(jù)湖是一個(gè)技術(shù)體系。它不是某一個(gè)具體的產(chǎn)品,而是一種架構(gòu),包括了很多的技術(shù)和組件(下文會(huì)詳細(xì)說(shuō))。
我們還是先從數(shù)據(jù)湖的發(fā)展歷程開(kāi)始說(shuō)起吧。
2010年10月,在紐約的Hadoop World大會(huì)上,Pentaho公司創(chuàng)始人及CTO詹姆斯·迪克森(James Dixon)率先提出了數(shù)據(jù)湖的概念。當(dāng)時(shí),他之所以提出數(shù)據(jù)湖,主要是為了推廣自家的Pentaho產(chǎn)品以及Hadoop。
它是大數(shù)據(jù)的一個(gè)核心技術(shù),誕生于2006年,具有極強(qiáng)的數(shù)據(jù)存儲(chǔ)和處理能力。
詹姆斯·迪克森的Pentaho產(chǎn)品,是一個(gè)BI(Business Intelligence,商業(yè)智能)分析組件,基于Hadoop技術(shù)。
介紹數(shù)據(jù)倉(cāng)庫(kù)的時(shí)候,小棗君提到過(guò),數(shù)據(jù)倉(cāng)庫(kù)會(huì)把眾多數(shù)據(jù)源的數(shù)據(jù)匯集起來(lái),進(jìn)行ETL(抽取Extract、轉(zhuǎn)換Transform和加載Load)三板斧操作,然后存儲(chǔ),用于BI、SQL查詢、數(shù)據(jù)挖掘、數(shù)據(jù)分析等目的。
圖片
換言之,Pentaho,是將當(dāng)時(shí)新興的Hadoop技術(shù)應(yīng)用于數(shù)據(jù)倉(cāng)庫(kù)的一個(gè)嘗試,主要是為了解決數(shù)據(jù)倉(cāng)庫(kù)的能力不足問(wèn)題。
數(shù)據(jù)倉(cāng)庫(kù)正式誕生于1990年左右,到2010年,已經(jīng)無(wú)法跟上時(shí)代。
數(shù)據(jù)倉(cāng)庫(kù)(包括數(shù)據(jù)集市),會(huì)對(duì)來(lái)自數(shù)據(jù)源的數(shù)據(jù)進(jìn)行預(yù)處理和篩選。所以,在進(jìn)行數(shù)據(jù)分析和數(shù)據(jù)價(jià)值挖掘時(shí),會(huì)面臨幾個(gè)問(wèn)題:
1、數(shù)據(jù)被預(yù)處理過(guò),只保留了指定的屬性。分析時(shí),只能回答之前預(yù)設(shè)的問(wèn)題。
2、數(shù)據(jù)被篩選過(guò),很多底層的細(xì)節(jié)被篩除了。分析時(shí),無(wú)法獲得這些信息。
3、隨著當(dāng)時(shí)互聯(lián)網(wǎng)的高速發(fā)展,非結(jié)構(gòu)化數(shù)據(jù)(電子郵件,文檔, PDF)以及半結(jié)構(gòu)化數(shù)據(jù)(CSV,日志, XML, JSON)迅猛增長(zhǎng)。數(shù)據(jù)倉(cāng)庫(kù)主要以處理結(jié)構(gòu)化的數(shù)據(jù)(關(guān)系型數(shù)據(jù)庫(kù),例如數(shù)據(jù)表格、行與列)為主,無(wú)法很好地滿足需求。
換言之,數(shù)據(jù)倉(cāng)庫(kù),是把所有數(shù)據(jù)源的數(shù)據(jù),按一開(kāi)始制定的規(guī)則,進(jìn)行了處理,變成了產(chǎn)品,缺乏靈活性。
而數(shù)據(jù)湖,是利用Hadoop等大數(shù)據(jù)技術(shù)的處理能力和成本優(yōu)勢(shì),將所有數(shù)據(jù)源的數(shù)據(jù),不做預(yù)處理,全部都存起來(lái)。
圖片
這就解決了前面提到的幾個(gè)問(wèn)題:
1、數(shù)據(jù)湖中的數(shù)據(jù)接近原生,內(nèi)容齊全,屬性完整。應(yīng)用層在使用數(shù)據(jù)時(shí),可以基于需求,進(jìn)行靈活設(shè)計(jì)。
2、數(shù)據(jù)信息未被篩選,底層細(xì)節(jié)都在,可以盡可能還原業(yè)務(wù)(也是為了更好地分析)。
3、結(jié)構(gòu)化、非結(jié)構(gòu)化、半結(jié)構(gòu)化,所有數(shù)據(jù)都能保存和處理,滿足互聯(lián)網(wǎng)時(shí)代發(fā)展的需要。
數(shù)據(jù)湖還解決了一個(gè)重要問(wèn)題,那就是數(shù)據(jù)孤島。很顯然,企業(yè)內(nèi)部各個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)都放在一起了,當(dāng)然也就沒(méi)有孤島了,可以開(kāi)發(fā)橫跨多個(gè)系統(tǒng)的數(shù)據(jù)應(yīng)用。
我們可以舉個(gè)買菜炒菜的例子。
數(shù)據(jù)倉(cāng)庫(kù),因?yàn)榇鎯?chǔ)成本高,所以,買了菜之后,會(huì)進(jìn)行預(yù)處理,變成指定的炒菜素材,例如土豆塊、菜葉、肉絲等。炒菜時(shí),廚師直接取用。如果廚師想要做一些特殊的菜,一些原生態(tài)的菜,就沒(méi)辦法了。如果廚師想要燒魚(yú),也沒(méi)辦法。
數(shù)據(jù)湖,就是你擁有了一個(gè)超大且便宜的空間,可以保存你購(gòu)買的所有食材。食材的品種非常豐富,且不需要做任何預(yù)處理。各個(gè)廚師可以根據(jù)自己的需要,在炒菜時(shí)自行處理。廚師擁有了更多的靈活度,菜品也更加豐富。
數(shù)據(jù)湖的出現(xiàn),滿足了企業(yè)用戶存儲(chǔ)全域原始數(shù)據(jù)的需求。
2011年,CITO Research網(wǎng)站的CTO和作家丹·伍德斯(Dan Woods)也力推數(shù)據(jù)湖的概念。他指出:“如果我們把數(shù)據(jù)比作大自然的水,那么各個(gè)江川河流的水未經(jīng)加工,源源不斷地匯聚到數(shù)據(jù)湖中?!?/p>
很多人也許會(huì)問(wèn),為什么叫“數(shù)據(jù)湖”?而不是“數(shù)據(jù)池”、“數(shù)據(jù)河”、“數(shù)據(jù)?!?
因?yàn)椤皵?shù)據(jù)池”太小,體現(xiàn)不出數(shù)據(jù)的大量?!皵?shù)據(jù)河”是流動(dòng)的,數(shù)據(jù)無(wú)法保存?!皵?shù)據(jù)?!眲t是因?yàn)闆](méi)有邊界。數(shù)據(jù)湖是屬于企業(yè)的,需要邊界,需要注意隱私和安全。
數(shù)據(jù)湖的主要特征
我們?cè)俸?jiǎn)單地梳理一下數(shù)據(jù)湖的優(yōu)點(diǎn)。
第一,數(shù)據(jù)的多樣性。
數(shù)據(jù)湖可以存儲(chǔ)多種類型的數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。這符合了物聯(lián)網(wǎng)(IoT)、社交媒體和移動(dòng)互聯(lián)網(wǎng)的時(shí)代需求。
最近這幾年,AI特別火爆。數(shù)據(jù)是AI的三要素(算力、算法、數(shù)據(jù))之一。數(shù)據(jù)湖有利于企業(yè)發(fā)展AI業(yè)務(wù),例如機(jī)器學(xué)習(xí)、生成式人工智能等。
第二,處理的實(shí)時(shí)性。
傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù),采用的是——寫(xiě)時(shí)模式(Schema-On-Write)。數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)時(shí),首先需要定義好它。
數(shù)據(jù)湖,采用的是——讀時(shí)模式(Schema-On-Read)。只需加載原始數(shù)據(jù),然后,當(dāng)準(zhǔn)備使用數(shù)據(jù)時(shí),再定義它。
這是兩種截然不同的數(shù)據(jù)處理方法。數(shù)據(jù)湖簡(jiǎn)化了前期操作,數(shù)據(jù)準(zhǔn)備的周期更短,可以靈活滿足更多不同上層業(yè)務(wù)的高效率分析訴求。
圖片
第三,容量更大。
數(shù)據(jù)湖具有海量的數(shù)據(jù)存儲(chǔ)能力。數(shù)據(jù)湖基于分布式存儲(chǔ)系統(tǒng)構(gòu)建,能夠靈活擴(kuò)展,可以輕松應(yīng)對(duì)PB級(jí)甚至EB級(jí)的數(shù)據(jù)量。
第四,成本更低。
數(shù)據(jù)湖往往基于開(kāi)源軟件和廉價(jià)硬件構(gòu)建,而且部署在云環(huán)境中,成本大幅下降,減少了企業(yè)的投資。
第五,應(yīng)用的多樣化。
前面說(shuō)了,數(shù)據(jù)湖保留了數(shù)據(jù)的原始特征和細(xì)節(jié),所以,為后續(xù)的靈活分析和挖掘提供了豐富素材。企業(yè)用戶可以進(jìn)行批處理分析、實(shí)時(shí)流處理分析和交互式分析,滿足不同業(yè)務(wù)場(chǎng)景的需求。
數(shù)據(jù)湖面對(duì)的挑戰(zhàn)
說(shuō)完了優(yōu)點(diǎn),我們?cè)賮?lái)看看挑戰(zhàn)。
建設(shè)和使用數(shù)據(jù)湖,不是一件簡(jiǎn)單的事情。很多企業(yè)盲目跟風(fēng)建設(shè)數(shù)據(jù)湖,最終卻沒(méi)有達(dá)到效果。
想要擁抱數(shù)據(jù)湖,面對(duì)的挑戰(zhàn)主要來(lái)自兩個(gè)方面。
第一,是性能。
數(shù)據(jù)湖的數(shù)據(jù)量很大,數(shù)據(jù)格式也很雜。缺乏一致的數(shù)據(jù)結(jié)構(gòu)和ACID(原子性、一致性、隔離性和持久性)事務(wù)支持,導(dǎo)致數(shù)據(jù)湖在滿足報(bào)告和分析需求時(shí)性能不佳。
第二,是數(shù)據(jù)治理。
數(shù)據(jù)治理是數(shù)據(jù)湖的最核心要素(沒(méi)有之一),指對(duì)企業(yè)中數(shù)據(jù)的可用性、完整性和安全性的全面管理,以提升數(shù)據(jù)的質(zhì)量和可用性。
前面提到,我們可以將數(shù)據(jù)源的數(shù)據(jù)“倒入”數(shù)據(jù)湖,無(wú)需進(jìn)行處理。但是,“不處理”并不代表“不治理”、“不管理”。
在介紹數(shù)據(jù)倉(cāng)庫(kù)的時(shí)候,我們提到過(guò)元數(shù)據(jù)。元數(shù)據(jù),就是管理數(shù)據(jù)的數(shù)據(jù)。元數(shù)據(jù)中包括了數(shù)據(jù)存儲(chǔ)位置、數(shù)據(jù)格式、數(shù)據(jù)模式、數(shù)據(jù)分布等信息。
數(shù)據(jù)湖擁有海量數(shù)據(jù),管理元數(shù)據(jù)顯得更為重要。
數(shù)據(jù)湖會(huì)建立一個(gè)數(shù)據(jù)目錄。數(shù)據(jù)目錄是元數(shù)據(jù)的集合,可以理解為是一張“數(shù)據(jù)清單”。通過(guò)數(shù)據(jù)目錄,用戶可以搜索和發(fā)現(xiàn)數(shù)據(jù)湖中的數(shù)據(jù),提高數(shù)據(jù)的可訪問(wèn)性和可發(fā)現(xiàn)性。
圖片
具體來(lái)說(shuō),基于數(shù)據(jù)目錄,結(jié)合數(shù)據(jù)管理和搜索工具,上層計(jì)算引擎可以直接獲取數(shù)據(jù)的關(guān)鍵信息,進(jìn)行數(shù)據(jù)處理。
數(shù)據(jù)目錄,還可以對(duì)數(shù)據(jù)湖中的數(shù)據(jù)進(jìn)行訪問(wèn)控制,控制的力度可以做到“庫(kù)表列行”等不同級(jí)別。
除了數(shù)據(jù)目錄之外,數(shù)據(jù)治理還需要關(guān)注數(shù)據(jù)質(zhì)量和數(shù)據(jù)合規(guī)。
數(shù)據(jù)湖存儲(chǔ)的數(shù)據(jù),具有不同的質(zhì)量和精度,可能導(dǎo)致分析結(jié)果不準(zhǔn)確、不可靠。因此,需要建立數(shù)據(jù)質(zhì)量系統(tǒng),確保數(shù)據(jù)的完整性、準(zhǔn)確性、一致性以及標(biāo)準(zhǔn)化。
數(shù)據(jù)合規(guī),很容易理解,就是數(shù)據(jù)存儲(chǔ)和使用必須符合法律法規(guī),例如GDPR(通用數(shù)據(jù)保護(hù)條例)、HIPAA(健康保險(xiǎn)便利和責(zé)任法案)等。數(shù)據(jù)合規(guī)一旦出問(wèn)題,可能導(dǎo)致數(shù)據(jù)泄露、法律訴訟或巨額罰款,損害企業(yè)的聲譽(yù),也帶來(lái)經(jīng)濟(jì)上的損失。
特別值得一提的是,如果數(shù)據(jù)湖沒(méi)有得到妥善的治理,就會(huì)變成龐大的“數(shù)據(jù)沼澤”,根本沒(méi)辦法發(fā)揮數(shù)據(jù)的價(jià)值,反而變成累贅。
數(shù)據(jù)湖的架構(gòu)
前面說(shuō)過(guò),數(shù)據(jù)湖是一個(gè)框架和技術(shù)體系。它由多個(gè)互相協(xié)作的組件和產(chǎn)品組成的。
圍繞數(shù)據(jù)湖的技術(shù)組件和產(chǎn)品,一般來(lái)自四類廠商:
· 開(kāi)源解決方案
· 云服務(wù)商(如亞馬遜AWS、微軟Azure、Google Cloud、阿里云、華為云等)
· 專業(yè)數(shù)據(jù)庫(kù)出身的廠商
· 一些初創(chuàng)企業(yè)或團(tuán)隊(duì)
不同的公司,會(huì)開(kāi)發(fā)不同的組件和產(chǎn)品,應(yīng)用于不同的層級(jí)。少部分公司,能夠提供完整的全套解決方案,或者基于云服務(wù)的全托管方案。
出于成本的考慮,很多企業(yè)可能更傾向于使用開(kāi)源產(chǎn)品。開(kāi)源數(shù)據(jù)湖方案比較知名的分別是:Delta Lake(DataBricks公司)、Apache Iceberg、Apache Hudi和Apache Paimon。
圖片
數(shù)據(jù)湖概念被提出來(lái)之后,云服務(wù)廠商特別激動(dòng),也特別熱情,吆喝得最賣力。原因很簡(jiǎn)單,數(shù)據(jù)湖想要實(shí)現(xiàn)海量數(shù)據(jù)的低成本存儲(chǔ),一般會(huì)用到分布式存儲(chǔ)和云存儲(chǔ)服務(wù)。而且,云服務(wù)廠商可以提供前面提到的全托管方案。
AWS的數(shù)據(jù)湖產(chǎn)品體系
不同的方案提供商,會(huì)提出不同的數(shù)據(jù)湖架構(gòu)。但是,基本上都包括四個(gè)主要層次:
數(shù)據(jù)攝取層(數(shù)據(jù)采集層):負(fù)責(zé)從各種數(shù)據(jù)源收集數(shù)據(jù),并將其傳輸?shù)綌?shù)據(jù)湖中。
數(shù)據(jù)存儲(chǔ)層:以原始格式存儲(chǔ)大規(guī)模的數(shù)據(jù)。
數(shù)據(jù)管理層:對(duì)數(shù)據(jù)進(jìn)行管理和組織,包括數(shù)據(jù)的分類、編目、索引等功能。還要負(fù)責(zé)數(shù)據(jù)的安全和合規(guī)。
數(shù)據(jù)訪問(wèn)層(數(shù)據(jù)分析層):提供各種工具和框架,支持用戶對(duì)數(shù)據(jù)湖中的數(shù)據(jù)進(jìn)行查詢、統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)等操作。
好了,看到這里,大家一定會(huì)發(fā)現(xiàn),數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖有各自的優(yōu)點(diǎn)和缺點(diǎn)。
圖片
那么,有沒(méi)有辦法,可以將兩者之間的優(yōu)點(diǎn)相結(jié)合呢?
當(dāng)然有的,那就是數(shù)據(jù)湖倉(cāng),也叫湖倉(cāng)一體。