在亞馬遜云科技上構(gòu)建智能湖倉(cāng)(上)

來(lái)源: AWS
作者:Praful Kava & Changbin Gong
時(shí)間:2021-05-31
17111
通過(guò)將不同結(jié)構(gòu)、不同類(lèi)型、不同來(lái)源的相關(guān)數(shù)據(jù)匯總起來(lái)并加以分析,用戶(hù)能夠得出更深刻、更豐富的洞察見(jiàn)解。

通過(guò)將不同結(jié)構(gòu)、不同類(lèi)型、不同來(lái)源的相關(guān)數(shù)據(jù)匯總起來(lái)并加以分析,用戶(hù)能夠得出更深刻、更豐富的洞察見(jiàn)解。為此,用戶(hù)需要從不同孤島中獲取所有數(shù)據(jù)、將其聚合至統(tǒng)一位置(也就是人們常說(shuō)的「數(shù)據(jù)湖」),再以此為基礎(chǔ)執(zhí)行分析與機(jī)器學(xué)習(xí)。但在其他用例中,用戶(hù)也會(huì)將數(shù)據(jù)放置在其他專(zhuān)用存儲(chǔ)體系之內(nèi),例如存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)內(nèi)以針對(duì)結(jié)構(gòu)化數(shù)據(jù)執(zhí)行復(fù)雜查詢(xún)并快速獲得結(jié)果;或者存儲(chǔ)在搜索服務(wù)中以快速搜索/分析日志數(shù)據(jù),進(jìn)而監(jiān)控生產(chǎn)系統(tǒng)的運(yùn)行狀況。無(wú)論如何,要想從這些數(shù)據(jù)中獲取最佳洞見(jiàn),用戶(hù)必須有能力輕松在數(shù)據(jù)湖與專(zhuān)用存儲(chǔ)系統(tǒng)之間移動(dòng)數(shù)據(jù)。但隨著系統(tǒng)中數(shù)據(jù)規(guī)模的持續(xù)增長(zhǎng),數(shù)據(jù)移動(dòng)也變得越來(lái)越困難。為了解決這一挑戰(zhàn)、進(jìn)而從數(shù)據(jù)中獲取最大收益,亞馬遜云科技提出了Lake House“智能湖倉(cāng)”方案。

在本文中,我們將共同了解如何在亞馬遜云科技的云平臺(tái)上構(gòu)建智能湖倉(cāng),借此從指數(shù)級(jí)增長(zhǎng)的海量數(shù)據(jù)中獲取洞見(jiàn),并幫助您快速靈活做出決策。這套智能湖倉(cāng)方案首先指定中央數(shù)據(jù)湖,再?lài)@數(shù)據(jù)湖建立專(zhuān)用數(shù)據(jù)服務(wù)環(huán),同時(shí)提供輕松易行的數(shù)據(jù)往來(lái)移動(dòng)能力,幫助用戶(hù)從容運(yùn)用數(shù)據(jù)資源以及蘊(yùn)藏其中的重要價(jià)值。

智能湖倉(cāng)方案

作為一類(lèi)現(xiàn)代化數(shù)據(jù)架構(gòu),智能湖倉(cāng)方法不僅強(qiáng)調(diào)將數(shù)據(jù)湖與數(shù)據(jù)倉(cāng)庫(kù)集成起來(lái),同時(shí)也涉及將數(shù)據(jù)湖、數(shù)據(jù)倉(cāng)庫(kù)以及所有其他專(zhuān)用服務(wù)接入統(tǒng)一且連續(xù)的整體。數(shù)據(jù)湖為我們提供對(duì)主體數(shù)據(jù)的分析環(huán)境,而專(zhuān)用分析服務(wù)則負(fù)責(zé)以令人滿(mǎn)意的速度為您提供具體用例支持(例如實(shí)時(shí)儀表板與日志分析功能)。

本文中的智能湖倉(cāng)方案包含以下幾大關(guān)鍵要素:

·可擴(kuò)展數(shù)據(jù)湖

·專(zhuān)用數(shù)據(jù)服務(wù)

·無(wú)縫數(shù)據(jù)移動(dòng)

·統(tǒng)一治理機(jī)制

·高效率低成本

下圖所示,為真實(shí)客戶(hù)數(shù)據(jù)與常見(jiàn)數(shù)據(jù)遷移需求(包括數(shù)據(jù)分析服務(wù)與數(shù)據(jù)存儲(chǔ)間的數(shù)據(jù)遷移、由內(nèi)向外、由外向內(nèi)、周邊移動(dòng)等情況)共同建立的智能湖倉(cāng)方案。

build-intelligent-lake-warehouse-on-amazon-cloud-technology1.png

這樣一套分層與組件化數(shù)據(jù)分析架構(gòu),使您可以通過(guò)正確的工具完成正確的任務(wù),同時(shí)提供以迭代及增量方式構(gòu)建架構(gòu)的良好敏捷性。在添加新數(shù)據(jù)源、發(fā)現(xiàn)新的用例/需求以及開(kāi)發(fā)新的分析方法時(shí),我們可以更靈活地調(diào)整智能湖倉(cāng)中的相應(yīng)組件,借此滿(mǎn)足當(dāng)前及未來(lái)的各類(lèi)需求。

對(duì)于我們的這套智能湖倉(cāng)架構(gòu),您可以把它組織成一套五層邏輯堆棧,其中各個(gè)層對(duì)應(yīng)著負(fù)責(zé)滿(mǎn)足特定需求的專(zhuān)用組件。

build-intelligent-lake-warehouse-on-amazon-cloud-technology2.png

下面,我們將具體介紹這五個(gè)層級(jí)。但在此之前,不妨先來(lái)聊聊智能湖倉(cāng)架構(gòu)的數(shù)據(jù)來(lái)源。

數(shù)據(jù)源

這套智能湖倉(cāng)架構(gòu)可供您攝取并分析來(lái)自不同來(lái)源的數(shù)據(jù)。無(wú)論是業(yè)務(wù)線(xiàn)(LOB)應(yīng)用、ERP應(yīng)用還是CRM應(yīng)用,大部分?jǐn)?shù)據(jù)源都會(huì)以固定的間隔生成高度結(jié)構(gòu)化的批量數(shù)據(jù)。除了內(nèi)部結(jié)構(gòu)化來(lái)源之外,您還可以從現(xiàn)代數(shù)據(jù)源(例如Web應(yīng)用程序、移動(dòng)設(shè)備、傳感器、視頻流以及社交媒體等)處接收數(shù)據(jù)。這些現(xiàn)代數(shù)據(jù)源往往會(huì)以連續(xù)數(shù)據(jù)流方式生成半結(jié)構(gòu)化乃至非結(jié)構(gòu)化數(shù)據(jù)。

數(shù)據(jù)攝取層

智能湖倉(cāng)架構(gòu)中的攝取層,負(fù)責(zé)將數(shù)據(jù)攝取至智能湖倉(cāng)的存儲(chǔ)層內(nèi)。它會(huì)借助各類(lèi)協(xié)議接入內(nèi)部及外部數(shù)據(jù)源,批量或?qū)崟r(shí)攝取數(shù)據(jù),再將結(jié)果傳送至數(shù)據(jù)倉(cāng)庫(kù)乃至智能湖倉(cāng)存儲(chǔ)層的數(shù)據(jù)湖組件中。

數(shù)據(jù)存儲(chǔ)層

智能湖倉(cāng)架構(gòu)中的數(shù)據(jù)存儲(chǔ)層,負(fù)責(zé)提供持久、可擴(kuò)展且具有良好成本效益的組件,用以存儲(chǔ)及管理大量數(shù)據(jù)。在智能湖倉(cāng)架構(gòu)中,數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)湖將原生集成以提供經(jīng)濟(jì)高效的存儲(chǔ)層體系,用以支持非結(jié)構(gòu)化以及高度結(jié)構(gòu)化和建模數(shù)據(jù)。存儲(chǔ)層會(huì)按照不同消費(fèi)就緒狀態(tài)對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行劃分,具體包括原始數(shù)據(jù)、可信數(shù)據(jù)、豐富數(shù)據(jù)與建模數(shù)據(jù)。

數(shù)據(jù)倉(cāng)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)倉(cāng)庫(kù)中存儲(chǔ)的是符合標(biāo)準(zhǔn)且高度可信的數(shù)據(jù),具體結(jié)構(gòu)化形式則包括傳統(tǒng)的星形、雪花形、數(shù)據(jù)保管庫(kù)乃至其他非規(guī)范化模式。倉(cāng)庫(kù)中存儲(chǔ)的數(shù)據(jù)通常獲取自高度結(jié)構(gòu)化的內(nèi)部與外部來(lái)源(例如交易系統(tǒng)、關(guān)系數(shù)據(jù)庫(kù)以及其他結(jié)構(gòu)化運(yùn)營(yíng)資源),而且往往以一定的規(guī)律保持運(yùn)作。現(xiàn)代云原生數(shù)據(jù)倉(cāng)庫(kù)通常能夠在內(nèi)置的高性能存儲(chǔ)卷中存放經(jīng)過(guò)壓縮的PB級(jí)列式數(shù)據(jù)。通過(guò)MPP引擎配合快速連接通道,現(xiàn)代云原生數(shù)據(jù)倉(cāng)庫(kù)能夠?yàn)閺?fù)雜SQL查詢(xún)提供低延遲與高執(zhí)行速度。

為了提供經(jīng)過(guò)嚴(yán)格篩選、一致且受信的數(shù)據(jù),在將數(shù)據(jù)存儲(chǔ)至倉(cāng)庫(kù)之前,您需要首先通過(guò)提取、轉(zhuǎn)換、加載(ETL)或者提取、加載、轉(zhuǎn)換(ELT)管道對(duì)源數(shù)據(jù)進(jìn)行預(yù)處理、驗(yàn)證及轉(zhuǎn)換,借此建立起跨業(yè)務(wù)域的高可信度真實(shí)數(shù)據(jù)集源。

智能湖倉(cāng)架構(gòu)中的結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)湖,是一套用于存儲(chǔ)并組織所有數(shù)據(jù)的集中式數(shù)據(jù)存儲(chǔ)庫(kù)。它支持以結(jié)構(gòu)化、半結(jié)構(gòu)化以及非結(jié)構(gòu)化等形式存儲(chǔ)數(shù)據(jù),支持分層存儲(chǔ)以高度優(yōu)化成本,同時(shí)可自動(dòng)擴(kuò)展以容納EB級(jí)海量數(shù)據(jù)。常見(jiàn)的數(shù)據(jù)湖被劃分為登陸區(qū)、原始區(qū)、受信區(qū)與策劃區(qū)幾個(gè)部分,用于根據(jù)數(shù)據(jù)的消費(fèi)就緒狀態(tài)進(jìn)行分別存儲(chǔ)。通常,數(shù)據(jù)在攝取完成后會(huì)被原樣存儲(chǔ)在數(shù)據(jù)湖內(nèi)(無(wú)需預(yù)先定義schema),借此加快攝取速度并縮短數(shù)據(jù)探索之前的準(zhǔn)備時(shí)間。數(shù)據(jù)湖可以通過(guò)多種方法(包括大數(shù)據(jù)處理與機(jī)器學(xué)習(xí))對(duì)各類(lèi)數(shù)據(jù)集進(jìn)行分析。數(shù)據(jù)湖與數(shù)據(jù)倉(cāng)庫(kù)間的原生集成,還允許您從倉(cāng)庫(kù)存儲(chǔ)中移出大量訪(fǎng)問(wèn)頻率較低的歷史數(shù)據(jù),借此降低存儲(chǔ)成本。

目錄層

目錄層負(fù)責(zé)存儲(chǔ)智能湖倉(cāng)存儲(chǔ)層內(nèi)所托管數(shù)據(jù)集的業(yè)務(wù)與技術(shù)元數(shù)據(jù)。在智能湖倉(cāng)架構(gòu)中,目錄由數(shù)據(jù)湖與數(shù)據(jù)倉(cāng)庫(kù)共享,并允許用戶(hù)編寫(xiě)查詢(xún)。這些查詢(xún)將把存儲(chǔ)在數(shù)據(jù)湖與數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的數(shù)據(jù)合并至同一SQL中,由此跟蹤版本化schema與數(shù)據(jù)集的細(xì)粒度分區(qū)信息。隨著數(shù)據(jù)集數(shù)量的增加,該層還提供搜索功能以保證智能湖倉(cāng)中的數(shù)據(jù)集始終可被發(fā)現(xiàn)與查詢(xún)。

智能湖倉(cāng)接口

在智能湖倉(cāng)架構(gòu)中,數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)湖在存儲(chǔ)乃至公共目錄層上保持原生集成,因此能夠?yàn)樘幚砑跋M(fèi)層提供統(tǒng)一的智能湖倉(cāng)接口。以此為基礎(chǔ),智能湖倉(cāng)的處理與消費(fèi)層組件又可以通過(guò)統(tǒng)一的單個(gè)智能湖倉(cāng)接口(例如SQL或Spark)使用存儲(chǔ)層內(nèi)存儲(chǔ)的所有數(shù)據(jù)(分別存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)湖內(nèi))。這樣的架構(gòu)設(shè)計(jì),使您無(wú)需沿任一方向在數(shù)據(jù)倉(cāng)庫(kù)及數(shù)據(jù)湖之間移動(dòng)數(shù)據(jù),即可訪(fǎng)問(wèn)智能湖倉(cāng)中的所有存儲(chǔ)數(shù)據(jù)。

數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)湖間的原生集成,使您得以靈活執(zhí)行以下操作:

·將EB級(jí)別的結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在極具成本效益的數(shù)據(jù)湖之內(nèi),同時(shí)將經(jīng)過(guò)高度策劃、建模與整合的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在熱數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)內(nèi)。

·利用Spark等單一處理框架通過(guò)單一管道合并并分析所有數(shù)據(jù),包括數(shù)據(jù)湖中的非結(jié)構(gòu)化數(shù)據(jù)與數(shù)據(jù)倉(cāng)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)。

·構(gòu)建基于SQL的數(shù)據(jù)倉(cāng)庫(kù)原生ETL或ELT管道,將倉(cāng)庫(kù)中的平面關(guān)系數(shù)據(jù)與數(shù)據(jù)湖內(nèi)復(fù)雜的多層結(jié)構(gòu)化數(shù)據(jù)相結(jié)合。

數(shù)據(jù)處理層

智能湖倉(cāng)架構(gòu)的數(shù)據(jù)處理層組件負(fù)責(zé)通過(guò)驗(yàn)證、清洗、規(guī)范化、轉(zhuǎn)換與擴(kuò)充等方式將數(shù)據(jù)轉(zhuǎn)換為可消費(fèi)狀態(tài)。處理層提供專(zhuān)用組件執(zhí)行各類(lèi)轉(zhuǎn)換,包括數(shù)據(jù)倉(cāng)庫(kù)SQL、大數(shù)據(jù)處理以及近實(shí)時(shí)ETL等。

處理層提供與正確的數(shù)據(jù)集特征(包括大小、格式、schema、速度)、當(dāng)前處理任務(wù)以及可用技術(shù)集(SQL、Spark)相匹配的專(zhuān)用組件,由此盡可能加快交付速度。處理層能夠經(jīng)濟(jì)高效地?cái)U(kuò)展以處理大量數(shù)據(jù),同時(shí)支持schema-on-write、schema-on-read、分區(qū)數(shù)據(jù)集以及多種數(shù)據(jù)格式。處理層還能夠訪(fǎng)問(wèn)統(tǒng)一的智能湖倉(cāng)存儲(chǔ)接口與通用目錄,由此訪(fǎng)問(wèn)智能湖倉(cāng)中的所有數(shù)據(jù)及元數(shù)據(jù),進(jìn)而實(shí)現(xiàn)以下優(yōu)勢(shì):

·避免分析處理數(shù)據(jù)湖與數(shù)據(jù)倉(cāng)庫(kù)時(shí)可能導(dǎo)致的數(shù)據(jù)冗余、非必要數(shù)據(jù)移動(dòng)以及ETL代碼重復(fù)。

·加快交付速度。

數(shù)據(jù)消費(fèi)層

智能湖倉(cāng)架構(gòu)中的數(shù)據(jù)消費(fèi)層負(fù)責(zé)提供可擴(kuò)展的高性能組件,利用統(tǒng)一的智能湖倉(cāng)接口訪(fǎng)問(wèn)存儲(chǔ)層中的數(shù)據(jù)以及目錄中的元數(shù)據(jù)。數(shù)據(jù)消費(fèi)層還提供專(zhuān)用分析組件以全面開(kāi)放分析功能,確保組織內(nèi)的所有職能角色都能夠通過(guò)交互式SQL查詢(xún)、倉(cāng)庫(kù)式分析、商務(wù)智能儀表板以及機(jī)器學(xué)習(xí)等形式獲取洞察見(jiàn)解。

消費(fèi)層中的組件支持以下功能:

·編寫(xiě)查詢(xún)與分析/機(jī)器學(xué)習(xí)作業(yè),訪(fǎng)問(wèn)及合并來(lái)自傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的維度schema以及數(shù)據(jù)湖托管表(需要配合schema-on-read)。

·處理以各種開(kāi)放文件格式(例如Avro、Parquet或者ORC)存儲(chǔ)的數(shù)據(jù)湖托管數(shù)據(jù)集。

·在讀取數(shù)據(jù)湖中托管的大型分區(qū)數(shù)據(jù)集時(shí),通過(guò)分區(qū)裁剪優(yōu)化性能與成本。

在本文的后續(xù)部分,我們將介紹一套參考架構(gòu),展示如何使用亞馬遜云科技服務(wù)構(gòu)建智能湖倉(cāng)邏輯架構(gòu)中的各個(gè)層。在這套方案中,亞馬遜云科技服務(wù)將托管以下工作:

·提供并管理可擴(kuò)展、具有良好彈性、安全且成本效益出色的基礎(chǔ)設(shè)施組件。

·確保各基礎(chǔ)設(shè)施組件彼此原生集成。

這套方案將幫助您將主要精力集中在以下工作身上:

·快速建立數(shù)據(jù)與分析管道。

·顯著加快新數(shù)據(jù)的導(dǎo)入速度,并從數(shù)據(jù)中獲取洞見(jiàn)。

·支持多個(gè)用戶(hù)角色。

亞馬遜云科技平臺(tái)上的智能湖倉(cāng)參考架構(gòu)

下圖所示,為亞馬遜云科技平臺(tái)上的智能湖倉(cāng)參考架構(gòu)。

build-intelligent-lake-warehouse-on-amazon-cloud-technology3.png

在以下章節(jié)中,我們將具體介紹各邏輯層的細(xì)節(jié)信息。

數(shù)據(jù)攝取層

智能湖倉(cāng)參考架構(gòu)中的攝取層包含一組專(zhuān)用的亞馬遜云科技服務(wù),負(fù)責(zé)將不同來(lái)源的數(shù)據(jù)攝取至智能湖倉(cāng)存儲(chǔ)層內(nèi)。大部分?jǐn)z取服務(wù)能夠直接將數(shù)據(jù)傳遞至數(shù)據(jù)湖與數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)。此外,其中使用的定制化專(zhuān)用服務(wù)還能充分滿(mǎn)足以下來(lái)源的連接性、數(shù)據(jù)格式、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)速度等具體要求:

·運(yùn)營(yíng)數(shù)據(jù)庫(kù)源

·軟件即服務(wù)(SaaS)應(yīng)用程序

·文件共享

·流式數(shù)據(jù)源

運(yùn)營(yíng)數(shù)據(jù)庫(kù)源(OLTP、ERP、CRM等)

攝取層中的AWS Data Migration Service(AWS DMS)組件能夠接入多個(gè)運(yùn)營(yíng)RDBMS與NoSQL數(shù)據(jù)庫(kù),并將其中的數(shù)據(jù)攝取至數(shù)據(jù)湖內(nèi)的Amazon Simple Storage Service(Amazon S3)存儲(chǔ)桶中,或者直接攝取至Amazon Redshift數(shù)據(jù)倉(cāng)庫(kù)的staging表。借助AWS DMS,您可以一次性導(dǎo)入源數(shù)據(jù),然后再?gòu)?fù)制源數(shù)據(jù)庫(kù)的數(shù)據(jù)持續(xù)變化。

SaaS應(yīng)用程序

攝取層使用Amazon AppFlow輕松將SaaS應(yīng)用程序數(shù)據(jù)攝取至您的數(shù)據(jù)湖內(nèi)。只需單擊幾下,您就可以在Amazon AppFlow中設(shè)置無(wú)服務(wù)器數(shù)據(jù)獲取流。您的數(shù)據(jù)流可以接入多種SaaS應(yīng)用程序(例如Salesforce、Marketo以及Google Analytics)、攝取數(shù)據(jù),再將結(jié)果傳遞至智能湖倉(cāng)存儲(chǔ)層或者數(shù)據(jù)湖內(nèi)的S3存儲(chǔ)桶,也可以直接傳遞至Amazon Redshift數(shù)據(jù)倉(cāng)庫(kù)中的staging表。您可以調(diào)度Amazon AppFlow攝取流,或者根據(jù)SaaS應(yīng)用程序內(nèi)的事件進(jìn)行即時(shí)觸發(fā)。在將攝取數(shù)據(jù)傳遞至智能湖倉(cāng)存儲(chǔ)層之前,您還可以對(duì)數(shù)據(jù)內(nèi)容加以驗(yàn)證、過(guò)濾、映射及脫敏。

文件共享

相當(dāng)一部分應(yīng)用程序會(huì)將結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在托管于網(wǎng)絡(luò)附加存儲(chǔ)(NAS)陣列上的文件中。AWS DataSync能夠從啟用NFS與SMB的NAS設(shè)備中快速將數(shù)百萬(wàn)個(gè)文件、數(shù)百TB大小的數(shù)據(jù)攝取至數(shù)據(jù)湖登陸區(qū)內(nèi)。DataSync不僅能夠自動(dòng)處理復(fù)制作業(yè)的腳本、調(diào)度并監(jiān)控轉(zhuǎn)移過(guò)程,還能夠驗(yàn)證數(shù)據(jù)完整性并優(yōu)化網(wǎng)絡(luò)資源利用率。在完成一輪文件轉(zhuǎn)移之后,DataSync還可監(jiān)控并將后續(xù)發(fā)生變更的文件同步至智能湖倉(cāng)。更重要的是,DataSync是一項(xiàng)完全托管服務(wù),整個(gè)設(shè)置過(guò)程只需要幾分鐘。

流式數(shù)據(jù)源

攝取層使用Amazon Kinesis Data Firehose從內(nèi)部或外部源處接收流式數(shù)據(jù),并將其傳遞至智能湖倉(cāng)存儲(chǔ)層。只需單擊幾下,您就可以配置Kinesis Data Firehose API端點(diǎn),供數(shù)據(jù)源發(fā)送流式數(shù)據(jù)——包括點(diǎn)擊流、應(yīng)用程序與基礎(chǔ)設(shè)施日志及監(jiān)控指標(biāo),以及設(shè)備遙測(cè)與傳感器讀數(shù)等物聯(lián)網(wǎng)數(shù)據(jù)。Kinesis Data Firehose將執(zhí)行以下操作:

·緩沖輸入流。

·對(duì)數(shù)據(jù)進(jìn)行分批、壓縮、轉(zhuǎn)換、分區(qū)與加密。

·將數(shù)據(jù)作為S3對(duì)象傳遞至數(shù)據(jù)湖,或作為行傳遞至Amazon Redshift數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的staging表。

Kinesis Data Firehose為無(wú)服務(wù)器服務(wù),不需要額外管理且提供成本模型,您只需要為通過(guò)該服務(wù)傳輸及處理的實(shí)際數(shù)據(jù)量付費(fèi)。Kinesis Data Firehose會(huì)自動(dòng)伸縮以適應(yīng)傳入數(shù)據(jù)的規(guī)模及吞吐量。在構(gòu)建實(shí)時(shí)流式分析管道期間,攝取層會(huì)直接提供Amazon Kinesis Data Streams。

智能湖倉(cāng)存儲(chǔ)層

Amazon Redshift與Amazon S3為本文中的智能湖倉(cāng)參考架構(gòu)提供了統(tǒng)一的原生集成存儲(chǔ)層。一般而言,Amazon Redshift負(fù)責(zé)存儲(chǔ)高度規(guī)范化、符合標(biāo)準(zhǔn)要求的可信數(shù)據(jù),這些結(jié)構(gòu)化數(shù)據(jù)遵循標(biāo)準(zhǔn)維度schema;對(duì)于其他結(jié)構(gòu)化、半結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù),則由Amazon S3提供EB級(jí)別的數(shù)據(jù)湖存儲(chǔ)支持。但Amazon Redshift同樣支持半結(jié)構(gòu)化數(shù)據(jù),供您在其中攝取及存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù)。Amazon S3則提供行業(yè)領(lǐng)先的可擴(kuò)展性、數(shù)據(jù)可用性、安全性與性能表現(xiàn)。開(kāi)放文件格式允許您使用多種處理及消費(fèi)層組件對(duì)同一批Amazon S3數(shù)據(jù)執(zhí)行分析。公共目錄層在Amazon S3中負(fù)責(zé)存儲(chǔ)結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)集的schema。消費(fèi)該S3數(shù)據(jù)集的組件通常會(huì)在讀取數(shù)據(jù)集時(shí),將這些schema應(yīng)用于數(shù)據(jù)集(即schema-on-read)。

Amazon Redshift Spectrum是原生集成智能湖倉(cāng)存儲(chǔ)層中的核心組成部分之一。Redshift Spectrum幫助Amazon Redshift提供一個(gè)統(tǒng)一的SQL接口,用以接收及處理SQL語(yǔ)句,并在同一查詢(xún)內(nèi)引用及合并托管在數(shù)據(jù)湖及數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的數(shù)據(jù)集。憑借數(shù)千個(gè)瞬態(tài)Redshift Spectrum節(jié)點(diǎn)配合Amazon Redshift的復(fù)雜查詢(xún)優(yōu)化功能,Amazon Redshift能夠高效查詢(xún)存儲(chǔ)在Amazon S3中的PB級(jí)數(shù)據(jù)。Redshift Spectrum還能夠查詢(xún)S3數(shù)據(jù)湖內(nèi)的分區(qū)數(shù)據(jù),包括讀取使用開(kāi)源編解碼器壓縮的數(shù)據(jù),并支持包括JSON、CSV、Avro、Parquet、ORC以及Apache Hudi在內(nèi)的多種開(kāi)源行或列式存儲(chǔ)。

當(dāng)Redshift Spectrum讀取存儲(chǔ)在Amazon S3中的數(shù)據(jù)集時(shí),會(huì)將來(lái)自公共AWS Lake Formation目錄的相應(yīng)schema應(yīng)用于數(shù)據(jù)(即schema-on-read)。借助Redshift Spectrum,您可以建立起執(zhí)行以下操作的Amazon Redshift原生管道:

·使用Redshift Spectrum將大量歷史數(shù)據(jù)保留在數(shù)據(jù)湖內(nèi),并將最近幾個(gè)月的熱數(shù)據(jù)攝取至數(shù)據(jù)倉(cāng)庫(kù)中。

·處理附加存儲(chǔ)內(nèi)的熱數(shù)據(jù)與數(shù)據(jù)湖中的歷史數(shù)據(jù),由此生成豐富數(shù)據(jù)集,全程無(wú)需執(zhí)行任何數(shù)據(jù)移動(dòng)操作。

·將豐富數(shù)據(jù)集插入至附加存儲(chǔ)中的表內(nèi),或者直接插入由數(shù)據(jù)湖托管的外部表中。

·輕松將大量冷門(mén)歷史數(shù)據(jù)由數(shù)據(jù)倉(cāng)庫(kù)轉(zhuǎn)移至成本更低廉的數(shù)據(jù)湖存儲(chǔ)內(nèi),且仍保證將其作為Amazon Redshift查詢(xún)的一部分以供輕松獲取。

Amazon Redshift中的高度結(jié)構(gòu)化數(shù)據(jù)通常負(fù)責(zé)為交互式查詢(xún)及高度受信的即時(shí)商務(wù)智能儀表板提供支持;而Amazon S3內(nèi)的結(jié)構(gòu)化、非結(jié)構(gòu)化與半結(jié)構(gòu)化數(shù)據(jù),則常被用于驅(qū)動(dòng)機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)與大數(shù)據(jù)處理用例。

AWS DMS與Amazon AppFlow能夠?qū)?shù)據(jù)從結(jié)構(gòu)化來(lái)源直接傳遞至S3數(shù)據(jù)湖或Amazon Redshift數(shù)據(jù)倉(cāng)庫(kù),充分滿(mǎn)足用例的具體需求。在攝取數(shù)據(jù)文件之后,DataSync會(huì)將數(shù)據(jù)存儲(chǔ)至Amazon S3。處理層組件可通過(guò)單一統(tǒng)一接口(例如Amazon Redshift SQL)訪(fǎng)問(wèn)統(tǒng)一智能湖倉(cāng)存儲(chǔ)層內(nèi)的數(shù)據(jù),并由接口使用Redshift Spectrum將Amazon Redshift集群中存儲(chǔ)的數(shù)據(jù)與Amazon S3的數(shù)據(jù)加以合并。

在S3數(shù)據(jù)湖內(nèi),結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)均被存儲(chǔ)為S3對(duì)象。數(shù)據(jù)湖內(nèi)的各S3對(duì)象會(huì)按存儲(chǔ)桶或前綴名稱(chēng)被劃分為登陸區(qū)、原始區(qū)、受信區(qū)及策劃區(qū)等幾種類(lèi)別。對(duì)于將數(shù)據(jù)存儲(chǔ)在S3數(shù)據(jù)湖內(nèi)的管道,數(shù)據(jù)將從來(lái)源處被直接攝取至登陸區(qū)內(nèi)。接下來(lái),處理層將驗(yàn)證登陸區(qū)數(shù)據(jù)并將結(jié)果存儲(chǔ)在原始區(qū)內(nèi)或添加相應(yīng)前綴以供永久存儲(chǔ)。之后,處理層對(duì)原始區(qū)數(shù)據(jù)執(zhí)行schema、分區(qū)以及其他轉(zhuǎn)換,確保數(shù)據(jù)達(dá)到一致?tīng)顟B(tài),處理后的結(jié)果被統(tǒng)一存儲(chǔ)在受信區(qū)內(nèi)。最后一步,處理層對(duì)受信區(qū)數(shù)據(jù)集進(jìn)行建模,再將結(jié)果與其他數(shù)據(jù)集進(jìn)行合并以實(shí)施策劃,最終結(jié)果被存儲(chǔ)在策劃層內(nèi)。通常,來(lái)自策劃層的數(shù)據(jù)集會(huì)被部分或全部納入Amazon Redshift數(shù)據(jù)倉(cāng)庫(kù)中,以支持那些要求極低訪(fǎng)問(wèn)延遲、或者需要運(yùn)行高復(fù)雜度SQL查詢(xún)的用例。

各個(gè)區(qū)內(nèi)的數(shù)據(jù)集,通常會(huì)根據(jù)相應(yīng)區(qū)(原始、受信或策劃區(qū))消費(fèi)模式的匹配鍵進(jìn)行分區(qū)。參考架構(gòu)使用GZIP、BZIP以及Snappy等開(kāi)源編解碼器對(duì)數(shù)據(jù)集所對(duì)應(yīng)的S3對(duì)象執(zhí)行壓縮,借此降低存儲(chǔ)成本并縮短處理層與消費(fèi)層內(nèi)的組件讀取時(shí)間。數(shù)據(jù)集通常以Parquet及ORC等開(kāi)源列式存儲(chǔ)格式存在,以進(jìn)一步減少處理層與消費(fèi)層組件查詢(xún)某些列子集時(shí)所需讀取的數(shù)據(jù)量。Amazon S3提供一系列針對(duì)不同用例設(shè)計(jì)的存儲(chǔ)類(lèi)。其中Amazon S3智能分層存儲(chǔ)類(lèi)專(zhuān)門(mén)用于在不影響性能或運(yùn)營(yíng)開(kāi)銷(xiāo)的前提下,自動(dòng)將數(shù)據(jù)轉(zhuǎn)移至最具成本效益的訪(fǎng)問(wèn)層內(nèi)。

Amazon Redshift提供PB級(jí)數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)容量,用于存儲(chǔ)按維度或非規(guī)范化schema建模的高度結(jié)構(gòu)化數(shù)據(jù)。在Amazon Redshift上,數(shù)據(jù)將以高壓縮比列式格式存儲(chǔ),并分布式存儲(chǔ)在高性能節(jié)點(diǎn)集群上。各個(gè)節(jié)點(diǎn)最多提供64 TB高性能托管存儲(chǔ)容量。Amazon Redshift會(huì)強(qiáng)制執(zhí)行schema-on-write、ACID事務(wù)與工作負(fù)載隔離等機(jī)制,借此保障數(shù)據(jù)的高質(zhì)量與一致性。用戶(hù)大多在Amazon Redshift上存儲(chǔ)高一致性、統(tǒng)一、可信且受控的結(jié)構(gòu)化數(shù)據(jù)集,借此滿(mǎn)足高吞吐量、低延遲與高并發(fā)性用例。當(dāng)然,您也可以使用Amazon Redshift中增量式刷新的物化視圖,以顯著提高商務(wù)智能儀表板中復(fù)雜查詢(xún)的性能與吞吐量。

在通過(guò)各種來(lái)源獲取數(shù)據(jù)并構(gòu)建智能湖倉(cāng)時(shí),我們一般可以直接在整個(gè)數(shù)據(jù)湖及數(shù)據(jù)倉(cāng)庫(kù)中托管數(shù)百甚至數(shù)千個(gè)數(shù)據(jù)集。中央數(shù)據(jù)目錄將統(tǒng)一為智能湖倉(cāng)存儲(chǔ)(數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)湖)內(nèi)的全部數(shù)據(jù)集提供元數(shù)據(jù),這將大大降低搜索難度、保證智能湖倉(cāng)能夠始終保持良好的數(shù)據(jù)發(fā)現(xiàn)能力。此外,這種將元數(shù)據(jù)由數(shù)據(jù)湖托管數(shù)據(jù)分離至統(tǒng)一中央schema的處理方式,還可幫助處理層/消費(fèi)層組件及Redshift Spectrum輕松實(shí)現(xiàn)schema-on-read。

在本文的智能湖倉(cāng)參考架構(gòu)中,Lake Formation提供的中央目錄負(fù)責(zé)存儲(chǔ)智能湖倉(cāng)中托管的全部數(shù)據(jù)集的元數(shù)據(jù)(無(wú)論數(shù)據(jù)集實(shí)際存儲(chǔ)在Amazon S3還是Amazon Redshift內(nèi))。用戶(hù)可以將全部數(shù)據(jù)集的技術(shù)元數(shù)據(jù)(例如版本化表schema、分區(qū)信息、物理數(shù)據(jù)位置以及更新時(shí)間戳等)與業(yè)務(wù)屬性(例如數(shù)據(jù)所有者、數(shù)據(jù)管理者、列業(yè)務(wù)定義以及列信息敏感性等)存儲(chǔ)在Lake Formation中。

大部分由數(shù)據(jù)湖托管的數(shù)據(jù)集,其schema都在不斷變化、數(shù)據(jù)分區(qū)也在持續(xù)增加;而由數(shù)據(jù)倉(cāng)庫(kù)托管的數(shù)據(jù)集schema則大多以受控方式持續(xù)演進(jìn)。AWS Glue crawlers能夠跟蹤數(shù)據(jù)湖托管數(shù)據(jù)集以及數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)集內(nèi)不斷變化的數(shù)據(jù)schema與新增分區(qū),并在Lake Formation目錄中為相應(yīng)schema添加新的版本。此外,Lake Formation還提供API,供您使用自定義腳本及第三方產(chǎn)品實(shí)現(xiàn)元數(shù)據(jù)注冊(cè)與管理。

Lake Formation為數(shù)據(jù)湖管理員們提供了中央管理位置,可以為數(shù)據(jù)湖內(nèi)托管的數(shù)據(jù)庫(kù)和表設(shè)置細(xì)化的表級(jí)與列級(jí)權(quán)限。在設(shè)置Lake Formation權(quán)限之后,用戶(hù)和各分組只能使用多個(gè)處理層與消費(fèi)層服務(wù)(例如AWS Glue、Amazon EMR、Amazon Athena以及Redshift Spectrum等)訪(fǎng)問(wèn)授權(quán)的表和列。

數(shù)據(jù)處理層

智能湖倉(cāng)架構(gòu)中的處理層提供多種專(zhuān)用組件,能夠支持各類(lèi)數(shù)據(jù)處理用例。為了匹配智能湖倉(cāng)內(nèi)各數(shù)據(jù)集的獨(dú)特結(jié)構(gòu)(平面表、多層或者非結(jié)構(gòu)化)及速度(批量或流式),您可以靈活選擇不同的專(zhuān)用處理組件。各個(gè)組件都能夠面向Amazon S3與Amazon Redshift(統(tǒng)稱(chēng)為智能湖倉(cāng)存儲(chǔ))讀寫(xiě)數(shù)據(jù)。

我們可以使用處理層組件構(gòu)建數(shù)據(jù)處理作業(yè),這些作業(yè)將使用以下接口對(duì)存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)及數(shù)據(jù)湖內(nèi)的數(shù)據(jù)進(jìn)行讀寫(xiě):

Amazon Redshift SQL(配合Redshift Spectrum)。

運(yùn)行在Amazon EMR上的Apache Spark作業(yè)。

運(yùn)行在AWS Glue上的Apache Spark作業(yè)。

您可以使用AWS Glue crawlers或Lake Formation API,將結(jié)果數(shù)據(jù)集中的元數(shù)據(jù)添加到Lake Formation中央目錄內(nèi)。

您也可以使用專(zhuān)用組件構(gòu)建出能夠?qū)崿F(xiàn)以下功能的數(shù)據(jù)轉(zhuǎn)換管道:

使用Amazon Redshift(配合Redshift Spectrum)、基于SQL的ELT

使用AWS Glue或Amazon EMR實(shí)現(xiàn)的大數(shù)據(jù)處理

使用Amazon Kinesis實(shí)現(xiàn)的近實(shí)時(shí)流式數(shù)據(jù)處理。

通過(guò)流式無(wú)服務(wù)器處理獲取實(shí)時(shí)洞見(jiàn)

使用Apache Flink與Amazon Kinesis Data Analytics實(shí)現(xiàn)流式ETL

使用Spark Streaming在AWS Glue上實(shí)現(xiàn)近實(shí)時(shí)流式數(shù)據(jù)處理。

使用Spark Streaming在Amazon EMR上實(shí)現(xiàn)近實(shí)時(shí)流式數(shù)據(jù)處理。

基于SQL的ELT

要在智能湖倉(cāng)存儲(chǔ)層中轉(zhuǎn)換結(jié)構(gòu)化數(shù)據(jù),您可以使用您所熟悉的SQL語(yǔ)義構(gòu)建起功能強(qiáng)大的ELT管道。這些ELT管道將使用Amazon Redshift中的大規(guī)模并發(fā)處理(MPP)功能以及Redshift Spectrum功能啟動(dòng)數(shù)千個(gè)瞬態(tài)節(jié)點(diǎn),即時(shí)將處理容量擴(kuò)展至PB級(jí)別。Amazon Redshift上基于存儲(chǔ)過(guò)程的這類(lèi)ELT管道能夠?qū)σ韵聦?duì)象進(jìn)行轉(zhuǎn)換:

·由AWS DMS或Amazon AppFlow直接傳遞至Amazon Redshift staging表的平面結(jié)構(gòu)化數(shù)據(jù)

·使用開(kāi)源文件格式(例如JSON、Avro、Parquet及ORC等)托管在數(shù)據(jù)湖內(nèi)的數(shù)據(jù)

在數(shù)據(jù)豐富期間,這些管道還可以使用SQL語(yǔ)句將內(nèi)部維度表與S3數(shù)據(jù)湖內(nèi)托管的大型事實(shí)表(使用Redshift Spectrum層)連接起來(lái)。在最后一步中,數(shù)據(jù)處理管道可以將經(jīng)過(guò)策劃、豐富與建模的數(shù)據(jù)插入至Amazon Redshift內(nèi)部表或存儲(chǔ)在Amazon S3中的外部表內(nèi)。

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于AWS,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪(fǎng)
投稿采訪(fǎng)
出海管家
出海管家