自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

阿里云ADB基于Hudi構(gòu)建Lakehouse的實踐

大數(shù)據(jù) 數(shù)據(jù)湖
今天非常高興能夠借這個機會和大家分享下阿里云 ADB 基于 Apache Hudi 構(gòu)建 Lakehouse 的應(yīng)用與實踐。

導(dǎo)讀:大家好,我是來自阿里云數(shù)據(jù)庫的李少鋒,現(xiàn)在主要專注于 ADB Hudi & Spark 的研發(fā)以及產(chǎn)品化,今天非常高興能夠借這個機會和大家分享下阿里云 ADB 基于 Apache Hudi 構(gòu)建 Lakehouse 的應(yīng)用與實踐。

接下來我將分為 3 個部分給大家介紹今天的議題,首先我會介紹經(jīng)過將近一年打磨推出的ADB 湖倉版的架構(gòu)以及關(guān)鍵優(yōu)勢,接著會介紹在支持客戶構(gòu)建 Lakehouse 時,我們是如何克服基于 Hudi 構(gòu)建千億數(shù)據(jù)入湖的挑戰(zhàn);最后將介紹基于 ADB 構(gòu)建 Lakehouse 的實踐。

1、ADB 湖倉版機構(gòu)與關(guān)鍵優(yōu)勢

首先先來介紹下 ADB 湖倉版架構(gòu)及其關(guān)鍵優(yōu)勢。

圖片

一體版本,我們稱為 ADB 湖倉版。湖倉版在數(shù)據(jù)全鏈路的「采存算管用」5 大方面都進行了全面升級。

在「采集」方面,我們推出了數(shù)據(jù)管道 APS 功能,可以一鍵低成本接入數(shù)據(jù)庫、日志、大數(shù)據(jù)中的數(shù)據(jù)。

在「存儲」方面,我們除了新增 Hudi 格式的外表能力,也對內(nèi)部存儲進行了升級改造。通過只存一份數(shù)據(jù),同時滿足離線、在線 2 類場景。

在「計算」方面,我們對自研的 XIHE BSP SQL 引擎進行容錯性、運維能力等方面的提升,同時引入開源 Spark 引擎滿足更復(fù)雜的離線處理場景和機器學習場景。

在「管理」方面,我們推出了統(tǒng)一的元數(shù)據(jù)管理服務(wù),統(tǒng)一湖倉元數(shù)據(jù)及權(quán)限,讓湖倉數(shù)據(jù)的流通更順暢。

在「應(yīng)用」方面,除了通過SQL方式的BI分析應(yīng)用外,還支持基于 Spark 的 AI 應(yīng)用。

我們希望通過資源一體化和體驗一體化,2 個一體化能力,幫助客戶實現(xiàn)降本增效。資源一體化是指一份數(shù)據(jù)、極致彈性和融合引擎。體驗一體化是指統(tǒng)一的計費單位、數(shù)據(jù)管道、數(shù)據(jù)管理和數(shù)據(jù)訪問。

圖片

在 ADB 湖倉版中,首先將一份全量數(shù)據(jù)存在低成本高吞吐存儲介質(zhì)上,低成本離線處理場景直接讀寫低成本存儲介質(zhì),降低數(shù)據(jù)存儲和數(shù)據(jù) IO 成本,保證高吞吐。其次將實時數(shù)據(jù)存在單獨的存儲 IO 節(jié)點(EIU)上,保證「行級」的數(shù)據(jù)實時性,同時對全量數(shù)據(jù)構(gòu)建索引,并通過 Cache 能力對數(shù)據(jù)進行加速,滿足百 ms 級高性能在線分析場景。因此,數(shù)據(jù)湖中的數(shù)據(jù)可以在數(shù)倉中加速訪問;而數(shù)倉中的數(shù)據(jù),也可以利用離線資源進行計算。

圖片

極致彈性通過彈得好、彈得起、彈得快三個特點,貼合業(yè)務(wù)負載,保證查詢性能,降低資源成本。

彈得好是指提供了適合在線分析業(yè)務(wù)的分時彈性和適合離線處理、機器學習的按需彈性,完美貼合業(yè)務(wù)負載,滿足業(yè)務(wù)需求。

彈得起是指基于神龍 + ECS + ECI構(gòu)建了三級資源庫存供給能力,保障彈性資源交付率超過 95%。

彈得快是指資源池化后通過緩存加速等技術(shù),彈性啟動效率可以達到 10s 內(nèi)。

圖片

支撐離線、在線兩類場景的背后,除了剛才提到的一份數(shù)據(jù)。還有自研的XIHE融合計算引擎,同時提供 MPP 模式和 BSP 模式,并提供自動切換能力。

自動切換能力是指當查詢使用 MPP 模式無法在一定耗時內(nèi)完成時,系統(tǒng)會自動切換為 BSP模式進行執(zhí)行。未來,我們還將在一個查詢中,根據(jù)算子特點部分算子采用 MPP 模式,部分算子采用 BSP 模式,兼顧高性能和高吞吐,提供更智能的查詢體驗。

同時融合引擎為提供資源利用率提供了可能,通常離線處理發(fā)生在晚上,在線分析發(fā)生在白天,一份資源可以同時支持 2 類場景,通過錯峰提升資源利用率。

圖片

最后再介紹一下統(tǒng)一數(shù)據(jù)管道APS。數(shù)據(jù)快速接入,是數(shù)據(jù)分析的第一步,也是最容易流失客戶的一步。但我們發(fā)現(xiàn)數(shù)據(jù)接入面臨體驗差、成本高、門檻高等痛點。

所以,我們決定跟其它接入工具做好深度優(yōu)化的同時,面向中小客戶,構(gòu)建一個統(tǒng)一數(shù)據(jù)管道 APS,底層基于 Flink 實時引擎,提供易用性好、低延時、低成本的數(shù)據(jù)接入體驗。

圖片

對于湖倉中的表元數(shù)據(jù),ADB 做了統(tǒng)一元數(shù)據(jù)服務(wù),湖倉中的元數(shù)據(jù)/權(quán)限可互通,可通過不同引擎自由訪問湖倉數(shù)據(jù);而對于湖倉數(shù)據(jù),為了屏蔽底層數(shù)據(jù)存儲格式的差異,便于第三方引擎集成,ADB 提供了面向內(nèi)存列存格式 Arrow,滿足對吞吐的要求,對于內(nèi)部存儲,已經(jīng)通過 Arrow 格式完成 Spark 對接,提供高吞吐能力。

圖片

自研是打造技術(shù)深度的基礎(chǔ),但同時我們積極擁抱開源,滿足已經(jīng)生長在開源生態(tài)上的客戶可以更平滑地使用湖倉版。外表類型,在 Parquet/ORC/JSON/CSV 等 Append 類型數(shù)據(jù)格式的基礎(chǔ)上,為支持在對象存儲上低成本 Lakehouse,支持了Apache Hudi,提供近實時的更新、刪除能力,滿足客戶對低成本的訴求。

2、基于 Hudi 構(gòu)建千億數(shù)據(jù)入湖的挑戰(zhàn)

以上就是 ADB 湖倉版的架構(gòu)與關(guān)鍵優(yōu)勢,接著介紹基于 Hudi 構(gòu)建千億數(shù)據(jù)入湖的挑戰(zhàn)以及如何我們是如何克服這些挑戰(zhàn)的。

圖片

首先我們看下典型的業(yè)務(wù)場景,業(yè)務(wù)源端數(shù)據(jù)通過數(shù)據(jù)采集進入阿里云 SLS,然后通過 APS數(shù)據(jù)管道服務(wù)進入ADB 湖倉版,基于 ADB 湖倉版之上構(gòu)建日志查詢、日志導(dǎo)出、日志分析等功能。

該業(yè)務(wù)場景有如下典型的特點:

1.高吞吐,單鏈路最高 4GB/s 吞吐,日增數(shù)據(jù)量 350TB,總存儲量超 20PB。

2.數(shù)據(jù)傾斜/熱點嚴重:源端數(shù)據(jù)傾斜非常嚴重,從百萬到幾十條數(shù)據(jù)不等。

3.掃描量大:日志查詢的掃描量 50GB ~ 500GB 不等,查詢并發(fā)在 100+。

如果使用數(shù)倉的話會面臨成本高的問題,另外是數(shù)倉缺少熱點打散能力,只能不斷加資源,瓶頸明顯;最后是數(shù)倉系統(tǒng)資源是固化的,沒有動態(tài)彈性能力,或者彈性能力較弱,承載不同客戶查詢需求時,容易互相干擾,尤其是大客戶的數(shù)據(jù)掃描。

圖片

先來看下日志數(shù)據(jù)入湖的技術(shù)架構(gòu),數(shù)據(jù)從 SLS 讀取,然后通過 Flink 寫入 Hudi,整個架構(gòu)非常簡單,其中對于 SLS 和 Flink 的狀態(tài)存儲說明如下:

1.SLS 多 Shard 存儲,由 Flink 的多個 Source 算子并行消費。

2.消費后通過 Sink 算子調(diào)用 Hudi Worker/Writer 寫出到 Hudi(實際鏈路還存在 Repartition,熱點打散等邏輯)。

3.Flink Checkpoint 后端存儲以及 Hudi 數(shù)據(jù)存儲在OSS。

圖片

接著來看下 Flink 寫入 Hudi 的主流程,首先明確 Flink 寫 Hudi 時會存在兩種角色,Coordinator 負責處理元數(shù)據(jù),如對 Hudi Instant 的相關(guān)操作,Worker/Writer 負責處理數(shù)據(jù),如寫入數(shù)據(jù)為 parquet 格式,寫入步驟如下:

1.Coordinator 開啟一個 Hudi Instant。

2.Filnk Sink 發(fā)送數(shù)據(jù)給 Hudi Worker 寫出。

3.觸發(fā) Flink Checkpoint 時,則通過 Sink 算子通知 Worker Flush 數(shù)據(jù),同時持久化operator-state。

4.當 Flink 完成 Checkpoint 持久化時,通知  Coordinator 提交該 Instant,Coordinator 完成最終提交,寫 commit 文件,數(shù)據(jù)對外可見。

5.提交后會立即開啟一個新的 Instant,繼續(xù)上述循環(huán)。

圖片

如果把 Flink 寫 Hudi 保證端到端一致性分成兩部分,一部分是 Flink 框架內(nèi)部的,另外一個部分是與 Hudi 交互的部分。

1.其中步驟 1 到 3 之間是 Flink Checkpoint 邏輯,如果異常在這些步驟上發(fā)生,則認為 Checkpoint失敗,觸發(fā) Job 重啟,從上一次 Checkpoint 恢復(fù),相當于兩階段提交的 Precommit 階段失敗,事務(wù)回滾,如果有 Hudi 的 inflight commit,等待 Hudi Rollback 即可,無數(shù)據(jù)不一致問題。

2.當 3 到 4 之間發(fā)生異常,則出現(xiàn) Flink 和 Hudi 狀態(tài)不一致。此時 Flink 認為 Checkpoint 已結(jié)束,而 Hudi 實際尚未提交。如果對此情況不做處理,則發(fā)生了數(shù)據(jù)丟失,因為Flink Checkpoint 完畢后,SLS 位點已經(jīng)前移,而這部分數(shù)據(jù)在 Hudi 上并未完成提交,因此容錯的重點是如何處理此階段引起的數(shù)據(jù)一致性問題。

3.我們拿一個例子舉例分析在步驟 3 和 4 之前發(fā)生異常時,如果保證數(shù)據(jù)一致性。

4.否則認為上一次 Instant 執(zhí)行失敗,等待 Rollback 即可,臟數(shù)據(jù)對用戶不可見。

圖片

我們舉例分析下在步驟 3 和 4 之間發(fā)生異常時,是如何保證數(shù)據(jù)一致性的,可以看到對于1615 的 commit 在 Flink 完成 Checkpoint 時會將其 instant 信息持久化至 Flink 后端存儲。

從 checkpoint 恢復(fù)時有如下步驟:

1.Checkpoint 時 Sink 算子 Flush 數(shù)據(jù)及持久化 Instant 的 state。

2.Worker 請求處于 pending 的 Instant,與從 state 恢復(fù)的 Instant 做對比并匯報給 Coordinator。

3.Coordinator 從 Instant Timeline 中獲取最新的 Instant 信息,并接收所有 Worker 的匯報。

4.如果 Worker 匯報 Instant 相同,并且不在 Timeline 中已完成的 Instant 中,則表示該 Instant 尚未提交,觸發(fā) Recommit。

經(jīng)過上述步驟可以保證在 Flink 完成 Checkpoint 時,但對于 Hudi Commit 失敗時的場景會進行 recommit,從而保證數(shù)據(jù)的一致性。

圖片

?接著介紹我們在處理 4GB/s 的高吞吐時面臨的挑戰(zhàn),一個非常大的挑戰(zhàn)就是熱點數(shù)據(jù)處理,我們統(tǒng)計了 5 分鐘內(nèi)各 Task 處理數(shù)據(jù)的大小,發(fā)現(xiàn)各 Task 處理數(shù)據(jù)從 200W 條到幾十條不等,熱點問題明顯。

而在寫入鏈路中會根據(jù)分區(qū)字段做 shuffle,同一個分區(qū)由一個 Task 寫入,對于上述存在的熱點問題會導(dǎo)致部分TM上的分區(qū)寫入非常慢,導(dǎo)致數(shù)據(jù)延遲/作業(yè)掛掉。

面對寫入熱點問題,我們開發(fā)了熱點打散功能,通過配置指定規(guī)則打散熱點數(shù)據(jù),同時可以根據(jù)數(shù)據(jù)流量自動更新熱點打散規(guī)則,確保系統(tǒng)的健壯性,可以看到經(jīng)過熱點打散后個 TM 處理的數(shù)據(jù)量/CPU占用/內(nèi)存占用基本相同并且比較平穩(wěn),作業(yè)穩(wěn)定性也得到了提升。?

圖片

?另外一個挑戰(zhàn)是 OOM,其實和熱點打散也有很大關(guān)系,我們發(fā)現(xiàn)作業(yè)運行時會出現(xiàn)OOM,導(dǎo)致作業(yè)掛掉,數(shù)據(jù)延遲上漲,因此我們對堆外/堆內(nèi)內(nèi)存的使用做了比較細致的梳理,使用內(nèi)存的部分主要集中在:

1.寫 Parquet 文件占用堆外內(nèi)存?。

2.OSS Flush 占用堆外內(nèi)存。

3.單 TM 的 Slot 數(shù)、寫并發(fā)都影響內(nèi)存占用,如每個寫并發(fā)處理 30-50 Handle,TM 16 并發(fā),8M row group size 最多占用 6400 M 內(nèi)存。

4.堆內(nèi)內(nèi)存負載過高導(dǎo)致頻繁Full GC。

我們針對上述分內(nèi)存使用做了優(yōu)化,如:

1.row group size 配置為 4M,減少堆外內(nèi)存占用,同時將堆外內(nèi)存調(diào)大。

2.close 時及時釋放 compressor 占用的內(nèi)存,這部分對 parquet 源碼做了改造。

3.透出堆外內(nèi)存指標,增加堆外內(nèi)存監(jiān)控,這部分也是對 parquet 源碼做了改造。

4.源端 source 算子與 Shard 分配更均衡,以此保證各 TM 消費的 shard 數(shù)基本均等。

圖片

最后一個比較大的挑戰(zhàn)就是 OSS 限流,云對象存儲(如OSS)對 List 操作不友好,list objects 對 OSS 服務(wù)器壓力較大,如在我們場景下,1500 寫并發(fā),會產(chǎn)生 1W QPS list object,OSS 側(cè)目前限流 1K QPS,限流明顯,限流會導(dǎo)致作業(yè)處理變慢,延遲變高,為解決該問題,我們也梳理了寫入鏈路對 OSS 的請求,在元數(shù)據(jù)鏈路對 OSS 的請求如下:

1.Timeline 構(gòu)建需要 list .hoodie 目錄 。

2.Flink CkpMetaData 基于 OSS 傳遞給 Worker。

3.Hadoop-OSS SDK create/exists/mkdir 函數(shù)依賴 getStatus 接口,getStatus 接口現(xiàn)有實現(xiàn)導(dǎo)致大量 list 請求,其中 getStatus 接口對于不存在的文件,會額外進行一次 list objects 請求確認 Path 是不是目錄,對 Marker File、partitionMetadata、數(shù)據(jù)文件都會產(chǎn)生大量的 list objects 請求。

在數(shù)據(jù)鏈路對 OSS 請求如下:先臨時寫到本地磁盤,再上傳至 OSS,導(dǎo)致本地磁盤寫滿。

針對上述對 OSS 的請求,我們做了如下優(yōu)化,在元數(shù)據(jù)側(cè):

1.Timeline Based CkpMetaData,將TM請求打到 JM,避免大量 TM 掃描 OSS 文件。

2.Hadoop-OSS SDK,透出直接創(chuàng)建文件的接口,不進行目錄檢查。

3.PartitionMetaData 緩存處理,在內(nèi)存中對每個分區(qū)的元數(shù)據(jù)文件做了緩存處理,盡量減少與 OSS 的交互。

4.Create Marker File 異步處理,異步化處理不阻塞對 Handle 的創(chuàng)建,減少創(chuàng)建 Handle 的成本。

5.開啟 Timeline Based Marker File,這個是社區(qū)已經(jīng)有的能力,直接開啟即可。

這里額外補充下可能有小伙伴比較好奇為什么開啟 hudi metadata table 來解決云對象存儲的限流問題,我們內(nèi)部做過測試,發(fā)現(xiàn)開啟 metadata table 時,寫入會越來越慢,無法滿足高吞吐的場景。

以上就是我們在處理日志數(shù)據(jù)入湖時面臨的典型挑戰(zhàn)以及我們?nèi)绾慰朔@些挑戰(zhàn),接著講講我們在處理數(shù)據(jù)入湖時為滿足業(yè)務(wù)要求做的關(guān)鍵特性開發(fā)。

圖片

首先是支持并發(fā)寫,業(yè)務(wù)側(cè)要求鏈路有補數(shù)據(jù)能力,補數(shù)據(jù)場景涉及多 Flink Client 寫不同分區(qū),實時寫鏈路,補數(shù)據(jù)鏈路,Table Service 鏈路并發(fā)操作表數(shù)據(jù)/元數(shù)據(jù),這要求:

1.表數(shù)據(jù)不錯亂。

2.補數(shù)據(jù)/TableService 鏈路不影響實時寫鏈路。

因此我們對 Hudi 內(nèi)核側(cè)做了部分修改來支持并發(fā)寫場景:

1.CkpMetadata 唯一標識,保證不同作業(yè)使用不同 ckp meta。

2.ViewStorage 唯一標識,保證不同作業(yè) Timeline Server 隔離。

3.Lazy Table Service,保證并行作業(yè)不互相 rollback commit,避免數(shù)據(jù)錯亂。

4.Instant 生成重試策略,保證 Timeline Instant 的唯一性,避免數(shù)據(jù)錯亂。

5.獨立 Table Service 處理,使用單獨的作業(yè)運行 Table Service,與實時寫鏈路完全隔離。

圖片

另外一個關(guān)鍵特性是出于成本考慮,業(yè)務(wù)側(cè)要求 Hudi 中數(shù)據(jù)不能無限地保存,需要按照用戶設(shè)定的策略保留指定時間的數(shù)據(jù),這要求:

1.Hudi 提供分區(qū)級別按照數(shù)據(jù)量,分區(qū)數(shù)和過期時間等不同維度進行生命周期管理的能力。

2.Hudi 支持并發(fā)設(shè)置生命周期管理策略,因為面向多租戶會涉及并發(fā)更新管理策略。

針對業(yè)務(wù)對生命周期管理的需求,我們開發(fā) Hudi 的生命周期管理功能,具體實現(xiàn)如下:

1.對于生命周期管理使用,首先通過 call command 添加生命周期管理策略,并進行持久化,為支持并發(fā)更新,我們參考 Hudi MOR 表中 Base 文件和 Log 文件的設(shè)計,并發(fā)更新會寫入不同的 Log 文件。

2.對于生命周期管理的執(zhí)行,在每一次 commit 結(jié)束后進行統(tǒng)計信息增量采集并更新至統(tǒng)計信息文件,然后按照分區(qū)策略進行過期分區(qū)的處理,對于過期分區(qū)會生成一個 replace commit,等待后續(xù)被 clean 即可,同時會合并前面的策略 Base 文件和 Log 文件,生成新的 Base 文件以及更新統(tǒng)計信息。

我們也提供了按照分區(qū)數(shù)、數(shù)據(jù)量、過期時間三種不同策略來管理 Hudi 表中的分區(qū)的生命周期,很好的滿足業(yè)務(wù)側(cè)的需求。

圖片

最后一個比較大的關(guān)鍵特性是獨立 TableService,業(yè)務(wù)側(cè)要求保證實時寫鏈路穩(wěn)定,同時希望提高入湖數(shù)據(jù)的查詢性能,這要求:

1.在不影響主鏈路同步性能情況下,清理 Commits/文件版本,保證表狀態(tài)大小可控。

2.為提高查詢性能,提供異步 Clustering 能力,合并小文件,減少掃描量,提高查詢性能。

基于上述訴求我們開發(fā)了基于 ADB 湖倉版的獨立 Table Service 服務(wù),在入湖鏈路寫入完成后會進行一次調(diào)度,然后將請求寫入調(diào)度組件,供調(diào)度組件后續(xù)拉起彈性的 Flink/Spark TableService 作業(yè),可以做到對實時寫入鏈路無影響。

對于表狀態(tài)管理以及數(shù)據(jù)布局優(yōu)化均是采用的獨立 TableService 作業(yè)執(zhí)行,保證表的狀態(tài)大小可控,同時通過異步 Clustering 操作,端到端查詢性能提升 40% 以上。

圖片

在對日志入湖鏈路進行了深入打磨后,我們可以保證最高 4GB/s 的數(shù)據(jù)寫入,延遲在 5min內(nèi),滿足業(yè)務(wù)需求。

同時也建設(shè)了指標監(jiān)控大盤與異常鏈路告警功能,便于快速定位問題以及出現(xiàn)問題后快速響應(yīng)。

以上介紹便是我們是如何基于Hudi構(gòu)建千億數(shù)據(jù)入湖以及如何克服入湖挑戰(zhàn)的。

3、基于 ADB 構(gòu)建 Lakehouse 的實踐

最后介紹下基于 ADB 構(gòu)建 Lakehouse 的實踐。

圖片

前面也提到 ADB 湖倉版擁抱開源技術(shù),ADB 集成了流式處理引擎 Flink,并在此基礎(chǔ)上推出了 APS 數(shù)據(jù)管道服務(wù),APS 具備如下優(yōu)勢:

1.低成本,低延遲:作業(yè)級別彈性資源,按量付費;按流量自由設(shè)定作業(yè)資源;充分享受 Flink 流式處理性能紅利。

2.多數(shù)據(jù)源快速集成:得益于 Flink 成熟的 Connectors 機制,可以方便對接如 SLS、Kafka 等數(shù)據(jù)源,同時可以保證數(shù)據(jù)入湖的精確一致性。

3.低使用門檻:支持白屏化操作快速構(gòu)建 Lakehouse,基于統(tǒng)一元數(shù)據(jù)服務(wù),Lakehouse 數(shù)據(jù)可通過 Spark/ADB 引擎無縫訪問。

圖片

而為了滿足客戶對于批處理以及機器學習能力的訴求,ADB 集成了 Spark 引擎,并在此技術(shù)上推出了 Servlersss Spark,其具備如下優(yōu)勢:

1.一份數(shù)據(jù)存儲,在離線共享:無縫對接 ADB 已有元數(shù)據(jù)和數(shù)據(jù);支持大吞吐讀寫 ADB 數(shù)據(jù);Spark 批量寫入的數(shù)據(jù),在線分析查詢可直接訪問。

2.數(shù)據(jù)庫體系&體驗:使用 ADB 統(tǒng)一的賬號、權(quán)限和鑒權(quán)體系;支持通過 ADB Workflow、DMS 以及 DataWorks 調(diào)度編排 SparkSQL 作業(yè)。

3.完全兼容 Spark 生態(tài):基于最新的 Apache Spark 3.X 版本,充分享受開源社區(qū)紅利;支持 SparkSQL、DataFrame API 主流編程接口以及 Thrift Server;支持 Spark UDF,支持 Hive UDF/UDTF/UDAF。

4.按量計費,秒級彈性:開箱即用,按量計費無任何持有成本;基于神龍、ECS/ECI 的管控底座以及資源池化,緩存加速等技術(shù),支持 Spark Pod 秒級拉起。

圖片

對于實時性有訴求的場景,可以基于 ADB APS 服務(wù)可以非常方便的構(gòu)建準實時 Lakehouse,白屏化操作快速配置入湖通道,多種數(shù)據(jù)源支持,滿足不同數(shù)據(jù)源接入訴求,更多數(shù)據(jù)源也在持續(xù)集成中。

圖片

而對于實時性沒有訴求的場景,可以基于 Spark + Hudi + ADB 工作編排構(gòu)建離線 Lakehouse,如想對 RDS 數(shù)據(jù)構(gòu)建離線Lakehouse進行分析,可使用ADB工作編排,利用 Spark 將 RDS 數(shù)據(jù)離線導(dǎo)入 Lakehouse,并做數(shù)據(jù)的清洗和加工,有需要最后可通過一條簡單的 Spark SQL將數(shù)據(jù)從 Hudi 導(dǎo)入 ADB 做查詢分析加速。

另外 ADB Spark 與 Hudi 和 ADB 表都做了深度集成,便于客戶使用,如對于 Hudi 表的使用,免去了很多 Hudi 額外的配置,開箱即用;對于 ADB 表,可通過 Spark 創(chuàng)建、刪除 ADB 表元數(shù)據(jù),也支持讀寫 ADB 表數(shù)據(jù)。

圖片

另外最后介紹下 Spark 與 ADB 集成提供的 Zero-ETL 解決方案,這也與 2022 AWS reinvent 推出的數(shù)據(jù)集成服務(wù) Zero-ETL 類似,我們通過一個場景了解 Zero-ETL 的應(yīng)用及其優(yōu)勢。

客戶如果對于 ADB 表有分析挖掘的需求,受限于 JDBC 方式吞吐的限制,需要先將 ADB內(nèi)表數(shù)據(jù)以 parquet 格式導(dǎo)出到  OSS,利用 OSS 的帶寬,再通過 Spark 進行分析挖掘,最后輸出挖掘結(jié)果,可以看到這種方案中存在ETL操作,從而引入數(shù)據(jù)一致性差、時效性低的問題。

在 ADB 湖倉版中 Spark 與 ADB 做了深度集成,通過 Lakehouse  API直接訪問 ADB 內(nèi)表數(shù)據(jù),吞吐高,所以面對同樣的場景,可以使用下面的鏈路,即直接通過 Spark 分析 ADB 數(shù)據(jù),無需 ETL,數(shù)據(jù)一致性好,時效性也很高;另外對于 Lakehouse API 層的訪問也支持列投影、謂詞下推、分區(qū)裁剪等能力,更多下推能力也在持續(xù)建設(shè)中。

圖片

前面介紹了很多關(guān)于 ADB 湖倉版的功能以及優(yōu)勢,包括 Serverless Spark、APS 服務(wù)、融合引擎、工作流編排等等。而對于 ADB 湖倉版的定位總結(jié)成一句話就是從湖到倉,打造云原生一站式數(shù)據(jù)分析平臺。

讓客戶通過 ADB 湖倉版平臺就可以輕松玩轉(zhuǎn)數(shù)據(jù)分析。

責任編輯:姜華 來源: DataFunTalk
相關(guān)推薦

2021-09-13 14:19:03

HudiLakehouse阿里云

2023-07-11 10:23:00

Lakehouse數(shù)據(jù)湖

2023-05-19 09:42:54

Chatbot

2023-09-05 07:22:17

Hudi數(shù)據(jù)存儲

2021-09-13 13:46:29

Apache HudiB 站數(shù)據(jù)湖

2012-11-19 10:35:18

阿里云云計算

2021-04-12 10:07:06

云計算邊緣云阿里云

2021-08-02 09:40:57

Dapr阿里云Service Mes

2022-05-10 10:03:52

Halodoc數(shù)據(jù)平臺Lakehouse

2024-03-06 07:34:01

大數(shù)據(jù)車聯(lián)網(wǎng)智能汽車

2023-08-07 08:40:24

2021-02-24 09:15:48

kubernetes混合云云端

2013-01-10 12:29:59

阿里云年度盤點云計算實踐元年

2023-08-21 08:19:22

ADB數(shù)據(jù)湖分析

2020-04-29 14:43:32

VMware

2017-09-13 12:18:29

2020-07-24 10:36:17

云計算云平臺數(shù)據(jù)

2020-05-18 12:04:17

PrometheusMySQL監(jiān)控

2021-08-31 10:07:16

Flink Hud數(shù)據(jù)湖阿里云

2022-05-13 14:28:03

云原生權(quán)限云原生
點贊
收藏

51CTO技術(shù)棧公眾號