您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何使用Apache Pulsar + Hudi 構建 Lakehouse”,在日常操作中,相信很多人在如何使用Apache Pulsar + Hudi 構建 Lakehouse問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用Apache Pulsar + Hudi 構建 Lakehouse”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
關于 Apache Pulsar
Apache Pulsar 是 Apache 軟件基金會頂級項目,是下一代云原生分布式消息流平臺,集消息、存儲、輕量化函數式計算為一體,采用計算與存儲分離架構設計,支持多租戶、持久化存儲、多機房跨區域數據復制,具有強一致性、高吞吐、低延時及高可擴展性等流數據存儲特性。
GitHub 地址:http://github.com/apache/pulsar/
文章轉自:ApacheHudi,作者:郭斯杰,StreamNative CEO,Apache Pulsar PMC 成員。
本期文章排版:Tango@StreamNative
Lakehouse 最早由 Databricks 公司提出,其可作為低成本、直接訪問云存儲并提供傳統 DBMS 管系統性能和 ACID 事務、版本、審計、索引、緩存、查詢優化的數據管理系統,Lakehouse 結合數據湖和數據倉庫的優點:包括數據湖的低成本存儲和開放數據格式訪問,數據倉庫強大的管理和優化能力。Delta Lake,Apache Hudi 和 Apache Iceberg 是三種構建 Lakehouse 的技術。
與此同時,Pulsar 提供了一系列特性:包括分層存儲、流式卸載、列式卸載等,讓其成為一個可以統一批和事件流的存儲層。特別是分層存儲的特性,讓 Pulsar 成為一個輕量級數據湖,但是 Pulsar 還是缺乏一些性能優化,比如索引,數據版本(在傳統 DBMS 管理系統中非常常見),引入列式卸載程序的目的是為了縮小性能差距,但是還不夠。
本提議嘗試將 Apache Pulsar 作為 Lakehouse,該提案僅提供頂層設計,詳細設計和實現在后面的子提議中解決(有興趣的小伙伴可以持續關注)。
本部分將分析構建 Lakehouse 需要的關鍵特性,然后分析 Pulsar 是否滿足要求以及識別還有哪些差距。
Lakehouse 有如下關鍵特性:
?事務支持:企業級 Lakehouse 中很多數據 pipeliine 會并發讀寫數據,支持 ACID 事務可以保證并發讀寫的一致性,特別是使用 SQL;Delta Lake、Iceberg、Hudi 三個數據湖框架都基于低成本的對象存儲實現了事務層,都支持事務。Pulsar 在 2.7.0 版本后引入了事務支持,并且支持跨 topic 的事務;?Schema 約束和治理:Lakehouse 需要支持 Schema 的約束和演進,支持數倉型 Schema 范式,如星型/雪花型 Schema,另外系統應該能夠推理數據完整性,并且應該具有健壯的治理和審核機制,上述三個系統都有該能力。Pulsar 有內置的 Schema 注冊服務,它滿足 Schema 約束和治理的基本要求,但是可能仍有一些地方需要改進。?BI 支持:Lakehouses 可以直接在源數據上使用 BI 工具,這樣可以減少陳舊性、提高新鮮度、減少等待時間,并降低必須同時在數據湖和倉庫中操作兩個數據副本的成本。三個數據湖框架與 Apache Spark 的集成非常好,同時可以允許 Redshift,Presto/Athena 查詢源數據,Hudi 社區也已經完成了對多引擎如 Flink 的支持。Pulsar 暴露了分層存儲中的段以供直接訪問,這樣可以與流行的數據處理引擎緊密集成。但是 Pulsar 中的分層存儲本身在服務 BI 工作負載方面仍然存在性能差距,我們將在該提案中解決這些差距。?存儲與計算分離:這意味著存儲和計算使用單獨的集群,因此這些系統可以單獨水平無限擴容。三個框均支持存儲與計算分離。Pulsar 使用了存儲與計算分離的多層體系結構部署。?開放性:使用開放和標準化的數據格式,如 Parquet,并且它們提供了 API,因此各種工具和引擎(包括機器學習和 Python / R 庫)可以"直接"有效地訪問數據,三個框架支持 Parquet 格式,Iceberg 還支持 ORC 格式,對于 ORC 格式 Hudi 社區正在支持中。Pulsar 還不支持任何開放格式,列存卸載支持 Parquet 格式。?支持從非結構化數據到結構化數據的多種數據類型:Lakehouse 可用于存儲、優化,分析和訪問許多新數據應用程序所需的數據類型,包括圖像、視頻、音頻、半結構化數據和文本。尚不清楚 Delta、Iceberg、Hudi 如何支持這一點。Pulsar 支持各種類型數據。?支持各種工作負載:包括數據科學,機器學習以及 SQL 和分析。可能需要多種工具來支持所有這些工作負載,但它們都依賴于同一數據存儲庫。三個框架與 Spark 緊密結合,Spark 提供了廣泛的工具選擇。Pulsar 也與 Spark 有著緊密結合。?端到端流:實時報告是許多企業的常態,對流的支持消除了對專門用于服務實時數據應用程序的單獨系統的需求,Delta Lake 和 Hudi 通過變更日志提供了流功能。但這不是真正的“流”。Pulsar 是一個真正的流系統。
可以看到 Pulsar 滿足構建 Lakehouse 的所有條件。然而現在的分層存儲有很大的性能差距,例如:
?Pulsar 并不以開放和標準的格式存儲數據,如 Parquet;?Pulsar 不會為卸載的數據部署任何索引機制;?Plusar 不支持高效的 Upserts。
這里旨在解決 Pulsar 存儲層的性能問題,使 Pulsar 能作為 Lakehouse。
圖 1 展示了當前 Pulsar 流的存儲布局。
?Pulsar 在 ZooKeeper 中存儲了段(segment)元數據;?最新的段存儲在 Apache BookKeeper 中(更快地存儲層);?舊的段從 Apache BookKeeper 卸載到分層存儲(便宜的存儲層)。卸載的段的元數據仍保留在 Zookeeper 中,引用的是分層存儲中卸載的對象。
當前的方案有一些缺點:
1.它不使用任何開放式存儲格式來存儲卸載的數據。這意味著很難與更廣泛的生態系統整合。2.它將所有元數據信息保留在 ZooKeeper 中,這可能會限制可伸縮性。
新方案建議在分層存儲中使用 Lakehouse 存儲卸載的數據。該提案建議使用 Apache Hudi 作為 Lakehouse 存儲,原因如下:
?云提供商在 Apache Hudi 上提供了很好的支持;?Apache Hudi 已經作為頂級項目畢業;?Apache Hudi 同時支持 Spark 和 Flink 多引擎。同時在中國有一個相當活躍的社區。
圖 2 展示了 Pulsar topic 新的布局。
?最新片段(未卸載片段)的元數據存儲在 ZooKeeper 中;?最新片段(未卸載片段)的數據存儲在 BookKeeper 中;?卸載段的元數據和數據直接存儲在分層存儲中。因為它是僅追加流。我們不必使用像 Apache Hudi 這樣的 Lakehouse 存儲庫。但是如果我們也將元數據存儲在分層存儲中,則使用 Lakehouse 存儲庫來確保 ACID 更有意義。
Pulsar 不直接支持 upsert。它通過主題(topic)壓縮支持 upsert。但是當前的主題壓縮方法既不可擴展,也不高效。
1.主題壓縮在代理內(broker)完成。它無法支持大量數據的插入,特別是在數據集很大的情況下。2.主題壓縮不支持將數據存儲在分層存儲中。
為了支持高效且可擴展的 Upsert,該提案建議使用 Apache Hudi 將壓縮后的數據存儲在分層存儲中。圖 3 展示了使用 Apache Hudi 支持主題壓縮中的有效 upserts 的方法。
該想法是實現主題壓縮服務。主題壓縮服務可以作為單獨的服務(即 Pulsar 函數)運行以壓縮主題。
1.代理向壓縮服務發出主題壓縮請求。2.壓縮服務接收壓縮請求,并讀取消息并將其向上插入到 Hudi 表中。3.完成 upsert 之后,將主題壓縮游標前進到它壓縮的最后一條消息。
主題壓縮游標將引用位置的元數據存儲在存儲 Hudi 表的分層存儲中。
Hudi 會在不同的即時
時間維護對表執行的所有操作的時間軸
,這有助于提供表的即時視圖,同時還有效地支持按_arrival_順序進行數據檢索。Hudi 支持從表中增量拉取變更。我們可以支持通過 Hudi 表備份的_ReadOnly_主題。這允許應用程序從 Pulsar 代理流式傳輸 Hudi 表的變更。圖 4 展示了這個想法。
當我們開始將所有數據存儲在分層存儲中時,該提案建議不存儲卸載或壓縮數據的元數據,而只依賴分層存儲來存儲卸載或壓縮數據的元數據。
該提案提議在以下目錄布局中組織卸載和壓縮的數據。
- <tenant>/ - <namespace>/ - <topics>/ - segments/ <= Use Hudi to store the list of segments to guarantee ACID - segment_<segment-id> - ... - cursors/ - <cursor A>/ <= Use Hudi to store the compacted table for cursor A. - <cursor B>/ <= ...
到此,關于“如何使用Apache Pulsar + Hudi 構建 Lakehouse”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。