亚洲中文字幕无码日韩精品,亚洲一区制服无码中字,亚洲精品第一国产综合精品99 ,一本大道中文日本香蕉

微立頂科技

新聞資訊

創(chuàng)新 服務(wù) 價(jià)值

  科普數(shù)據(jù)湖:概念、特征與架構(gòu)

發(fā)布日期:2022/1/20 6:56:02      瀏覽量:

一、什么是數(shù)據(jù)湖

數(shù)據(jù)湖是目前比較熱的一個(gè)概念,許多企業(yè)都在構(gòu)建或者計(jì)劃構(gòu)建自己的數(shù)據(jù)湖。但是在計(jì)劃構(gòu)建數(shù)據(jù)湖之前,搞清楚什么是數(shù)據(jù)湖,明確一個(gè)數(shù)據(jù)湖項(xiàng)目的基本組成,進(jìn)而設(shè)計(jì)數(shù)據(jù)湖的基本架構(gòu),對于數(shù)據(jù)湖的構(gòu)建至關(guān)重要。關(guān)于什么是數(shù)據(jù)湖,有如下定義。


Wikipedia 是這樣定義的


數(shù)據(jù)湖是一類存儲(chǔ)數(shù)據(jù)自然/原始格式的系統(tǒng)或存儲(chǔ),通常是對象塊或者文件。數(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ù)湖中包括來自于關(guān)系型數(shù)據(jù)庫中的結(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ù)沼澤對于用戶來說要么是不可訪問的要么就是無法提供足夠的價(jià)值。


AWS 的定義相對就簡潔一點(diǎn)


數(shù)據(jù)湖是一個(gè)集中式存儲(chǔ)庫,允許您以任意規(guī)模存儲(chǔ)所有結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。您可以按原樣存儲(chǔ)數(shù)據(jù)(無需先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理),并運(yùn)行不同類型的分析 – 從控制面板和可視化到大數(shù)據(jù)處理、實(shí)時(shí)分析和機(jī)器學(xué)習(xí),以指導(dǎo)做出更好的決策。


微軟的定義就更加模糊了,并沒有明確給出什么是 Data Lake,而是取巧的將數(shù)據(jù)湖的功能作為定義


Azure 的數(shù)據(jù)湖包括一切使得開發(fā)者、數(shù)據(jù)科學(xué)家、分析師能更簡單的存儲(chǔ)、處理數(shù)據(jù)的能力,這些能力使得用戶可以存儲(chǔ)任意規(guī)模、任意類型、任意產(chǎn)生速度的數(shù)據(jù),并且可以跨平臺(tái)、跨語言的做所有類型的分析和處理。數(shù)據(jù)湖在能幫助用戶加速應(yīng)用數(shù)據(jù)的同時(shí),消除了數(shù)據(jù)采集和存儲(chǔ)的復(fù)雜性,同時(shí)也能支持批處理、流式計(jì)算、交互式分析等。數(shù)據(jù)湖能同現(xiàn)有的數(shù)據(jù)管理和治理的 IT 投資一起工作,保證數(shù)據(jù)的一致、可管理和安全。它也能同現(xiàn)有的業(yè)務(wù)數(shù)據(jù)庫和數(shù)據(jù)倉庫無縫集成,幫助擴(kuò)展現(xiàn)有的數(shù)據(jù)應(yīng)用。Azure 數(shù)據(jù)湖吸取了大量企業(yè)級(jí)用戶的經(jīng)驗(yàn),并且在微軟一些業(yè)務(wù)中支持了大規(guī)模處理和分析場景,包括 Office 365, Xbox Live, Azure, Windows, Bing 和 Skype。Azure 解決了許多效率和可擴(kuò)展性的挑戰(zhàn),作為一類服務(wù)使得用戶可以最大化數(shù)據(jù)資產(chǎn)的價(jià)值來滿足當(dāng)前和未來需求。


關(guān)于數(shù)據(jù)湖的定義其實(shí)很多,但是基本上都圍繞著以下幾個(gè)特性展開


  1. 數(shù)據(jù)湖需要提供足夠用的數(shù)據(jù)存儲(chǔ)能力,這個(gè)存儲(chǔ)保存了一個(gè)企業(yè)/組織中的所有數(shù)據(jù)。

  2. 數(shù)據(jù)湖可以存儲(chǔ)海量的任意類型的數(shù)據(jù),包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。

  3. 數(shù)據(jù)湖中的數(shù)據(jù)是原始數(shù)據(jù),是業(yè)務(wù)數(shù)據(jù)的完整副本。數(shù)據(jù)湖中的數(shù)據(jù)保持了他們在業(yè)務(wù)系統(tǒng)中原來的樣子。

  4. 數(shù)據(jù)湖需要具備完善的數(shù)據(jù)管理能力(完善的元數(shù)據(jù)),可以管理各類數(shù)據(jù)相關(guān)的要素,包括數(shù)據(jù)源、數(shù)據(jù)格式、連接信息、數(shù)據(jù) schema、權(quán)限管理等。

  5. 數(shù)據(jù)湖需要具備多樣化的分析能力,包括但不限于批處理、流式計(jì)算、交互式分析以及機(jī)器學(xué)習(xí);同時(shí),還需要提供一定的任務(wù)調(diào)度和管理能力。

  6. 數(shù)據(jù)湖需要具備完善的數(shù)據(jù)生命周期管理能力。不光需要存儲(chǔ)原始數(shù)據(jù),還需要能夠保存各類分析處理的中間結(jié)果,并完整的記錄數(shù)據(jù)的分析處理過程,能幫助用戶完整詳細(xì)追溯任意一條數(shù)據(jù)的產(chǎn)生過程。

  7. 數(shù)據(jù)湖需要具備完善的數(shù)據(jù)獲取和數(shù)據(jù)發(fā)布能力。數(shù)據(jù)湖需要能支撐各種各樣的數(shù)據(jù)源,并能從相關(guān)的數(shù)據(jù)源中獲取全量/增量數(shù)據(jù);然后規(guī)范存儲(chǔ)。數(shù)據(jù)湖能將數(shù)據(jù)分析處理的結(jié)果推送到合適的存儲(chǔ)引擎中,滿足不同的應(yīng)用訪問需求。

  8. 對于大數(shù)據(jù)的支持,包括超大規(guī)模存儲(chǔ)以及可擴(kuò)展的大規(guī)模數(shù)據(jù)處理能力。


綜上,個(gè)人認(rèn)為數(shù)據(jù)湖應(yīng)該是一種不斷演進(jìn)中、可擴(kuò)展的大數(shù)據(jù)存儲(chǔ)、處理、分析的基礎(chǔ)設(shè)施;以數(shù)據(jù)為導(dǎo)向,實(shí)現(xiàn)任意來源、任意速度、任意規(guī)模、任意類型數(shù)據(jù)的全量獲取、全量存儲(chǔ)、多模式處理與全生命周期管理;并通過與各類外部異構(gòu)數(shù)據(jù)源的交互集成,支持各類企業(yè)級(jí)應(yīng)用。



這里需要再特別指出兩點(diǎn):


  1. 可擴(kuò)展是指規(guī)模的可擴(kuò)展和能力的可擴(kuò)展,即數(shù)據(jù)湖不但要能夠隨著數(shù)據(jù)量的增大,提供“足夠”的存儲(chǔ)和計(jì)算能力;還需要根據(jù)需要不斷提供新的數(shù)據(jù)處理模式,例如可能一開始業(yè)務(wù)只需要批處理能力,但隨著業(yè)務(wù)的發(fā)展,可能需要交互式的即席分析能力;又隨著業(yè)務(wù)的實(shí)效性要求不斷提升,可能需要支持實(shí)時(shí)分析和機(jī)器學(xué)習(xí)等豐富的能力。

  2. 以數(shù)據(jù)為導(dǎo)向,是指數(shù)據(jù)湖對于用戶來說要足夠的簡單、易用,幫助用戶從復(fù)雜的 IT 基礎(chǔ)設(shè)施運(yùn)維工作中解脫出來,關(guān)注業(yè)務(wù)、關(guān)注模型、關(guān)注算法、關(guān)注數(shù)據(jù)。數(shù)據(jù)湖面向的是數(shù)據(jù)科學(xué)家、分析師。目前來看,云原生應(yīng)該是構(gòu)建數(shù)據(jù)湖的一種比較理想的構(gòu)建方式,后面在“數(shù)據(jù)湖基本架構(gòu)”一節(jié)會(huì)詳細(xì)論述這一觀點(diǎn)。

二、數(shù)據(jù)湖的基本特征

對數(shù)據(jù)湖的概念有了基本的認(rèn)知之后,我們需要進(jìn)一步明確數(shù)據(jù)湖需要具備哪些基本特征,特別是與大數(shù)據(jù)平臺(tái)或者傳統(tǒng)數(shù)據(jù)倉庫相比,數(shù)據(jù)湖具有哪些特點(diǎn)。在具體分析之前,我們先看一張來自 AWS 官網(wǎng)的對比表格



上表對比了數(shù)據(jù)湖與傳統(tǒng)數(shù)倉的區(qū)別,個(gè)人覺得可以從數(shù)據(jù)和計(jì)算兩個(gè)層面進(jìn)一步分析數(shù)據(jù)湖應(yīng)該具備哪些特征。在數(shù)據(jù)方面:


  • “保真性”。數(shù)據(jù)湖中對于業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)都會(huì)存儲(chǔ)一份“一模一樣”的完整拷貝。與數(shù)據(jù)倉庫不同的地方在于,數(shù)據(jù)湖中必須要保存一份原始數(shù)據(jù),無論是數(shù)據(jù)格式、數(shù)據(jù)模式、數(shù)據(jù)內(nèi)容都不應(yīng)該被修改。在這方面,數(shù)據(jù)湖強(qiáng)調(diào)的是對于業(yè)務(wù)數(shù)據(jù)“原汁原味”的保存。同時(shí),數(shù)據(jù)湖應(yīng)該能夠存儲(chǔ)任意類型/格式的數(shù)據(jù)。

  • “靈活性”:上表一個(gè)點(diǎn)是 “寫入型 schema” v.s.“讀取型 schema”,其實(shí)本質(zhì)上來講是數(shù)據(jù) schema 的設(shè)計(jì)發(fā)生在哪個(gè)階段的問題。對于任何數(shù)據(jù)應(yīng)用來說,其實(shí) schema 的設(shè)計(jì)都是必不可少的,即使是 mongoDB 等一些強(qiáng)調(diào)“無模式”的數(shù)據(jù)庫,其最佳實(shí)踐里依然建議記錄盡量采用相同/相似的結(jié)構(gòu)?!皩懭胄?schema”背后隱含的邏輯是數(shù)據(jù)在寫入之前,就需要根據(jù)業(yè)務(wù)的訪問方式確定數(shù)據(jù)的 schema,然后按照既定 schema,完成數(shù)據(jù)導(dǎo)入,帶來的好處是數(shù)據(jù)與業(yè)務(wù)的良好適配;但是這也意味著數(shù)倉的前期擁有成本會(huì)比較高,特別是當(dāng)業(yè)務(wù)模式不清晰、業(yè)務(wù)還處于探索階段時(shí),數(shù)倉的靈活性不夠。數(shù)據(jù)湖強(qiáng)調(diào)的“讀取型 schema”,背后的潛在邏輯則是認(rèn)為業(yè)務(wù)的不確定性是常態(tài):我們無法預(yù)期業(yè)務(wù)的變化,那么我們就保持一定的靈活性,將設(shè)計(jì)去延后,讓整個(gè)基礎(chǔ)設(shè)施具備使數(shù)據(jù)“按需”貼合業(yè)務(wù)的能力。因此,個(gè)人認(rèn)為“保真性”和“靈活性”是一脈相承的:既然沒辦法預(yù)估業(yè)務(wù)的變化,那么索性保持?jǐn)?shù)據(jù)最為原始的狀態(tài),一旦需要時(shí),可以根據(jù)需求對數(shù)據(jù)進(jìn)行加工處理。因此,數(shù)據(jù)湖更加適合創(chuàng)新型企業(yè)、業(yè)務(wù)高速變化發(fā)展的企業(yè)。同時(shí),數(shù)據(jù)湖的用戶也相應(yīng)的要求更高,數(shù)據(jù)科學(xué)家、業(yè)務(wù)分析師(配合一定的可視化工具)是數(shù)據(jù)湖的目標(biāo)客戶。

  • “可管理”:數(shù)據(jù)湖應(yīng)該提供完善的數(shù)據(jù)管理能力。既然數(shù)據(jù)要求“保真性”和“靈活性”,那么至少數(shù)據(jù)湖中會(huì)存在兩類數(shù)據(jù):原始數(shù)據(jù)和處理后的數(shù)據(jù)。數(shù)據(jù)湖中的數(shù)據(jù)會(huì)不斷的積累、演化。因此,對于數(shù)據(jù)管理能力也會(huì)要求很高,至少應(yīng)該包含以下數(shù)據(jù)管理能力:數(shù)據(jù)源、數(shù)據(jù)連接、數(shù)據(jù)格式、數(shù)據(jù) schema(庫/表/列/行)。同時(shí),數(shù)據(jù)湖是單個(gè)企業(yè)/組織中統(tǒng)一的數(shù)據(jù)存放場所,因此,還需要具有一定的權(quán)限管理能力。

  • “可追溯”:數(shù)據(jù)湖是一個(gè)組織/企業(yè)中全量數(shù)據(jù)的存儲(chǔ)場所,需要對數(shù)據(jù)的全生命周期進(jìn)行管理,包括數(shù)據(jù)的定義、接入、存儲(chǔ)、處理、分析、應(yīng)用的全過程。一個(gè)強(qiáng)大的數(shù)據(jù)湖實(shí)現(xiàn),需要能做到對其間的任意一條數(shù)據(jù)的接入、存儲(chǔ)、處理、消費(fèi)過程是可追溯的,能夠清楚的重現(xiàn)數(shù)據(jù)完整的產(chǎn)生過程和流動(dòng)過程。


在計(jì)算方面,個(gè)人認(rèn)為數(shù)據(jù)湖對于計(jì)算能力要求其實(shí)非常廣泛,完全取決于業(yè)務(wù)對于計(jì)算的要求。


  • 豐富的計(jì)算引擎。從批處理、流式計(jì)算、交互式分析到機(jī)器學(xué)習(xí),各類計(jì)算引擎都屬于數(shù)據(jù)湖應(yīng)該囊括的范疇。一般情況下,數(shù)據(jù)的加載、轉(zhuǎn)換、處理會(huì)使用批處理計(jì)算引擎;需要實(shí)時(shí)計(jì)算的部分,會(huì)使用流式計(jì)算引擎;對于一些探索式的分析場景,可能又需要引入交互式分析引擎。隨著大數(shù)據(jù)技術(shù)與人工智能技術(shù)的結(jié)合越來越緊密,各類機(jī)器學(xué)習(xí)/深度學(xué)習(xí)算法也被不斷引入,例如 TensorFlow/PyTorch 框架已經(jīng)支持從 HDFS/S3/OSS 上讀取樣本數(shù)據(jù)進(jìn)行訓(xùn)練。因此,對于一個(gè)合格的數(shù)據(jù)湖項(xiàng)目而言,計(jì)算引擎的可擴(kuò)展/可插拔,應(yīng)該是一類基礎(chǔ)能力。

  • 多模態(tài)的存儲(chǔ)引擎。理論上,數(shù)據(jù)湖本身應(yīng)該內(nèi)置多模態(tài)的存儲(chǔ)引擎,以滿足不同的應(yīng)用對于數(shù)據(jù)訪問需求(綜合考慮響應(yīng)時(shí)間/并發(fā)/訪問頻次/成本等因素)。但是,在實(shí)際的使用過程中,數(shù)據(jù)湖中的數(shù)據(jù)通常并不會(huì)被高頻次的訪問,而且相關(guān)的應(yīng)用也多在進(jìn)行探索式的數(shù)據(jù)應(yīng)用,為了達(dá)到可接受的性價(jià)比,數(shù)據(jù)湖建設(shè)通常會(huì)選擇相對便宜的存儲(chǔ)引擎(如 S3/OSS/HDFS/OBS),并且在需要時(shí)與外置存儲(chǔ)引擎協(xié)同工作,滿足多樣化的應(yīng)用需求。

三、數(shù)據(jù)湖基本架構(gòu)

數(shù)據(jù)湖可以認(rèn)為是新一代的大數(shù)據(jù)基礎(chǔ)設(shè)施。為了更好的理解數(shù)據(jù)湖的基本架構(gòu),我們先來看看大數(shù)據(jù)基礎(chǔ)設(shè)施架構(gòu)的演進(jìn)過程。


1) 第一階段:以 Hadoop 為代表的離線數(shù)據(jù)處理基礎(chǔ)設(shè)施。如下圖所示,Hadoop 是以 HDFS 為核心存儲(chǔ),以 MapReduce(簡稱 MR)為基本計(jì)算模型的批量數(shù)據(jù)處理基礎(chǔ)設(shè)施。圍繞 HDFS 和 MR,產(chǎn)生了一系列的組件,不斷完善整個(gè)大數(shù)據(jù)平臺(tái)的數(shù)據(jù)處理能力,例如面向在線 KV 操作的 HBase、面向 SQL 的 HIVE、面向工作流的 PIG 等。同時(shí),隨著大家對于批處理的性能要求越來越高,新的計(jì)算模型不斷被提出,產(chǎn)生了 Tez、Spark、Presto 等計(jì)算引擎,MR 模型也逐漸進(jìn)化成 DAG 模型。


DAG 模型一方面,增加計(jì)算模型的抽象并發(fā)能力:對每一個(gè)計(jì)算過程進(jìn)行分解,根據(jù)計(jì)算過程中的聚合操作點(diǎn)對任務(wù)進(jìn)行邏輯切分,任務(wù)被切分成一個(gè)個(gè)的 stage,每個(gè) stage 都可以有一個(gè)或者多個(gè) Task 組成,Task 是可以并發(fā)執(zhí)行的,從而提升整個(gè)計(jì)算過程的并行能力;另一方面,為減少數(shù)據(jù)處理過程中的中間結(jié)果寫文件操作,Spark、Presto 等計(jì)算引擎盡量使用計(jì)算節(jié)點(diǎn)的內(nèi)存對數(shù)據(jù)進(jìn)行緩存,從而提高整個(gè)數(shù)據(jù)過程的效率和系統(tǒng)吞吐能力。



2) 第二階段:lambda 架構(gòu)。隨著數(shù)據(jù)處理能力和處理需求的不斷變化,越來越多的用戶發(fā)現(xiàn),批處理模式無論如何提升性能,也無法滿足一些實(shí)時(shí)性要求高的處理場景,流式計(jì)算引擎應(yīng)運(yùn)而生,例如 Storm、Spark Streaming、Flink 等。


然而,隨著越來越多的應(yīng)用上線,大家發(fā)現(xiàn),其實(shí)批處理和流計(jì)算配合使用,才能滿足大部分應(yīng)用需求;而對于用戶而言,其實(shí)他們并不關(guān)心底層的計(jì)算模型是什么,用戶希望無論是批處理還是流計(jì)算,都能基于統(tǒng)一的數(shù)據(jù)模型來返回處理結(jié)果,于是 Lambda 架構(gòu)被提出,如下圖所示。



Lambda 架構(gòu)的核心理念是“流批一體”,如上圖所示,整個(gè)數(shù)據(jù)流向自左向右流入平臺(tái)。進(jìn)入平臺(tái)后一分為二,一部分走批處理模式,一部分走流式計(jì)算模式。無論哪種計(jì)算模式,最終的處理結(jié)果都通過服務(wù)層對應(yīng)用提供,確保訪問的一致性。


3) 第三階段:Kappa 架構(gòu)。Lambda 架構(gòu)解決了應(yīng)用讀取數(shù)據(jù)的一致性問題,但是“流批分離”的處理鏈路增大了研發(fā)的復(fù)雜性。因此,有人就提出能不能用一套系統(tǒng)來解決所有問題。目前比較流行的做法就是基于流計(jì)算來做。流計(jì)算天然的分布式特征,注定了他的擴(kuò)展性更好。通過加大流計(jì)算的并發(fā)性,加大流式數(shù)據(jù)的“時(shí)間窗口”,來統(tǒng)一批處理與流式處理兩種計(jì)算模式。



綜上,從傳統(tǒng)的 hadoop 架構(gòu)往 lambda 架構(gòu),從 lambda 架構(gòu)往 Kappa 架構(gòu)的演進(jìn),大數(shù)據(jù)平臺(tái)基礎(chǔ)架構(gòu)的演進(jìn)逐漸囊括了應(yīng)用所需的各類數(shù)據(jù)處理能力,大數(shù)據(jù)平臺(tái)逐漸演化成了一個(gè)企業(yè)/組織的全量數(shù)據(jù)處理平臺(tái)。當(dāng)前的企業(yè)實(shí)踐中,除了關(guān)系型數(shù)據(jù)庫依托于各個(gè)獨(dú)立的業(yè)務(wù)系統(tǒng);其余的數(shù)據(jù),幾乎都被考慮納入大數(shù)據(jù)平臺(tái)來進(jìn)行統(tǒng)一的處理。然而,目前的大數(shù)據(jù)平臺(tái)基礎(chǔ)架構(gòu),都將視角鎖定在了存儲(chǔ)和計(jì)算,而忽略了對于數(shù)據(jù)的資產(chǎn)化管理,這恰恰是數(shù)據(jù)湖作為新一代的大數(shù)據(jù)基礎(chǔ)設(shè)施所重點(diǎn)關(guān)注的方向之一。


曾經(jīng)看過一個(gè)很有意思的文章,提出過如下問題:數(shù)據(jù)湖為什么叫數(shù)據(jù)湖而不叫數(shù)據(jù)河或者數(shù)據(jù)海?一個(gè)有意思的回答是:


  1. “河”強(qiáng)調(diào)的是流動(dòng)性,“海納百川”,河終究是要流入大海的,而企業(yè)級(jí)數(shù)據(jù)是需要長期沉淀的,因此叫“湖”比叫“河”要貼切;同時(shí),湖水天然是分層的,滿足不同的生態(tài)系統(tǒng)要求,這與企業(yè)建設(shè)統(tǒng)一數(shù)據(jù)中心,存放管理數(shù)據(jù)的需求是一致的,“熱”數(shù)據(jù)在上層,方便應(yīng)用隨時(shí)使用;溫?cái)?shù)據(jù)、冷數(shù)據(jù)位于數(shù)據(jù)中心不同的存儲(chǔ)介質(zhì)中,達(dá)到數(shù)據(jù)存儲(chǔ)容量與成本的平衡。

  2. 不叫“?!钡脑蛟谟冢J菬o邊無界的,而“湖”是有邊界的,這個(gè)邊界就是企業(yè)/組織的業(yè)務(wù)邊界;因此數(shù)據(jù)湖需要更多的數(shù)據(jù)管理和權(quán)限管理能力。

  3. 叫“湖”的另一個(gè)重要原因是數(shù)據(jù)湖是需要精細(xì)治理的,一個(gè)缺乏管控、缺乏治理的數(shù)據(jù)湖最終會(huì)退化為“數(shù)據(jù)沼澤”,從而使應(yīng)用無法有效訪問數(shù)據(jù),使存于其中的數(shù)據(jù)失去價(jià)值。


大數(shù)據(jù)基礎(chǔ)架構(gòu)的演進(jìn),其實(shí)反應(yīng)了一點(diǎn):在企業(yè)/組織內(nèi)部,數(shù)據(jù)是一類重要資產(chǎn)已經(jīng)成為了共識(shí);為了更好的利用數(shù)據(jù),企業(yè)/組織需要對數(shù)據(jù)資產(chǎn):


  1. 進(jìn)行長期的原樣存儲(chǔ)

  2. 進(jìn)行有效管理與集中治理

  3. 提供多模式的計(jì)算能力滿足處理需求

  4. 以及面向業(yè)務(wù),提供統(tǒng)一的數(shù)據(jù)視圖、數(shù)據(jù)模型與數(shù)據(jù)處理結(jié)果


數(shù)據(jù)湖就是在這個(gè)大背景下產(chǎn)生的,除了大數(shù)據(jù)平臺(tái)所擁有的各類基礎(chǔ)能力之外,數(shù)據(jù)湖更強(qiáng)調(diào)對于數(shù)據(jù)的管理、治理和資產(chǎn)化能力。落到具體的實(shí)現(xiàn)上,數(shù)據(jù)湖需要包括一系列的數(shù)據(jù)管理組件,包括:


  1. 數(shù)據(jù)接入

  2. 數(shù)據(jù)搬遷

  3. 數(shù)據(jù)治理

  4. 質(zhì)量管理

  5. 資產(chǎn)目錄

  6. 訪問控制

  7. 任務(wù)管理

  8. 任務(wù)編排

  9. 元數(shù)據(jù)管理等


如下圖所示,給出了一個(gè)數(shù)據(jù)湖系統(tǒng)的參考架構(gòu)。對于一個(gè)典型的數(shù)據(jù)湖而言,它與大數(shù)據(jù)平臺(tái)相同的地方在于它也具備處理超大規(guī)模數(shù)據(jù)所需的存儲(chǔ)和計(jì)算能力,能提供多模式的數(shù)據(jù)處理能力;增強(qiáng)點(diǎn)在于數(shù)據(jù)湖提供了更為完善的數(shù)據(jù)管理能力,具體體現(xiàn)在:


  1. 更強(qiáng)大的數(shù)據(jù)接入能力。數(shù)據(jù)接入能力體現(xiàn)在對于各類外部異構(gòu)數(shù)據(jù)源的定義管理能力,以及對于外部數(shù)據(jù)源相關(guān)數(shù)據(jù)的抽取遷移能力,抽取遷移的數(shù)據(jù)包括外部數(shù)據(jù)源的元數(shù)據(jù)與實(shí)際存儲(chǔ)的數(shù)據(jù)。

  2. 更強(qiáng)大的數(shù)據(jù)管理能力。管理能力具體又可分為基本管理能力和擴(kuò)展管理能力。基本管理能力包括對各類元數(shù)據(jù)的管理、數(shù)據(jù)訪問控制、數(shù)據(jù)資產(chǎn)管理,是一個(gè)數(shù)據(jù)湖系統(tǒng)所必須的,后面我們會(huì)在“各廠商的數(shù)據(jù)湖解決方案”一節(jié)相信討論各個(gè)廠商對于基本管理能力的支持方式。擴(kuò)展管理能力包括任務(wù)管理、流程編排以及與數(shù)據(jù)質(zhì)量、數(shù)據(jù)治理相關(guān)的能力。任務(wù)管理和流程編排主要用來管理、編排、調(diào)度、監(jiān)測在數(shù)據(jù)湖系統(tǒng)中處理數(shù)據(jù)的各類任務(wù),通常情況下,數(shù)據(jù)湖構(gòu)建者會(huì)通過購買/研制定制的數(shù)據(jù)集成或數(shù)據(jù)開發(fā)子系統(tǒng)/模塊來提供此類能力,定制的系統(tǒng)/模塊可以通過讀取數(shù)據(jù)湖的相關(guān)元數(shù)據(jù),來實(shí)現(xiàn)與數(shù)據(jù)湖系統(tǒng)的融合。而數(shù)據(jù)質(zhì)量和數(shù)據(jù)治理則是更為復(fù)雜的問題,一般情況下,數(shù)據(jù)湖系統(tǒng)不會(huì)直接提供相關(guān)功能,但是會(huì)開放各類接口或者元數(shù)據(jù),供有能力的企業(yè)/組織與已有的數(shù)據(jù)治理軟件集成或者做定制開發(fā)。

  3. 可共享的元數(shù)據(jù)。數(shù)據(jù)湖中的各類計(jì)算引擎會(huì)與數(shù)據(jù)湖中的數(shù)據(jù)深度融合,而融合的基礎(chǔ)就是數(shù)據(jù)湖的元數(shù)據(jù)。好的數(shù)據(jù)湖系統(tǒng),計(jì)算引擎在處理數(shù)據(jù)時(shí),能從元數(shù)據(jù)中直接獲取數(shù)據(jù)存儲(chǔ)位置、數(shù)據(jù)格式、數(shù)據(jù)模式、數(shù)據(jù)分布等信息,然后直接進(jìn)行數(shù)據(jù)處理,而無需進(jìn)行人工/編程干預(yù)。更進(jìn)一步,好的數(shù)據(jù)湖系統(tǒng)還可以對數(shù)據(jù)湖中的數(shù)據(jù)進(jìn)行訪問控制,控制的力度可以做到“庫表列行”等不同級(jí)別。



還有一點(diǎn)應(yīng)該指出的是,上圖的“集中式存儲(chǔ)”更多的是業(yè)務(wù)概念上的集中,本質(zhì)上是希望一個(gè)企業(yè)/組織內(nèi)部的數(shù)據(jù)能在一個(gè)明確統(tǒng)一的地方進(jìn)行沉淀。事實(shí)上,數(shù)據(jù)湖的存儲(chǔ)應(yīng)該是一類可按需擴(kuò)展的分布式文件系統(tǒng),大多數(shù)數(shù)據(jù)湖實(shí)踐中也是推薦采用 S3/OSS/OBS/HDFS 等分布式系統(tǒng)作為數(shù)據(jù)湖的統(tǒng)一存儲(chǔ)。


我們可以再切換到數(shù)據(jù)維度,從數(shù)據(jù)生命周期的視角來看待數(shù)據(jù)湖對于數(shù)據(jù)的處理方式,數(shù)據(jù)在數(shù)據(jù)湖中的整個(gè)生命周期如圖 6 所示。理論上,一個(gè)管理完善的數(shù)據(jù)湖中的數(shù)據(jù)會(huì)永久的保留原始數(shù)據(jù),同時(shí)過程數(shù)據(jù)會(huì)不斷的完善、演化,以滿足業(yè)務(wù)的需要。


四、各廠商的數(shù)據(jù)湖解決方案

數(shù)據(jù)湖作為當(dāng)前的一個(gè)風(fēng)口,各大云廠商紛紛推出自己的數(shù)據(jù)湖解決方案及相關(guān)產(chǎn)品。本節(jié)將分析各個(gè)主流廠商推出的數(shù)據(jù)湖解決方案,并將其映射到數(shù)據(jù)湖參考架構(gòu)上,幫助大家理解各類方案的優(yōu)缺點(diǎn)。

4.1 AWS 數(shù)據(jù)湖解決方案


圖 7 是 AWS 推薦的數(shù)據(jù)湖解決方案。整個(gè)方案基于 AWS Lake Formation 構(gòu)建,AWS Lake Formation 本質(zhì)上是一個(gè)管理性質(zhì)的組件,它與其他 AWS 服務(wù)互相配合,來完成整個(gè)企業(yè)級(jí)數(shù)據(jù)湖構(gòu)建功能。上圖自左向右,體現(xiàn)了數(shù)據(jù)流入、數(shù)據(jù)沉淀、數(shù)據(jù)計(jì)算、數(shù)據(jù)應(yīng)用四個(gè)步驟。我們進(jìn)一步來看其關(guān)鍵點(diǎn):


1. 數(shù)據(jù)流入。


數(shù)據(jù)流入是整個(gè)數(shù)據(jù)湖構(gòu)建的起始,包括元數(shù)據(jù)的流入和業(yè)務(wù)數(shù)據(jù)流入兩個(gè)部分。元數(shù)據(jù)流入包括數(shù)據(jù)源創(chuàng)建、元數(shù)據(jù)抓取兩步,最終會(huì)形成數(shù)據(jù)資源目錄,并生成對應(yīng)的安全設(shè)置與訪問控制策略。解決方案提供專門的組件,獲取外部數(shù)據(jù)源的相關(guān)元信息,該組件能連接外部數(shù)據(jù)源、檢測數(shù)據(jù)格式和模式(schema),并在對應(yīng)的數(shù)據(jù)資源目錄中創(chuàng)建屬于數(shù)據(jù)湖的元數(shù)據(jù)。業(yè)務(wù)數(shù)據(jù)的流入是通過 ETL 來完成的。


在具體的產(chǎn)品形式上,元數(shù)據(jù)抓取、ETL 和數(shù)據(jù)準(zhǔn)備 AWS 將其單獨(dú)抽象出來,形成了一個(gè)產(chǎn)品叫 AWS GLUE。AWS GLUE 與 AWS Lake Formation 共享同一個(gè)數(shù)據(jù)資源目錄,在 AWS GLUE 官網(wǎng)文檔上明確指出:“Each AWS account has one AWS Glue Data Catalog per AWS region”。


對于異構(gòu)數(shù)據(jù)源的支持。AWS 提供的數(shù)據(jù)湖解決方案,支持 S3、AWS 關(guān)系型數(shù)據(jù)庫、AWS NoSQL 數(shù)據(jù)庫,AWS 利用 GLUE、EMR、Athena 等組件支持?jǐn)?shù)據(jù)的自由流動(dòng)。


2. 數(shù)據(jù)沉淀。


采用 Amazon S3 作為整個(gè)數(shù)據(jù)湖的集中存儲(chǔ),按需擴(kuò)展/按使用量付費(fèi)。


3. 數(shù)據(jù)計(jì)算。


整個(gè)解決方案利用 AWS GLUE 來進(jìn)行基本的數(shù)據(jù)處理。GLUE 基本的計(jì)算形式是各類批處理模式的 ETL 任務(wù),任務(wù)的出發(fā)方式分為手動(dòng)觸發(fā)、定時(shí)觸發(fā)、事件觸發(fā)三種。不得不說,AWS 的各類服務(wù)在生態(tài)上實(shí)現(xiàn)的非常好,事件觸發(fā)模式上,可以利用 AWS Lambda 進(jìn)行擴(kuò)展開發(fā),同時(shí)觸發(fā)一個(gè)或多個(gè)任務(wù),極大的提升了任務(wù)觸發(fā)的定制開發(fā)能力;同時(shí),各類 ETL 任務(wù),可以通過 CloudWatch 進(jìn)行很好的監(jiān)控。


4. 數(shù)據(jù)應(yīng)用。


在提供基本的批處理計(jì)算模式之外,AWS 通過各類外部計(jì)算引擎,來提供豐富的計(jì)算模式支持,例如通過 Athena/Redshift 來提供基于 SQL 的交互式批處理能力;通過 EMR 來提供各類基于 Spark 的計(jì)算能力,包括 Spark 能提供的流計(jì)算能力和機(jī)器學(xué)習(xí)能力。


5. 權(quán)限管理。


AWS 的數(shù)據(jù)湖解決方案通過 Lake Formation 來提供相對完善的權(quán)限管理,粒度包括“庫-表-列”。但是,有一點(diǎn)例外的是,GLUE 訪問 Lake Formation 時(shí),粒度只有“庫-表”兩級(jí);這也從另一個(gè)側(cè)面說明,GLUE 和 Lake Formation 的集成是更為緊密的,GLUE 對于 Lake Formation 中的數(shù)據(jù)有更大的訪問權(quán)限。


Lake Formation 的權(quán)限進(jìn)一步可以細(xì)分為數(shù)據(jù)資源目錄訪問權(quán)限和底層數(shù)據(jù)訪問權(quán)限,分別對應(yīng)元數(shù)據(jù)與實(shí)際存儲(chǔ)的數(shù)據(jù)。實(shí)際存儲(chǔ)數(shù)據(jù)的訪問權(quán)限又進(jìn)一步分為數(shù)據(jù)存取權(quán)限和數(shù)據(jù)存儲(chǔ)訪問權(quán)限。數(shù)據(jù)存取權(quán)限類似于數(shù)據(jù)庫中對于庫表的訪問權(quán)限,數(shù)據(jù)存儲(chǔ)權(quán)限則進(jìn)一步細(xì)化了對于 S3 中具體目錄的訪問權(quán)限(分為顯示和隱式兩種)。如圖 8 所示,用戶 A 在只有數(shù)據(jù)存取的權(quán)限下,無法創(chuàng)建位于 S3 指定 bucket 下的表。


個(gè)人認(rèn)為這進(jìn)一步體現(xiàn)了數(shù)據(jù)湖需要支持各種不同的存儲(chǔ)引擎,未來的數(shù)據(jù)湖可能不只 S3/OSS/OBS/HDFS 一類核心存儲(chǔ),可能根據(jù)應(yīng)用的訪問需求,納入更多類型的存儲(chǔ)引擎,例如,S3 存儲(chǔ)原始數(shù)據(jù),NoSQL 存儲(chǔ)處理過后適合以“鍵值”模式訪問的數(shù)據(jù),OLAP 引擎存儲(chǔ)需要實(shí)時(shí)出各類報(bào)表/adhoc 查詢的數(shù)據(jù)。雖然當(dāng)前各類材料都在強(qiáng)調(diào)數(shù)據(jù)湖與數(shù)據(jù)倉庫的不同;但是,從本質(zhì)上,數(shù)據(jù)湖更應(yīng)該是一類融合的數(shù)據(jù)管理思想的具體實(shí)現(xiàn),“湖倉一體化”也很可能是未來的一個(gè)發(fā)展趨勢。



綜上,AWS 數(shù)據(jù)湖方案成熟度高,特別是元數(shù)據(jù)管理、權(quán)限管理上考慮充分,打通了異構(gòu)數(shù)據(jù)源與各類計(jì)算引擎的上下游關(guān)系,讓數(shù)據(jù)能夠自由“移動(dòng)”起來。在流計(jì)算和機(jī)器學(xué)習(xí)上,AWS 的解決方案也比較完善。流計(jì)算方面 AWS 推出了專門的流計(jì)算組件 Kinesis,Kinesis 中的 Kinesis data Firehose 服務(wù)可以創(chuàng)建一個(gè)完全被托管的數(shù)據(jù)分發(fā)服務(wù),通過 Kinesis data Stream 實(shí)時(shí)處理的數(shù)據(jù),可以借助 Firehose 方便的寫入 S3 中,并支持相應(yīng)的格式轉(zhuǎn)換,如將 JSON 轉(zhuǎn)換成 Parquet 格式。


AWS 整個(gè)方案最牛的地方還在與 Kinesis 可以訪問 GLUE 中的元數(shù)據(jù),這一點(diǎn)充分體現(xiàn)了 AWS 數(shù)據(jù)湖解決方案在生態(tài)上的完備性。同樣,在機(jī)器學(xué)習(xí)方面,AWS 提供了 SageMaker 服務(wù),SageMaker 可以讀取 S3 中的訓(xùn)練數(shù)據(jù),并將訓(xùn)練好的模型回寫至 S3 中。但是,有一點(diǎn)需要指出的是,在 AWS 的數(shù)據(jù)湖解決方案中,流計(jì)算和機(jī)器學(xué)習(xí)并不是固定捆綁的,只是作為計(jì)算能力擴(kuò)展,能方便的集成。


最后,讓我們回到圖 6 的數(shù)據(jù)湖組件參考架構(gòu),看看 AWS 的數(shù)據(jù)湖解決方案的組件覆蓋情況,參見圖 9。



綜上,AWS 的數(shù)據(jù)湖解決方案覆蓋了除質(zhì)量管理和數(shù)據(jù)治理的所有功能。其實(shí)質(zhì)量管理和數(shù)據(jù)治理這個(gè)工作和企業(yè)的組織結(jié)構(gòu)、業(yè)務(wù)類型強(qiáng)相關(guān),需要做大量的定制開發(fā)工作,因此通用解決方案不囊括這塊內(nèi)容,也是可以理解的。事實(shí)上,現(xiàn)在也有比較優(yōu)秀的開源項(xiàng)目支持這個(gè)項(xiàng)目,比如 Apache Griffin,如果對質(zhì)量管理和數(shù)據(jù)治理有強(qiáng)訴求,可以自行定制開發(fā)。

4.2 華為數(shù)據(jù)湖解決方案


華為的數(shù)據(jù)湖解決方案相關(guān)信息來自華為官網(wǎng)。目前官網(wǎng)可見的相關(guān)產(chǎn)品包括數(shù)據(jù)湖探索(Data Lake Insight,DLI)和智能數(shù)據(jù)湖運(yùn)營平臺(tái)(DAYU)。其中 DLI 相當(dāng)于是 AWS 的 Lake Formation、GLUE、Athena、EMR(Flink&Spark)的集合。官網(wǎng)上沒找到關(guān)于 DLI 的整體架構(gòu)圖,我根據(jù)自己的理解,嘗試畫了一個(gè),主要是和 AWS 的解決方案有一個(gè)對比,所以形式上盡量一致,如果有非常了解華為 DLI 的同學(xué),也請不吝賜教。


華為的數(shù)據(jù)湖解決方案比較完整,DLI 承擔(dān)了所有的數(shù)據(jù)湖構(gòu)建、數(shù)據(jù)處理、數(shù)據(jù)管理、數(shù)據(jù)應(yīng)用的核心功能。DLI 最大的特色是在于分析引擎的完備性,包括基于 SQL 的交互式分析以及基于 Spark+Flink 的流批一體處理引擎。在核心存儲(chǔ)引擎上,DLI 依然通過內(nèi)置的 OBS 來提供,和 AWS S3 的能力基本對標(biāo)。華為數(shù)據(jù)湖解決方案在上下游生態(tài)上做的比 AWS 相對完善,對于外部數(shù)據(jù)源,幾乎支持所有目前華為云上提供的數(shù)據(jù)源服務(wù)。


DLI 可以與華為的 CDM(云數(shù)據(jù)遷移服務(wù))和 DIS(數(shù)據(jù)接入服務(wù))對接:


  1. 借助 DIS,DLI 可以定義各類數(shù)據(jù)點(diǎn),這些點(diǎn)可以在 Flink 作業(yè)中被使用,做為 source 或者 sink;

  2. 借助 CDM,DLI 甚至能接入 IDC、第三方云服務(wù)的數(shù)據(jù)。


為了更好的支持?jǐn)?shù)據(jù)集成、數(shù)據(jù)開發(fā)、數(shù)據(jù)治理、質(zhì)量管理等數(shù)據(jù)湖高級(jí)功能,華為云提供了 DAYU 平臺(tái)。DAYU 平臺(tái)是華為數(shù)據(jù)湖治理運(yùn)營方法論的落地實(shí)現(xiàn)。DAYU 涵蓋了整個(gè)數(shù)據(jù)湖治理的核心流程,并對其提供了相應(yīng)的工具支持;甚至在華為的官方文檔中,給出了數(shù)據(jù)治理組織的構(gòu)建建議。DAYU 的數(shù)據(jù)治理方法論的落地實(shí)現(xiàn)如圖 11 所示(來自華為云官網(wǎng))。



可以看到,本質(zhì)上 DAYU 數(shù)據(jù)治理的方法論其實(shí)是傳統(tǒng)數(shù)據(jù)倉庫治理方法論在數(shù)據(jù)湖基礎(chǔ)設(shè)施上的延伸:從數(shù)據(jù)模型來看,依然包括貼源層、多源整合層、明細(xì)數(shù)據(jù)層,這點(diǎn)與數(shù)據(jù)倉庫完全一致。根據(jù)數(shù)據(jù)模型和指標(biāo)模型會(huì)生成質(zhì)量規(guī)則和轉(zhuǎn)換模型,DAYU 會(huì)和 DLI 對接,直接調(diào)用 DLI 提供的相關(guān)數(shù)據(jù)處理服務(wù),完成數(shù)據(jù)治理。


華為云整個(gè)的數(shù)據(jù)湖解決方案,完整覆蓋了數(shù)據(jù)處理的生命周期,并且明確支持了數(shù)據(jù)治理,并提供了基于模型和指標(biāo)的數(shù)據(jù)治理流程工具,在華為云的數(shù)據(jù)湖解決方案中逐漸開始往“湖倉一體化”方向演進(jìn)。

4.3 阿里云數(shù)據(jù)湖解決方案

阿里云上數(shù)據(jù)類產(chǎn)品眾多,因?yàn)楸救四壳霸跀?shù)據(jù) BU,所以本節(jié)方案將關(guān)注在如何使用數(shù)據(jù)庫 BU 的產(chǎn)品來構(gòu)建數(shù)據(jù)湖,其他云上產(chǎn)品會(huì)略有涉及。阿里云的基于數(shù)據(jù)庫產(chǎn)品的數(shù)據(jù)湖解決方案更加聚焦,主打數(shù)據(jù)湖分析和聯(lián)邦分析兩個(gè)場景。阿里云數(shù)據(jù)湖解決方案如圖 12 所示。



整個(gè)方案依然采用 OSS 作為數(shù)據(jù)湖的集中存儲(chǔ)。在數(shù)據(jù)源的支持上,目前也支持所有的阿里云數(shù)據(jù)庫,包括 OLTP、OLAP 和 NoSQL 等各類數(shù)據(jù)庫。核心關(guān)鍵點(diǎn)如下:


  1. 數(shù)據(jù)接入與搬遷。在建湖過程中,DLA 的 Formation 組件具備元數(shù)據(jù)發(fā)現(xiàn)和一鍵建湖的能力,在本文寫作之時(shí),目前“一鍵建湖”還只支持全量建湖,但是基于 binlog 的增量建湖已經(jīng)在開發(fā)中了,預(yù)計(jì)近期上線。增量建湖能力會(huì)極大的增加數(shù)據(jù)湖中數(shù)據(jù)的實(shí)時(shí)性,并將對源端業(yè)務(wù)數(shù)據(jù)庫的壓力降到最下。這里需要注意的是,DLA Formation 是一個(gè)內(nèi)部組件,對外并沒有暴露。

  2. 數(shù)據(jù)資源目錄。DLA 提供 Meta data catalog 組件對于數(shù)據(jù)湖中的數(shù)據(jù)資產(chǎn)進(jìn)行統(tǒng)一的管理,無論數(shù)據(jù)是在“湖中”還是在“湖外”。Meta data catalog 也是聯(lián)邦分析的統(tǒng)一元數(shù)據(jù)入口。

  3. 在內(nèi)置計(jì)算引擎上,DLA 提供了 SQL 計(jì)算引擎和 Spark 計(jì)算引擎兩種。無論是 SQL 還是 Spark 引擎,都和 Meta data catalog 深度集成,能方便的獲取元數(shù)據(jù)信息?;?Spark 的能力,DLA 解決方案支持批處理、流計(jì)算和機(jī)器學(xué)習(xí)等計(jì)算模式。

  4. 在外圍生態(tài)上,除了支持各類異構(gòu)數(shù)據(jù)源做數(shù)據(jù)接入與匯聚之外,在對外訪問能力上,DLA 與云原生數(shù)據(jù)倉庫(原 ADB)深度整合。一方面,DLA 處理的結(jié)果可之際推送至 ADB 中,滿足實(shí)時(shí)、交互式、ad hoc 復(fù)雜查詢;另一方面,ADB 里的數(shù)據(jù)也可以借助外表功能,很方便的進(jìn)行數(shù)據(jù)回流至 OSS 中?;?DLA,阿里云上各類異構(gòu)數(shù)據(jù)源可以完全被打通,數(shù)據(jù)自由流動(dòng)。

  5. 在數(shù)據(jù)集成和開發(fā)上,阿里云的數(shù)據(jù)湖解決方案提供兩種選擇:一種是采用 dataworks 完成;另一種是采用 DMS 來完成。無論是選擇哪種,都能對外提供可視化的流程編排、任務(wù)調(diào)度、任務(wù)管理能力。在數(shù)據(jù)生命周期管理上,dataworks 的數(shù)據(jù)地圖能力相對更加成熟。

  6. 在數(shù)據(jù)管理和數(shù)據(jù)安全上,DMS 提供了強(qiáng)大的能力。DMS 的數(shù)據(jù)管理粒度分為“庫-表-列-行”,完善的支持企業(yè)級(jí)的數(shù)據(jù)安全管控需求。除了權(quán)限管理之外,DMS 更精細(xì)的地方是把原來基于數(shù)據(jù)庫的 devops 理念擴(kuò)展到了數(shù)據(jù)湖,使得數(shù)據(jù)湖的運(yùn)維、開發(fā)更加精細(xì)化。


進(jìn)一步細(xì)化整個(gè)數(shù)據(jù)湖方案的數(shù)據(jù)應(yīng)用架構(gòu),如下圖所示。



自左向右從數(shù)據(jù)的流向來看,數(shù)據(jù)生產(chǎn)者產(chǎn)生各類數(shù)據(jù)(云下/云上/其他云),利用各類工具,上傳至各類通用/標(biāo)準(zhǔn)數(shù)據(jù)源,包括 OSS/HDFS/DB 等。針對各類數(shù)據(jù)源,DLA 通過數(shù)據(jù)發(fā)現(xiàn)、數(shù)據(jù)接入、數(shù)據(jù)遷移等能力,完整建湖操作。


對于“入湖”的數(shù)據(jù),DLA 提供基于 SQL 和 Spark 的數(shù)據(jù)處理能力,并可以基于 Dataworks/DMS,對外提供可視化的數(shù)據(jù)集成和數(shù)據(jù)開發(fā)能力;在對外應(yīng)用服務(wù)能力上,DLA 提供標(biāo)準(zhǔn)化的 JDBC 接口,可以直接對接各類報(bào)表工具、大屏展示功能等。阿里云的 DLA 的特色在于背靠整個(gè)阿里云數(shù)據(jù)庫生態(tài),包括 OLTP、OLAP、NoSQL 等各類數(shù)據(jù)庫,對外提供基于 SQL 的數(shù)據(jù)處理能力,對于傳統(tǒng)企業(yè)基于數(shù)據(jù)庫的開發(fā)技術(shù)棧而言,轉(zhuǎn)型成本相對較低,學(xué)習(xí)曲線比較平緩。


阿里云的 DLA 解決方案的另一個(gè)特色在于“基于云原生的湖倉一體化”。傳統(tǒng)的企業(yè)級(jí)數(shù)據(jù)倉庫在大數(shù)據(jù)時(shí)代的今天,在各類報(bào)表應(yīng)用上依然是無法替代的,但是數(shù)倉無法滿足大數(shù)據(jù)時(shí)代的數(shù)據(jù)分析處理的靈活性需求。


因此,我們推薦數(shù)據(jù)倉庫應(yīng)該作為數(shù)據(jù)湖的上層應(yīng)用存在:即數(shù)據(jù)湖是原始業(yè)務(wù)數(shù)據(jù)在一個(gè)企業(yè)/組織中唯一官方數(shù)據(jù)存儲(chǔ)地;數(shù)據(jù)湖根據(jù)各類業(yè)務(wù)應(yīng)用需求,將原始數(shù)據(jù)進(jìn)行加工處理,形成可再次利用的中間結(jié)果;當(dāng)中間結(jié)果的數(shù)據(jù)模式(Schema)相對固定后,DLA 可以將中間結(jié)果推送至數(shù)據(jù)倉庫,供企業(yè)/組織開展基于數(shù)倉的業(yè)務(wù)應(yīng)用。阿里云在提供 DLA 的同時(shí),還提供了云原生數(shù)倉(原 ADB),DLA 和云原生數(shù)倉在以下兩點(diǎn)上深度融合。


  • 使用同源的 SQL 解析引擎。DLA 的 SQL 與 ADB 的 SQL 語法上完全兼容,這意味著開發(fā)者使用一套技術(shù)棧即能同時(shí)開發(fā)數(shù)據(jù)湖應(yīng)用和數(shù)倉應(yīng)用。

  • 都內(nèi)置了對于 OSS 的訪問支持。OSS 直接作為 DLA 的原生存儲(chǔ)存在;對于 ADB 而言,可以通過外部表的能力,很方便的訪問 OSS 上的結(jié)構(gòu)化數(shù)據(jù)。借助外部表,數(shù)據(jù)可以自由的在 DLA 和 ADB 之間流轉(zhuǎn),做到真正的湖倉一體。


DLA+ADB 的組合真正做到了云原生的湖倉一體(關(guān)于什么是云原生,不在本文的討論范疇)。本質(zhì)上,DLA 可以看成一個(gè)能力擴(kuò)展的數(shù)據(jù)倉庫貼源層。與傳統(tǒng)數(shù)倉相比,該貼源層:


  1. 可以保存各類結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù);

  2. 可以對接各類異構(gòu)數(shù)據(jù)源;

  3. 具備元數(shù)據(jù)發(fā)現(xiàn)、管理、同步等能力;

  4. 內(nèi)置的 SQL/Spark 計(jì)算引擎具備更強(qiáng)的數(shù)據(jù)處理能力,滿足多樣化的數(shù)據(jù)處理需求;

  5. 具備全量數(shù)據(jù)的全生命周期管理能力?;?DLA+ADB 的湖倉一體化方案,將同時(shí)覆蓋“大數(shù)據(jù)平臺(tái)+數(shù)據(jù)倉庫”的處理能力。



DLA 還有一個(gè)重要能力是構(gòu)建了一個(gè)“四通八達(dá)”的數(shù)據(jù)流動(dòng)體系,并以數(shù)據(jù)庫的體驗(yàn)對外提供能力,無論數(shù)據(jù)在云上還是云下,無論數(shù)據(jù)在組織內(nèi)部還是外部;借助數(shù)據(jù)湖,各個(gè)系統(tǒng)之間的數(shù)據(jù)不再存在壁壘,可以自由的流進(jìn)流出;更重要的是,這種流動(dòng)是受監(jiān)管的,數(shù)據(jù)湖完整的記錄了數(shù)據(jù)的流動(dòng)情況。

4.4 Azure 數(shù)據(jù)湖解決方案

Azure 的數(shù)據(jù)湖解決方案包括數(shù)據(jù)湖存儲(chǔ)、接口層、資源調(diào)度與計(jì)算引擎層,如圖 15 所示(來自 Azure 官網(wǎng))。存儲(chǔ)層是基于 Azure object Storage 構(gòu)建的,依然是對結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提供支撐。


接口層為 WebHDFS,比較特別的是在 Azure object Storage 實(shí)現(xiàn)了 HDFS 的接口,Azure 把這個(gè)能力稱為“數(shù)據(jù)湖存儲(chǔ)上的多協(xié)議存取”。在資源調(diào)度上,Azure 基于 YARN 實(shí)現(xiàn)。計(jì)算引擎上,Azure 提供了 U-SQL、hadoop 和 Spark 等多種處理引擎。



Azure 的特別之處是基于 visual studio 提供給了客戶開發(fā)的支持。


  1. 開發(fā)工具的支持,與 visual studio 的深度集成;Azure 推薦使用 U-SQL 作為數(shù)據(jù)湖分析應(yīng)用的開發(fā)語言。Visual studio 為 U-SQL 提供了完備的開發(fā)環(huán)境;同時(shí),為了降低分布式數(shù)據(jù)湖系統(tǒng)開發(fā)的復(fù)雜性,visual studio 基于項(xiàng)目進(jìn)行封裝,在進(jìn)行 U-SQL 開發(fā)時(shí),可以創(chuàng)建“U-SQL database project”,在此類項(xiàng)目中,利用 visual studio,可以很方便的進(jìn)行編碼與調(diào)試,同時(shí),也提供向?qū)В瑢㈤_發(fā)好的 U-SQL 腳本發(fā)布到生成環(huán)境。U-SQL 支持 Python、R 進(jìn)行擴(kuò)展,滿足定制開發(fā)需求。

  2. 多計(jì)算引擎的適配:SQL, Apache Hadoop 和 Apache Spark。這里的 hadoop 包括 Azure 提供的 HDInsight(Azure 托管的 Hadoop 服務(wù)),Spark 包括 Azure Databricks。

  3. 多種不同引擎任務(wù)之間的自動(dòng)轉(zhuǎn)換能力。微軟推薦 U-SQL 為數(shù)據(jù)湖的缺省開發(fā)工具,并提供各類轉(zhuǎn)換工具,支持 U-SQL 腳本與 Hive、Spark(HDSight&databricks)、Azure Data Factory data Flow 之間的轉(zhuǎn)化。

4.5 小結(jié)

本文所討論的是數(shù)據(jù)湖的解決方案,不會(huì)涉及到任何云廠商的單個(gè)產(chǎn)品。我們從數(shù)據(jù)接入、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)計(jì)算、數(shù)據(jù)管理、應(yīng)用生態(tài)幾個(gè)方面,簡單做了一個(gè)類似下表的總結(jié)。



出于篇幅關(guān)系,其實(shí)知名云廠商的數(shù)據(jù)湖解決方案還有谷歌和騰訊的。這兩家從其官方網(wǎng)站上看,數(shù)據(jù)湖解決方案相對來講比較簡單,也僅僅是一些概念上的闡述,推薦的落地方案是“oss+hadoop(EMR)”。


其實(shí)數(shù)據(jù)湖不應(yīng)該從一個(gè)簡單的技術(shù)平臺(tá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)的對接打通能力。


原文鏈接:【https://xie.infoq.cn/article/ef68dbe3516219cdae52f5b76



  業(yè)務(wù)實(shí)施流程

需求調(diào)研 →

團(tuán)隊(duì)組建和動(dòng)員 →

數(shù)據(jù)初始化 →

調(diào)試完善 →

解決方案和選型 →

硬件網(wǎng)絡(luò)部署 →

系統(tǒng)部署試運(yùn)行 →

系統(tǒng)正式上線 →

合作協(xié)議

系統(tǒng)開發(fā)/整合

制作文檔和員工培訓(xùn)

售后服務(wù)

馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     聯(lián)系人:石先生/雷先生