最新大廠數(shù)據(jù)湖面試題及知識點總結(jié)_第1頁
最新大廠數(shù)據(jù)湖面試題及知識點總結(jié)_第2頁
最新大廠數(shù)據(jù)湖面試題及知識點總結(jié)_第3頁
最新大廠數(shù)據(jù)湖面試題及知識點總結(jié)_第4頁
最新大廠數(shù)據(jù)湖面試題及知識點總結(jié)_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、最新大廠數(shù)據(jù)湖面試題及知識點總結(jié)01什么是數(shù)據(jù)湖?數(shù)據(jù)湖是一種不斷演進中、可擴展的大數(shù)據(jù)存儲、處理、分析的基礎(chǔ)設(shè)施;以數(shù)據(jù)為導(dǎo)向,實現(xiàn)任意來源、任意速度、任意規(guī)模、任意類型數(shù)據(jù)的全量獲取、全量存儲、多模式處理與全生命周期管理;并通過與各類外部異構(gòu)數(shù)據(jù)源的交互集成,支持各類企業(yè)級應(yīng)用。用架構(gòu)圖能很快說明白,用阿里的數(shù)據(jù)架構(gòu)圖來說:ODS(operational data store, staging area)存儲來自各業(yè)務(wù)系統(tǒng)(生產(chǎn)系統(tǒng))的原始數(shù)據(jù),即為數(shù)據(jù)湖。CDM為經(jīng)過整合、清洗的數(shù)據(jù)。其中的DWS匯總層,為面向主題的數(shù)據(jù)倉庫(狹義),用于BI報表出數(shù)。簡單來說,數(shù)據(jù)湖的定義就是原始數(shù)據(jù)保

2、存區(qū). 雖然這個概念國內(nèi)談的少,但絕大部分互聯(lián)網(wǎng)公司都已經(jīng)有了。國內(nèi)一般把整個HDFS叫做數(shù)倉(廣義),即存放所有數(shù)據(jù)的地方。02數(shù)據(jù)湖的發(fā)展數(shù)據(jù)湖最早是2011年由Pentaho的首席技術(shù)官James Dixon提出的一個概念,他認為諸如數(shù)據(jù)集市,數(shù)據(jù)倉庫由于其有序性的特點,勢必會帶來數(shù)據(jù)孤島效應(yīng),而數(shù)據(jù)湖可以由于其開放性的特點可以解決數(shù)據(jù)孤島問題。為什么不是數(shù)據(jù)河?因為,數(shù)據(jù)要能存,而不是一江春水向東流。為什么不是數(shù)據(jù)池?因為,要足夠大,大數(shù)據(jù)太大,一池存不下。為什么不是數(shù)據(jù)海?因為,企業(yè)的數(shù)據(jù)要有邊界,可以流通和交換,但更注重隱私和安全,“海到無邊天作岸”,那可不行。所以數(shù)據(jù)要能“存”,

3、數(shù)據(jù)要夠“存”,數(shù)據(jù)要有邊界地“存”。企業(yè)級的數(shù)據(jù)是需要長期積淀的,因此是“數(shù)據(jù)湖”。同時湖水天然會進行分層,滿足不同的生態(tài)系統(tǒng)要求,這與企業(yè)建設(shè)統(tǒng)一數(shù)據(jù)中心,存放管理數(shù)據(jù)的需求是一致的。熱數(shù)據(jù)在上層方便流通應(yīng)用,溫數(shù)據(jù)、冷數(shù)據(jù)位于數(shù)據(jù)中心的不同存儲介質(zhì)之中,達到數(shù)據(jù)存儲容量與成本的平衡。但隨著數(shù)據(jù)湖在各類企業(yè)的應(yīng)用,大家都覺得:嗯,這個數(shù)據(jù)有用,我要放進去;那個數(shù)據(jù)也有用,我也要放進去;于是把所有的數(shù)據(jù)不假思索地扔進基于數(shù)據(jù)湖的相關(guān)技術(shù)或工具中,沒有規(guī)則不成方圓,當(dāng)我們認為所有數(shù)據(jù)都有用時,那么所有的數(shù)據(jù)都是垃圾,數(shù)據(jù)湖也變成了造成企業(yè)成本高企的數(shù)據(jù)沼澤。03數(shù)據(jù)湖有哪些優(yōu)勢?輕松地收集數(shù)據(jù)

4、:數(shù)據(jù)湖與數(shù)據(jù)倉庫的一大區(qū)別就是,Schema On Read,即在使用數(shù)據(jù)時才需要Schema信息;而數(shù)據(jù)倉庫是Schema On Write,即在存儲數(shù)據(jù)時就需要設(shè)計好Schema。這樣,由于對數(shù)據(jù)寫入沒有限制,數(shù)據(jù)湖可以更容易的收集數(shù)據(jù)。從數(shù)據(jù)中發(fā)掘更多價值:數(shù)據(jù)倉庫和數(shù)據(jù)市場由于只使用數(shù)據(jù)中的部分屬性,所以只能回答一些事先定義好的問題;而數(shù)據(jù)湖存儲所有最原始、最細節(jié)的數(shù)據(jù),所以可以回答更多的問題。并且數(shù)據(jù)湖允許組織中的各種角色通過自助分析工具,對數(shù)據(jù)進行分析,以及利用AI、機器學(xué)習(xí)的技術(shù),從數(shù)據(jù)中發(fā)掘更多的價值。消除數(shù)據(jù)孤島:數(shù)據(jù)湖中匯集了來自各個系統(tǒng)中的數(shù)據(jù),這就消除了數(shù)據(jù)孤島問題。

5、具有更好的擴展性和敏捷性:數(shù)據(jù)湖可以利用分布式文件系統(tǒng)來存儲數(shù)據(jù),因此具有很高的擴展能力。開源技術(shù)的使用還降低了存儲成本。數(shù)據(jù)湖的結(jié)構(gòu)沒那么嚴格,因此天生具有更高的靈活性,從而提高了敏捷性。04數(shù)據(jù)湖具備哪些能力?數(shù)據(jù)集成能力:需要具備把各種數(shù)據(jù)源接入集成到數(shù)據(jù)湖中的能力。數(shù)據(jù)湖的存儲也應(yīng)該是多樣的,比如HDFS、HIVE、HBASE等等。數(shù)據(jù)治理能力:治理能力的核心是維護好數(shù)據(jù)的元數(shù)據(jù)(metadata)。強制要求所有進入數(shù)據(jù)湖的數(shù)據(jù)必須提供相關(guān)元數(shù)據(jù),應(yīng)該作為最低限度的治理管控。沒有元數(shù)據(jù),數(shù)據(jù)湖就面臨成為數(shù)據(jù)沼澤的風(fēng)險。更豐富的功能還包括:自動提取元元數(shù)據(jù),并根據(jù)元數(shù)據(jù)對數(shù)據(jù)進行分類,形

6、成數(shù)據(jù)目錄。自動對數(shù)據(jù)目錄進行分析,可以基于AI和機器學(xué)習(xí)的方法,發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)系。自動建立數(shù)據(jù)之間血緣關(guān)系圖。跟蹤數(shù)據(jù)的使用情況,以便將數(shù)據(jù)作為產(chǎn)品,形成數(shù)據(jù)資產(chǎn)。數(shù)據(jù)搜索和發(fā)現(xiàn)能力:如果把整個互聯(lián)網(wǎng)想象成一個巨大的數(shù)據(jù)湖。那么,之所以人們可以這么有效的利用這個湖中的數(shù)據(jù),就是因為有了Google這樣的搜索引擎。人們可以通過搜索,方便地找到他們想要的數(shù)據(jù),進而進行分析。搜索能力是數(shù)據(jù)湖的十分重要的能力。數(shù)據(jù)安全管控能力:對數(shù)據(jù)的使用權(quán)限進行管控,對敏感數(shù)據(jù)進行脫敏或加密處理,也是數(shù)據(jù)湖能商用所必須具備的能力。數(shù)據(jù)質(zhì)量檢驗?zāi)芰Γ簲?shù)據(jù)質(zhì)量是分析正確的關(guān)鍵。因此必須對進入數(shù)據(jù)湖中的數(shù)據(jù)的質(zhì)量情況

7、進行檢驗。及時發(fā)現(xiàn)數(shù)據(jù)湖中數(shù)據(jù)質(zhì)量的問題。為有效的數(shù)據(jù)探索提供保障。自助數(shù)據(jù)探索能力:應(yīng)該具備一系列好用的數(shù)據(jù)分析工具,以便各類用戶可以對數(shù)據(jù)湖中的數(shù)據(jù)進行自助探索。包括:支持對流、NoSQL、圖等多種存儲庫的聯(lián)合分析能力支持交互式的大數(shù)據(jù)SQL分析支持AI、機器學(xué)習(xí)分析支持類似OLAP的BI分析支持報表的生成05數(shù)據(jù)湖的實現(xiàn)遇到了哪些問題?數(shù)據(jù)湖剛提出來時,只是一個樸素的理念。而從理念變成一個可以落地的系統(tǒng),就面臨著許多不得不考慮的現(xiàn)實問題:首先,把所有原始數(shù)據(jù)都存儲下來的想法,要基于一個前提,就是存儲成本很低。而今數(shù)據(jù)產(chǎn)生的速度越來越快、產(chǎn)生的量越來越大的情況下,把所有原始數(shù)據(jù),不分價值大

8、小,都存儲下來,這個成本在經(jīng)濟上能不能接受,可能需要打一個問號。其次,數(shù)據(jù)湖中存放這各類最原始的明細數(shù)據(jù),包括交易數(shù)據(jù)、用戶數(shù)據(jù)等敏感數(shù)據(jù),這些數(shù)據(jù)的安全怎么保證?用戶訪問的權(quán)限如何控制?再次,湖中的數(shù)據(jù)怎么治理?誰對數(shù)據(jù)的質(zhì)量、數(shù)據(jù)的定義、數(shù)據(jù)的變更負責(zé)?如何確保數(shù)據(jù)的定義、業(yè)務(wù)規(guī)則的一致性?數(shù)據(jù)湖的理念很好,但是它現(xiàn)在還缺乏像數(shù)據(jù)倉庫那樣,有一整套方法論為基礎(chǔ),有一系列具有可操作性的工具和生態(tài)為支撐。正因如此,目前把Hadoop用來對特定的、高價值的數(shù)據(jù)進行處理,構(gòu)建數(shù)據(jù)倉庫的模式,取得了較多的成功;而用來落實數(shù)據(jù)湖理念的模式,遭遇了一系列的失敗。這里,總結(jié)一些典型的數(shù)據(jù)湖失敗的原因:數(shù)據(jù)

9、沼澤:當(dāng)越來越多的數(shù)據(jù)接入到數(shù)據(jù)湖中,但是卻沒有有效的方法跟蹤這些數(shù)據(jù),數(shù)據(jù)沼澤就發(fā)生了。在這種失敗中,人們把所有東西都放在HDFS中,期望以后可以發(fā)掘些什么,可沒多久他們就忘那里有什么。數(shù)據(jù)泥團:各種各樣的新數(shù)據(jù)接入進數(shù)據(jù)湖中,它們的組織形式、質(zhì)量都不一樣。由于缺乏用于檢查,清理和重組數(shù)據(jù)的自助服務(wù)工具,使得這些數(shù)據(jù)很難創(chuàng)造價值。缺乏自助分析工具:由于缺乏好用的自助分析工具,直接對數(shù)據(jù)湖中的數(shù)據(jù)分析很困難。一般都是數(shù)據(jù)工程師或開發(fā)人員創(chuàng)建一個整理后的小部分數(shù)據(jù)集,把這些數(shù)據(jù)集交付給更廣泛的用戶,以便他們使用熟悉的工具進行數(shù)據(jù)分析。這限制了更廣泛的人參與到探索大數(shù)據(jù)中,降低了數(shù)據(jù)湖的價值。缺乏

10、建模的方法論和工具:在數(shù)據(jù)湖中,似乎每一項工作都得從頭開始,因為以前的項目產(chǎn)生的數(shù)據(jù)幾乎沒有辦法重用。其實,我們罵數(shù)據(jù)倉庫很難變化以適應(yīng)新需求,這其中有個原因就是它花很多時間來對數(shù)據(jù)進行建模,而正是有了這些建模,使得數(shù)據(jù)可以共享和重用。數(shù)據(jù)湖也需要為數(shù)據(jù)建模,不然每次分析師都得從頭開始。缺少數(shù)據(jù)安全管理:通常的想法是每個人都可以訪問所有數(shù)據(jù),但這是行不通的。企業(yè)對自己的數(shù)據(jù)是有保護本能的,最終一定是需要數(shù)據(jù)安全管理的。一個數(shù)據(jù)湖搞定一切:大家都對能在一個庫中存儲所有數(shù)據(jù)的想法很興奮。然而,數(shù)據(jù)湖之外總會有新的存儲庫,很難把他們?nèi)枷麥绲簟F鋵?,大多?shù)公司所需的,是可以對多種存儲庫聯(lián)合訪問功能。

11、是不是在一個地方存儲,并不是那么重要。06數(shù)據(jù)湖與數(shù)據(jù)倉庫的區(qū)別?數(shù)據(jù)倉庫,準確說,是面向歷史數(shù)據(jù)沉淀和分析使用的,有三大特點:其一是集成性,由于數(shù)據(jù)來源眾多,因而需要技術(shù)和規(guī)范來統(tǒng)一存儲方式;其二是非易失和隨時間變化,數(shù)據(jù)倉庫存儲了過去每一天的快照且通常不更新,使用者可以在任一天向前或者向后對比數(shù)據(jù)的變化;其三是面向主題,根據(jù)業(yè)務(wù)對數(shù)據(jù)進行有效的編碼,讓理論最佳值在應(yīng)用中落地。數(shù)據(jù)湖,準確說,其出發(fā)點是補全數(shù)據(jù)倉庫實時處理能力、交互式分析能力等新技術(shù)缺失的情況。其最重要的特點,就是豐富的計算引擎:批處理、流式、交互式、機器學(xué)習(xí),該有的,應(yīng)有盡有,企業(yè)需要什么,就用什么。數(shù)據(jù)湖也有三個特征:其

12、一是靈活性,默認業(yè)務(wù)的不確定性是常態(tài)的,在無法預(yù)期未來變化時,技術(shù)設(shè)施基礎(chǔ),就要具備“按需”貼合業(yè)務(wù)的能力;其二是管理性,數(shù)據(jù)湖需要保存原始信息和處理后的信息,在數(shù)據(jù)源、數(shù)據(jù)格式、數(shù)據(jù)周期等維度上,能夠追溯數(shù)據(jù)的接入、存儲、分析和使用等流動過程;其三是多態(tài)性,本身的引擎需要進可能的豐富,因為業(yè)務(wù)場景不固定,而多態(tài)的引擎支持、擴展能力,能夠較好的適應(yīng)業(yè)務(wù)的快速變化。07為什么要數(shù)據(jù)湖?區(qū)別在于?數(shù)據(jù)湖和數(shù)倉,就是原始數(shù)據(jù)和數(shù)倉模型的區(qū)別。因為數(shù)倉(狹義)中的表,主要是事實表-維度表,主要用于BI、出報表,和原始數(shù)據(jù)是不一樣的。為什么要強調(diào)數(shù)據(jù)湖呢?真正的原因在于,data science和mac

13、hine learning進入主流了,需要用原始數(shù)據(jù)做分析,而數(shù)倉的維度模型則通常用于聚合。另一方面,機器學(xué)習(xí)用到的數(shù)據(jù),也不止于結(jié)構(gòu)化數(shù)據(jù)。用戶的評論、圖像這些非結(jié)構(gòu)化數(shù)據(jù),也都可以應(yīng)用到機器學(xué)習(xí)中。但數(shù)據(jù)湖背后其實還有更大的區(qū)別:傳統(tǒng)數(shù)倉的工作方式是集中式的:業(yè)務(wù)人員給需求到數(shù)據(jù)團隊,數(shù)據(jù)團隊根據(jù)要求加工、開發(fā)成維度表,供業(yè)務(wù)團隊通過BI報表工具查詢。數(shù)據(jù)湖是開放、自助式的(self-service):開放數(shù)據(jù)給所有人使用,數(shù)據(jù)團隊更多是提供工具、環(huán)境供各業(yè)務(wù)團隊使用(不過集中式的維度表建設(shè)還是需要的),業(yè)務(wù)團隊進行開發(fā)、分析。也就是組織架構(gòu)和分工的差別 傳統(tǒng)企業(yè)的數(shù)據(jù)團隊可能被當(dāng)做IT,

14、整天要求提數(shù),而在新型的互聯(lián)網(wǎng)/科技團隊,數(shù)據(jù)團隊負責(zé)提供簡單易用的工具,業(yè)務(wù)部門直接進行數(shù)據(jù)的使用。08數(shù)據(jù)湖挑戰(zhàn)?從傳統(tǒng)集中式的數(shù)倉轉(zhuǎn)為開放式的數(shù)據(jù)湖,并不簡單,會碰到許多問題數(shù)據(jù)發(fā)現(xiàn):如何幫助用戶發(fā)現(xiàn)數(shù)據(jù)、了解有哪些數(shù)據(jù)?數(shù)據(jù)安全:如果管理數(shù)據(jù)的權(quán)限和安全?因為一些數(shù)據(jù)是敏感的、或者不應(yīng)直接開放給所有人的(比如電話號碼、地址等)數(shù)據(jù)管理:多個團隊使用數(shù)據(jù),如何共享數(shù)據(jù)成果(比如畫像、特征、指標),避免重復(fù)開發(fā)這也是目前各大互聯(lián)網(wǎng)公司都在改進的方向!09湖倉一體?2020年,大數(shù)據(jù)DataBricks公司首次提出了湖倉一體(Data Lakehouse)概念,希望將數(shù)據(jù)湖和數(shù)據(jù)倉庫技術(shù)合而

15、為一,此概念一出各路云廠商紛紛跟進。Data Lakehouse(湖倉一體)是新出現(xiàn)的一種數(shù)據(jù)架構(gòu),它同時吸收了數(shù)據(jù)倉庫和數(shù)據(jù)湖的優(yōu)勢,數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家可以在同一個數(shù)據(jù)存儲中對數(shù)據(jù)進行操作,同時它也能為公司進行數(shù)據(jù)治理帶來更多的便利性。1) 目前數(shù)據(jù)存儲的方案一直以來,我們都在使用兩種數(shù)據(jù)存儲方式來架構(gòu)數(shù)據(jù):數(shù)據(jù)倉庫:主要存儲的是以關(guān)系型數(shù)據(jù)庫組織起來的結(jié)構(gòu)化數(shù)據(jù)。數(shù)據(jù)通過轉(zhuǎn)換、整合以及清理,并導(dǎo)入到目標表中。在數(shù)倉中,數(shù)據(jù)存儲的結(jié)構(gòu)與其定義的schema是強匹配的。數(shù)據(jù)湖:存儲任何類型的數(shù)據(jù),包括像圖片、文檔這樣的非結(jié)構(gòu)化數(shù)據(jù)。數(shù)據(jù)湖通常更大,其存儲成本也更為廉價。存儲其中的數(shù)據(jù)不需要

16、滿足特定的schema,數(shù)據(jù)湖也不會嘗試去將特定的schema施行其上。相反的是,數(shù)據(jù)的擁有者通常會在讀取數(shù)據(jù)的時候解析schema(schema-on-read),當(dāng)處理相應(yīng)的數(shù)據(jù)時,將轉(zhuǎn)換施加其上。現(xiàn)在許多的公司往往同時會搭建數(shù)倉、數(shù)據(jù)湖這兩種存儲架構(gòu),一個大的數(shù)倉和多個小的數(shù)據(jù)湖。這樣,數(shù)據(jù)在這兩種存儲中就會有一定的冗余。2) Data Lakehouse(湖倉一體)Data Lakehouse的出現(xiàn)試圖去融合數(shù)倉和數(shù)據(jù)湖這兩者之間的差異,通過將數(shù)倉構(gòu)建在數(shù)據(jù)湖上,使得存儲變得更為廉價和彈性,同時lakehouse能夠有效地提升數(shù)據(jù)質(zhì)量,減小數(shù)據(jù)冗余。在lakehouse的構(gòu)建中,ETL

17、起了非常重要的作用,它能夠?qū)⑽唇?jīng)規(guī)整的數(shù)據(jù)湖層數(shù)據(jù)轉(zhuǎn)換成數(shù)倉層結(jié)構(gòu)化的數(shù)據(jù)。下面詳細解釋下:湖倉一體(Data Lakehouse):依據(jù)DataBricks公司對Lakehouse 的定義:一種結(jié)合了數(shù)據(jù)湖和數(shù)據(jù)倉庫優(yōu)勢的新范式,解決了數(shù)據(jù)湖的局限性。Lakehouse 使用新的系統(tǒng)設(shè)計:直接在用于數(shù)據(jù)湖的低成本存儲上實現(xiàn)與數(shù)據(jù)倉庫中類似的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)管理功能。解釋拓展:湖倉一體,簡單理解就是把面向企業(yè)的數(shù)據(jù)倉庫技術(shù)與數(shù)據(jù)湖存儲技術(shù)相結(jié)合,為企業(yè)提供一個統(tǒng)一的、可共享的數(shù)據(jù)底座。避免傳統(tǒng)的數(shù)據(jù)湖、數(shù)據(jù)倉庫之間的數(shù)據(jù)移動,將原始數(shù)據(jù)、加工清洗數(shù)據(jù)、模型化數(shù)據(jù),共同存儲于一體化的“湖倉”中,既

18、能面向業(yè)務(wù)實現(xiàn)高并發(fā)、精準化、高性能的歷史數(shù)據(jù)、實時數(shù)據(jù)的查詢服務(wù),又能承載分析報表、批處理、數(shù)據(jù)挖掘等分析型業(yè)務(wù)。湖倉一體方案的出現(xiàn),幫助企業(yè)構(gòu)建起全新的、融合的數(shù)據(jù)平臺。通過對機器學(xué)習(xí)和AI算法的支持,實現(xiàn)數(shù)據(jù)湖+數(shù)據(jù)倉庫的閉環(huán),提升業(yè)務(wù)的效率。數(shù)據(jù)湖和數(shù)據(jù)倉庫的能力充分結(jié)合,形成互補,同時對接上層多樣化的計算生態(tài)。10目前有哪些數(shù)據(jù)湖開源組件?目前開源的數(shù)據(jù)湖有江湖人稱“數(shù)據(jù)湖三劍客”的Hudi、Delta Lake和IceBerg。1) HudiApache Hudi是一種數(shù)據(jù)湖的存儲格式,在Hadoop文件系統(tǒng)之上提供了更新數(shù)據(jù)和刪除數(shù)據(jù)的能力以及消費變化數(shù)據(jù)的能力。Hudi支持如下

19、兩種表類型:Copy On Write使用Parquet格式存儲數(shù)據(jù)。Copy On Write表的更新操作需要通過重寫實現(xiàn)。Merge On Read使用列式文件格式(Parquet)和行式文件格式(Avro)混合的方式來存儲數(shù)據(jù)。Merge On Read使用列式格式存放Base數(shù)據(jù),同時使用行式格式存放增量數(shù)據(jù)。最新寫入的增量數(shù)據(jù)存放至行式文件中,根據(jù)可配置的策略執(zhí)行COMPACTION操作合并增量數(shù)據(jù)至列式文件中。應(yīng)用場景近實時數(shù)據(jù)攝取Hudi支持插入、更新和刪除數(shù)據(jù)的能力??梢詫崟r攝取消息隊列(Kafka)和日志服務(wù)SLS等日志數(shù)據(jù)至Hudi中,同時也支持實時同步數(shù)據(jù)庫Binlog產(chǎn)

20、生的變更數(shù)據(jù)。Hudi優(yōu)化了數(shù)據(jù)寫入過程中產(chǎn)生的小文件。因此,相比其他傳統(tǒng)的文件格式,Hudi對HDFS文件系統(tǒng)更加的友好。近實時數(shù)據(jù)分析Hudi支持多種數(shù)據(jù)分析引擎,包括Hive、Spark、Presto和Impala。Hudi作為一種文件格式,不需要依賴額外的服務(wù)進程,在使用上也更加的輕量化。增量數(shù)據(jù)處理Hudi支持Incremental Query查詢類型,可以通過Spark Streaming查詢給定COMMIT后發(fā)生變更的數(shù)據(jù)。Hudi提供了一種消費HDFS變化數(shù)據(jù)的能力,可以用來優(yōu)化現(xiàn)有的系統(tǒng)架構(gòu)。2) Delta LakeDelta Lake是Spark計算框架和存儲系統(tǒng)之間帶有

21、Schema信息數(shù)據(jù)的存儲中間層。它給Spark帶來了三個最主要的功能:第一,Delta Lake使得Spark能支持數(shù)據(jù)更新和刪除功能;第二,Delta Lake使得Spark能支持事務(wù);第三,支持數(shù)據(jù)版本管理,運行用戶查詢歷史數(shù)據(jù)快照。核心特性ACID事務(wù):為數(shù)據(jù)湖提供ACID事務(wù),確保在多個數(shù)據(jù)管道并發(fā)讀寫數(shù)據(jù)時,數(shù)據(jù)能保持完整性。數(shù)據(jù)版本管理和時間旅行:提供了數(shù)據(jù)快照,使開發(fā)人員能夠訪問和還原早期版本的數(shù)據(jù)以進行審核、回滾或重現(xiàn)實驗可伸縮的元數(shù)據(jù)管理:存儲表或者文件的元數(shù)據(jù)信息,并且把元數(shù)據(jù)也作為數(shù)據(jù)處理,元數(shù)據(jù)與數(shù)據(jù)的對應(yīng)關(guān)系存放在事務(wù)日志中;流和批統(tǒng)一處理:Delta中的表既有批量

22、的,也有流式和sink的;數(shù)據(jù)操作審計:事務(wù)日志記錄對數(shù)據(jù)所做的每個更改的詳細信息,提供對更改的完整審計跟蹤;Schema管理功能:提供自動驗證寫入數(shù)據(jù)的Schema與表的Schema是否兼容的能力,并提供顯示增加列和自動更新Schema的能力;數(shù)據(jù)表操作(類似于傳統(tǒng)數(shù)據(jù)庫的SQL):合并、更新和刪除等,提供完全兼容Spark的Java/scala API;統(tǒng)一格式:Delta中所有的數(shù)據(jù)和元數(shù)據(jù)都存儲為Apache Parquet。3) IceBergIceberg官網(wǎng)定義:Iceberg是一個通用的表格式(數(shù)據(jù)組織格式),它可以適配Presto,Spark等引擎提供高性能的讀寫和元數(shù)據(jù)管理

23、功能。數(shù)據(jù)湖相比傳統(tǒng)數(shù)倉而言,最明顯的便是優(yōu)秀的T+0能力,這個解決了Hadoop時代數(shù)據(jù)分析的頑疾。傳統(tǒng)的數(shù)據(jù)處理流程從數(shù)據(jù)入庫到數(shù)據(jù)處理通常需要一個較長的環(huán)節(jié)、涉及許多復(fù)雜的邏輯來保證數(shù)據(jù)的一致性,由于架構(gòu)的復(fù)雜性使得整個流水線具有明顯的延遲。Iceberg 的 ACID 能力可以簡化整個流水線的設(shè)計,降低整個流水線的延遲。降低數(shù)據(jù)修正的成本。傳統(tǒng) Hive/Spark 在修正數(shù)據(jù)時需要將數(shù)據(jù)讀取出來,修改后再寫入,有極大的修正成本。Iceberg 所具有的修改、刪除能力能夠有效地降低開銷,提升效率。ACID能力,無縫貼合流批一體數(shù)據(jù)存儲最后一塊版圖隨著flink等技術(shù)的不斷發(fā)展,流批一體

24、生態(tài)不斷完善,但在流批一體數(shù)據(jù)存儲方面一直是個空白,直到Iceberg等數(shù)據(jù)湖技術(shù)的出現(xiàn),這片空白被慢慢填補。Iceberg 提供 ACID 事務(wù)能力,上游數(shù)據(jù)寫入即可見,不影響當(dāng)前數(shù)據(jù)處理任務(wù),這大大簡化了 ETL;Iceberg 提供了 upsert、merge into 能力,可以極大地縮小數(shù)據(jù)入庫延遲;統(tǒng)一數(shù)據(jù)存儲,無縫銜接計算引擎和數(shù)據(jù)存儲Iceberg提供了基于流式的增量計算模型和基于批處理的全量表計算模型。批處理和流任務(wù)可以使用相同的存儲模型,數(shù)據(jù)不再孤立;Iceberg 支持隱藏分區(qū)和分區(qū)進化,方便業(yè)務(wù)進行數(shù)據(jù)分區(qū)策略更新。Iceberg屏蔽了底層數(shù)據(jù)存儲格式的差異,提供對于P

25、arquet,ORC和Avro格式的支持。Iceberg起到了中間橋梁的能力,將上層引擎的能力傳導(dǎo)到下層的存儲格式。開放架構(gòu)設(shè)計,開發(fā)維護成本相對可控Iceberg 的架構(gòu)和實現(xiàn)并未綁定于某一特定引擎,它實現(xiàn)了通用的數(shù)據(jù)組織格式,利用此格式可以方便地與不同引擎對接,目前 Iceberg 支持的計算引擎有 Spark、Flink、Presto 以及 Hive。相比于 Hudi、Delta Lake,Iceberg 的架構(gòu)實現(xiàn)更為優(yōu)雅,同時對于數(shù)據(jù)格式、類型系統(tǒng)有完備的定義和可進化的設(shè)計;面向?qū)ο蟠鎯Φ膬?yōu)化。Iceberg 在數(shù)據(jù)組織方式上充分考慮了對象存儲的特性,避免耗時的 listing 和

26、rename 操作,使其在基于對象存儲的數(shù)據(jù)湖架構(gòu)適配上更有優(yōu)勢。增量數(shù)據(jù)讀取,實時計算的一把利劍Iceberg 支持通過流式方式讀取增量數(shù)據(jù),支持 Structed Streaming 以及 Flink table Source。11三大數(shù)據(jù)湖組件對比?1) 概覽Delta lake由于Apache Spark在商業(yè)化上取得巨成功,所以由其背后商業(yè)公司Databricks推出的Delta lake也顯得格外亮眼。在沒有delta數(shù)據(jù)湖之前,Databricks的客戶般會采經(jīng)典的lambda架構(gòu)來構(gòu)建他們的流批處理場景。HudiApache Hudi是由Uber的程師為滿其內(nèi)部數(shù)據(jù)分析的需求設(shè)

27、計的數(shù)據(jù)湖項,它提供的fast upsert/delete以及compaction等功能可以說是精準命中民群眾的痛點,加上項各成員積極地社區(qū)建設(shè),包括技術(shù)細節(jié)分享、國內(nèi)社區(qū)推等等,也在逐步地吸引潛在戶的光。IcebergNetflix的數(shù)據(jù)湖原先是借助Hive來構(gòu)建,但發(fā)現(xiàn)Hive在設(shè)計上的諸多缺陷之后,開始轉(zhuǎn)為研Iceberg,并最終演化成Apache下個度抽象通的開源數(shù)據(jù)湖案。Apache Iceberg前看則會顯得相對平庸些,簡單說社區(qū)關(guān)注度暫時不上delta,功能也不如Hudi豐富,但卻是個野勃勃的項,因為它具有度抽象和常優(yōu)雅的設(shè)計,為成為個通的數(shù)據(jù)湖案奠定了良好基礎(chǔ)。2) 共同點三者

28、均為Data Lake的數(shù)據(jù)存儲中間層,其數(shù)據(jù)管理的功能均是基于系列的meta件。Meta件的類似于數(shù)據(jù)庫的catalogwal,起到schema管理、事務(wù)管理和數(shù)據(jù)管理的功能。與數(shù)據(jù)庫不同的是,這些meta件是與數(shù)據(jù)件起存放在存儲引擎中的,戶可以直接看到。這個做法直接繼承了數(shù)據(jù)分析中數(shù)據(jù)對戶可見的傳統(tǒng),但是形中也增加了數(shù)據(jù)被不破壞的風(fēng)險。旦刪了meta錄,表就被破壞了,恢復(fù)難度很。Meta包含有表的schema信息。因此系統(tǒng)可以掌握schema的變動,提供schema演化的持。Meta件也有transaction log的功能(需要件系統(tǒng)有原性和致性的持)。所有對表的變更都會成份新的meta

29、件,于是系統(tǒng)就有了ACID和多版本的持,同時可以提供訪問歷史的功能。在這些,三者是相同的。3) 關(guān)于HudiHudi 的設(shè)計標正如其名,Hadoop Upserts Deletes and Incrementals(原為 Hadoop Upserts anD Incrementals),強調(diào)了其主要持Upserts、Deletes 和 Incremental 數(shù)據(jù)處理,其主要提供的寫具是 Spark HudiDataSource API 和提供的 HoodieDeltaStreamer,均持三種數(shù)據(jù)寫式:UPSERT,INSERT 和 BULK_INSERT。其對 Delete 的持也是通過寫

30、時指定定的選項持的,并不持純粹的 delete 接。在查詢,Hudi 持 Hive、Spark、Presto。在性能,Hudi 設(shè)計了 HoodieKey ,個類似于主鍵的東西。對于查詢性能,般需求是根據(jù)查詢謂詞成過濾條件下推datasource。Hudi 這沒怎么做作,其性能完全基于引擎帶的謂詞下推和 partition prune 功能。Hudi 的另特是持 Copy On Write 和 Merge On Read。前者在寫時做數(shù)據(jù)的 merge,寫性能略差,但是讀性能更些。后者讀的時候做 merge,讀性能差,但是寫數(shù)據(jù)會較及時,因后者可以提供近實時的數(shù)據(jù)分析能。最后,Hudi 提供了

31、個名為run_sync_tool 的腳本同步數(shù)據(jù)的 schema 到 Hive 表。Hudi 還提供了個命令具于管理 Hudi 表。4) 關(guān)于IcebergIceberg 沒有類似的 HoodieKey 設(shè)計,其不強調(diào)主鍵。沒有主鍵,做 update/delete/merge 等操作就要通過 Join 來實現(xiàn), Join 需要有個類似 SQL 的執(zhí)引擎。Iceberg 在查詢性能做了量的作。值得提的是它的 hidden partition 功能。Hidden partition 意思是說,對于戶輸?shù)臄?shù)據(jù),戶可以選取其中某些列做適當(dāng)?shù)淖儞Q(Transform)形成個新的列作為 partition

32、 列。這個 partition 列僅僅為了將數(shù)據(jù)進分區(qū),并不直接體現(xiàn)在表的 schema中。5) 關(guān)于DeltaDelta 的定位是流批體的 Data Lake 存儲層,持 update/delete/merge。由于出 Databricks,spark 的所有數(shù)據(jù)寫式,包括基于dataframe 的批式、流式,以及 SQL 的 Insert、Insert Overwrite 等都是持的(開源的 SQL 寫暫不持,EMR 做了持)。不強調(diào)主鍵,因此其 update/delete/merge 的實現(xiàn)均是基于 spark 的 join 功能。在數(shù)據(jù)寫,Delta 與 Spark 是強綁定的,這點 Hudi 是不同的:Hudi 的數(shù)據(jù)寫不綁定 Spark(可以 Spark,也可以使 Hudi 的寫具寫)。在查詢,開源 Delta 前持 Spark 與 Presto,但是,Spark 是不可或缺的,因為 delta log 的處理需要到 Spark。這意味著如果要 Presto 查詢 Delta,查詢時還要跑個 Spark 作業(yè)。更為難受的是,Presto 查詢是基于 Sym

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論