真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用ApachePulsar+Hudi構(gòu)建Lakehouse

這篇文章主要介紹“如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse”,在日常操作中,相信很多人在如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供阿爾山網(wǎng)站建設(shè)、阿爾山做網(wǎng)站、阿爾山網(wǎng)站設(shè)計(jì)、阿爾山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、阿爾山企業(yè)網(wǎng)站模板建站服務(wù),十余年阿爾山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

 

關(guān)于 Apache Pulsar

Apache Pulsar 是 Apache 軟件基金會(huì)頂級(jí)項(xiàng)目,是下一代云原生分布式消息流平臺(tái),集消息、存儲(chǔ)、輕量化函數(shù)式計(jì)算為一體,采用計(jì)算與存儲(chǔ)分離架構(gòu)設(shè)計(jì),支持多租戶、持久化存儲(chǔ)、多機(jī)房跨區(qū)域數(shù)據(jù)復(fù)制,具有強(qiáng)一致性、高吞吐、低延時(shí)及高可擴(kuò)展性等流數(shù)據(jù)存儲(chǔ)特性。
GitHub 地址:http://github.com/apache/pulsar/

文章轉(zhuǎn)自:ApacheHudi,作者:郭斯杰,StreamNative CEO,Apache Pulsar PMC 成員。

本期文章排版:Tango@StreamNative

動(dòng)機(jī)

Lakehouse 最早由 Databricks 公司提出,其可作為低成本、直接訪問(wèn)云存儲(chǔ)并提供傳統(tǒng) DBMS 管系統(tǒng)性能和 ACID 事務(wù)、版本、審計(jì)、索引、緩存、查詢優(yōu)化的數(shù)據(jù)管理系統(tǒng),Lakehouse 結(jié)合數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)的優(yōu)點(diǎn):包括數(shù)據(jù)湖的低成本存儲(chǔ)和開(kāi)放數(shù)據(jù)格式訪問(wèn),數(shù)據(jù)倉(cāng)庫(kù)強(qiáng)大的管理和優(yōu)化能力。Delta Lake,Apache Hudi 和 Apache Iceberg 是三種構(gòu)建 Lakehouse 的技術(shù)。

與此同時(shí),Pulsar 提供了一系列特性:包括分層存儲(chǔ)、流式卸載、列式卸載等,讓其成為一個(gè)可以統(tǒng)一批和事件流的存儲(chǔ)層。特別是分層存儲(chǔ)的特性,讓 Pulsar 成為一個(gè)輕量級(jí)數(shù)據(jù)湖,但是 Pulsar 還是缺乏一些性能優(yōu)化,比如索引,數(shù)據(jù)版本(在傳統(tǒng) DBMS 管理系統(tǒng)中非常常見(jiàn)),引入列式卸載程序的目的是為了縮小性能差距,但是還不夠。

本提議嘗試將 Apache Pulsar 作為 Lakehouse,該提案僅提供頂層設(shè)計(jì),詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)在后面的子提議中解決(有興趣的小伙伴可以持續(xù)關(guān)注)。

分析

本部分將分析構(gòu)建 Lakehouse 需要的關(guān)鍵特性,然后分析 Pulsar 是否滿足要求以及識(shí)別還有哪些差距。

Lakehouse 有如下關(guān)鍵特性:

?事務(wù)支持:企業(yè)級(jí) Lakehouse 中很多數(shù)據(jù) pipeliine 會(huì)并發(fā)讀寫(xiě)數(shù)據(jù),支持 ACID 事務(wù)可以保證并發(fā)讀寫(xiě)的一致性,特別是使用 SQL;Delta Lake、Iceberg、Hudi 三個(gè)數(shù)據(jù)湖框架都基于低成本的對(duì)象存儲(chǔ)實(shí)現(xiàn)了事務(wù)層,都支持事務(wù)。Pulsar 在 2.7.0 版本后引入了事務(wù)支持,并且支持跨 topic 的事務(wù);?Schema 約束和治理:Lakehouse 需要支持 Schema 的約束和演進(jìn),支持?jǐn)?shù)倉(cāng)型 Schema 范式,如星型/雪花型 Schema,另外系統(tǒng)應(yīng)該能夠推理數(shù)據(jù)完整性,并且應(yīng)該具有健壯的治理和審核機(jī)制,上述三個(gè)系統(tǒng)都有該能力。Pulsar 有內(nèi)置的 Schema 注冊(cè)服務(wù),它滿足 Schema 約束和治理的基本要求,但是可能仍有一些地方需要改進(jìn)。?BI 支持:Lakehouses 可以直接在源數(shù)據(jù)上使用 BI 工具,這樣可以減少陳舊性、提高新鮮度、減少等待時(shí)間,并降低必須同時(shí)在數(shù)據(jù)湖和倉(cāng)庫(kù)中操作兩個(gè)數(shù)據(jù)副本的成本。三個(gè)數(shù)據(jù)湖框架與 Apache Spark 的集成非常好,同時(shí)可以允許 Redshift,Presto/Athena 查詢?cè)磾?shù)據(jù),Hudi 社區(qū)也已經(jīng)完成了對(duì)多引擎如 Flink 的支持。Pulsar 暴露了分層存儲(chǔ)中的段以供直接訪問(wèn),這樣可以與流行的數(shù)據(jù)處理引擎緊密集成。但是 Pulsar 中的分層存儲(chǔ)本身在服務(wù) BI 工作負(fù)載方面仍然存在性能差距,我們將在該提案中解決這些差距。?存儲(chǔ)與計(jì)算分離:這意味著存儲(chǔ)和計(jì)算使用單獨(dú)的集群,因此這些系統(tǒng)可以單獨(dú)水平無(wú)限擴(kuò)容。三個(gè)框均支持存儲(chǔ)與計(jì)算分離。Pulsar 使用了存儲(chǔ)與計(jì)算分離的多層體系結(jié)構(gòu)部署。?開(kāi)放性:使用開(kāi)放和標(biāo)準(zhǔn)化的數(shù)據(jù)格式,如 Parquet,并且它們提供了 API,因此各種工具和引擎(包括機(jī)器學(xué)習(xí)和 Python / R 庫(kù))可以"直接"有效地訪問(wèn)數(shù)據(jù),三個(gè)框架支持 Parquet 格式,Iceberg 還支持 ORC 格式,對(duì)于 ORC 格式 Hudi 社區(qū)正在支持中。Pulsar 還不支持任何開(kāi)放格式,列存卸載支持 Parquet 格式。?支持從非結(jié)構(gòu)化數(shù)據(jù)到結(jié)構(gòu)化數(shù)據(jù)的多種數(shù)據(jù)類型:Lakehouse 可用于存儲(chǔ)、優(yōu)化,分析和訪問(wèn)許多新數(shù)據(jù)應(yīng)用程序所需的數(shù)據(jù)類型,包括圖像、視頻、音頻、半結(jié)構(gòu)化數(shù)據(jù)和文本。尚不清楚 Delta、Iceberg、Hudi 如何支持這一點(diǎn)。Pulsar 支持各種類型數(shù)據(jù)。?支持各種工作負(fù)載:包括數(shù)據(jù)科學(xué),機(jī)器學(xué)習(xí)以及 SQL 和分析??赡苄枰喾N工具來(lái)支持所有這些工作負(fù)載,但它們都依賴于同一數(shù)據(jù)存儲(chǔ)庫(kù)。三個(gè)框架與 Spark 緊密結(jié)合,Spark 提供了廣泛的工具選擇。Pulsar 也與 Spark 有著緊密結(jié)合。?端到端流:實(shí)時(shí)報(bào)告是許多企業(yè)的常態(tài),對(duì)流的支持消除了對(duì)專門(mén)用于服務(wù)實(shí)時(shí)數(shù)據(jù)應(yīng)用程序的單獨(dú)系統(tǒng)的需求,Delta Lake 和 Hudi 通過(guò)變更日志提供了流功能。但這不是真正的“流”。Pulsar 是一個(gè)真正的流系統(tǒng)。

可以看到 Pulsar 滿足構(gòu)建 Lakehouse 的所有條件。然而現(xiàn)在的分層存儲(chǔ)有很大的性能差距,例如:

?Pulsar 并不以開(kāi)放和標(biāo)準(zhǔn)的格式存儲(chǔ)數(shù)據(jù),如 Parquet;?Pulsar 不會(huì)為卸載的數(shù)據(jù)部署任何索引機(jī)制;?Plusar 不支持高效的 Upserts。

這里旨在解決 Pulsar 存儲(chǔ)層的性能問(wèn)題,使 Pulsar 能作為 Lakehouse。

當(dāng)前方案

圖 1 展示了當(dāng)前 Pulsar 流的存儲(chǔ)布局。

?Pulsar 在 ZooKeeper 中存儲(chǔ)了段(segment)元數(shù)據(jù);?最新的段存儲(chǔ)在 Apache BookKeeper 中(更快地存儲(chǔ)層);?舊的段從 Apache BookKeeper 卸載到分層存儲(chǔ)(便宜的存儲(chǔ)層)。卸載的段的元數(shù)據(jù)仍保留在 Zookeeper 中,引用的是分層存儲(chǔ)中卸載的對(duì)象。

如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse  圖1

當(dāng)前的方案有一些缺點(diǎn):

1.它不使用任何開(kāi)放式存儲(chǔ)格式來(lái)存儲(chǔ)卸載的數(shù)據(jù)。這意味著很難與更廣泛的生態(tài)系統(tǒng)整合。2.它將所有元數(shù)據(jù)信息保留在 ZooKeeper 中,這可能會(huì)限制可伸縮性。

新的 Lakehouse 存儲(chǔ)方案

新方案建議在分層存儲(chǔ)中使用 Lakehouse 存儲(chǔ)卸載的數(shù)據(jù)。該提案建議使用 Apache Hudi 作為 Lakehouse 存儲(chǔ),原因如下:

?云提供商在 Apache Hudi 上提供了很好的支持;?Apache Hudi 已經(jīng)作為頂級(jí)項(xiàng)目畢業(yè);?Apache Hudi 同時(shí)支持 Spark 和 Flink 多引擎。同時(shí)在中國(guó)有一個(gè)相當(dāng)活躍的社區(qū)。

新的存儲(chǔ)布局

圖 2 展示了 Pulsar topic 新的布局。

?最新片段(未卸載片段)的元數(shù)據(jù)存儲(chǔ)在 ZooKeeper 中;?最新片段(未卸載片段)的數(shù)據(jù)存儲(chǔ)在 BookKeeper 中;?卸載段的元數(shù)據(jù)和數(shù)據(jù)直接存儲(chǔ)在分層存儲(chǔ)中。因?yàn)樗莾H追加流。我們不必使用像 Apache Hudi 這樣的 Lakehouse 存儲(chǔ)庫(kù)。但是如果我們也將元數(shù)據(jù)存儲(chǔ)在分層存儲(chǔ)中,則使用 Lakehouse 存儲(chǔ)庫(kù)來(lái)確保 ACID 更有意義。

如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse圖2

支持高效 Upserts

Pulsar 不直接支持 upsert。它通過(guò)主題(topic)壓縮支持 upsert。但是當(dāng)前的主題壓縮方法既不可擴(kuò)展,也不高效。

1.主題壓縮在代理內(nèi)(broker)完成。它無(wú)法支持大量數(shù)據(jù)的插入,特別是在數(shù)據(jù)集很大的情況下。2.主題壓縮不支持將數(shù)據(jù)存儲(chǔ)在分層存儲(chǔ)中。

為了支持高效且可擴(kuò)展的 Upsert,該提案建議使用 Apache Hudi 將壓縮后的數(shù)據(jù)存儲(chǔ)在分層存儲(chǔ)中。圖 3 展示了使用 Apache Hudi 支持主題壓縮中的有效 upserts 的方法。

如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse圖3

該想法是實(shí)現(xiàn)主題壓縮服務(wù)。主題壓縮服務(wù)可以作為單獨(dú)的服務(wù)(即 Pulsar 函數(shù))運(yùn)行以壓縮主題。

1.代理向壓縮服務(wù)發(fā)出主題壓縮請(qǐng)求。2.壓縮服務(wù)接收壓縮請(qǐng)求,并讀取消息并將其向上插入到 Hudi 表中。3.完成 upsert 之后,將主題壓縮游標(biāo)前進(jìn)到它壓縮的最后一條消息。

主題壓縮游標(biāo)將引用位置的元數(shù)據(jù)存儲(chǔ)在存儲(chǔ) Hudi 表的分層存儲(chǔ)中。

將 Hudi 表當(dāng)做 Pulsar Topic

Hudi 會(huì)在不同的即時(shí)時(shí)間維護(hù)對(duì)表執(zhí)行的所有操作的時(shí)間軸,這有助于提供表的即時(shí)視圖,同時(shí)還有效地支持按_arrival_順序進(jìn)行數(shù)據(jù)檢索。Hudi 支持從表中增量拉取變更。我們可以支持通過(guò) Hudi 表備份的_ReadOnly_主題。這允許應(yīng)用程序從 Pulsar 代理流式傳輸 Hudi 表的變更。圖 4 展示了這個(gè)想法。

如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse圖4

可擴(kuò)展的元數(shù)據(jù)管理

當(dāng)我們開(kāi)始將所有數(shù)據(jù)存儲(chǔ)在分層存儲(chǔ)中時(shí),該提案建議不存儲(chǔ)卸載或壓縮數(shù)據(jù)的元數(shù)據(jù),而只依賴分層存儲(chǔ)來(lái)存儲(chǔ)卸載或壓縮數(shù)據(jù)的元數(shù)據(jù)。

該提案提議在以下目錄布局中組織卸載和壓縮的數(shù)據(jù)。

/  - /    - /      - segments/ <= Use Hudi to store the list of segments to guarantee ACID        - segment_        - ...      - cursors/        - / <= Use Hudi to store the compacted table for cursor A.        - / <= ...

到此,關(guān)于“如何使用Apache Pulsar + Hudi 構(gòu)建 Lakehouse”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


網(wǎng)站欄目:如何使用ApachePulsar+Hudi構(gòu)建Lakehouse
當(dāng)前網(wǎng)址:http://weahome.cn/article/gscpej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部