譯者 | 李睿
審校 | 重樓
像軟件行業的許多其他領域一樣,數據工程領域正在快速發展。在大型語言模型(LLM)和生成式人工智能的推動下,盡管人工智能/機器學習的進步令人關注,但數據工程仍然是推動軟件開發創新的根本力量。

Polaris是一種用于數據湖屋(Lakehouse)的目錄實現工具,是該領域的最新進展之一,它加速了互操作性的進展,并實現了零數據復制架構。在最近于2024年11月舉辦的Snowflake Build大會上,Polaris Catalog、Iceberg以及AI/ML共同成為備受關注與熱議的話題。
開放表格式和數據湖屋
數據湖屋的概念憑借其開放表格式,已經成為大數據技術領域內的熱門議題之一。開放表格式在塑造行業中的數據湖屋模式方面始終走在前列。盡管還有其他具有競爭力的開放表格式技術,但Iceberg無疑在這一領域內占據領先地位。支持傳統數據倉庫模式的數據云巨頭Snowflake公司也在積極引領數據湖屋模式的發展,而Iceberg正是其解決方案的核心支柱,發揮著舉足輕重的作用。
Iceberg采用了三層架構模型,其核心在于其根目錄,這一目錄扮演著Iceberg中表元數據管理者的關鍵角色。Snowflake公司通過推出了名為Polaris的目錄服務,在目錄領域帶來了革命性的變革。該目錄正迅速獲得認可,并有望在未來幾個月內得到進一步增長。
在深入討論Polaris之前,需要了解有關數據湖屋、Iceberg和Snowflake的更多細節,為探討Polaris奠定基礎。幾十年來,軟件行業一直沿襲著使用數據倉庫作為核心分析平臺的傳統。然而,隨著基于Hadoop的大數據技術的興起,支持半結構化和非結構化數據的數據湖(data lake)于2010年應運而生。盡管數據湖在過去十年中迅速增長,但與此同時,它也暴露出了一系列亟待解決的問題,例如事務支持的缺失、模式強制執行的不足等。
為了克服數據湖的局限性,大數據領域中出現了一種新的模式——數據湖屋。數據湖屋通過提供事務支持、模式實施(如數據倉庫)以及異構數據格式(如數據湖)的支持,結合了數據倉庫和數據湖的優點。開放文件格式是數據湖屋架構成功的基礎,特別是開放表格式。盡管在這一領域內,Delta Lake和Hudi等其他主要參與者同樣發揮著重要作用,但Iceberg憑借行業領導者Snowflake公司的支持而脫穎而出。
開放表格式是為了支持數據的零復制以及從多個查詢引擎在單一權威的數據源中查詢/修改數據而創建的。盡管Snowflake公司起初像傳統和現代數據倉庫一樣使用原生表,并在這一過程中增加了對非結構化數據的支持,但Snowflake公司一直是推廣和采用與Iceberg相結合的開放表格式來實現數據湖倉解決方案的領導者。
開放表格式的基本架構概念是關于存儲表元數據的。開放表格式不存儲實際數據,而是存儲“關于數據的數據”。不同的開放表格式有其各自的元數據架構。然而,它們之間的共同模式是都存在一個目錄組件。在開放表格式中,目錄包含指向實際表的元數據指針,這些表以開放文件格式(如Parquet、ORC)存儲數據。
目錄的挑戰:Polaris背后的驅動力
對于目錄實現,業界一直在使用諸如Hive Metastore、AWS Glue、Nessie、Unity Catalog等技術??捎媚夸浖夹g的激增阻礙了互操作性和開放表格式的零數據復制原則充分發揮其潛力,因為不同的目錄技術開始導致組織內部出現供應商鎖定和數據一致性問題。圖1展示了由于缺乏統一的目錄解決方案而導致組織一直在實現的典型架構。
圖1:Iceberg生態系統的多目錄技術解決方案
不同的查詢引擎或數據平臺使用不同技術開發的目錄來訪問Iceberg的元數據(如圖1所示)和存儲層,因此無法在組織內部提供存儲的統一視圖。此外,由于沒有共享的目錄標準,不僅目錄數據會被重復且存在不一致性,而且其他方面(如安全和訪問控制配置)也需要被重復,從而造成不必要的開銷。
為了應對實現真正互操作性和零數據復制的挑戰,Snowflake公司推出了Polaris Catalog這一創新性的目錄服務。該目錄設計的初衷是使不同的查詢引擎能夠輕松訪問,并且展望未來,它還將支持所有主流的開放表格式,而不僅僅是Iceberg。
關于Polaris:優勢與現狀
作為開放表格式的目錄,Polaris主要提供以下三個好處:
- 讀和寫操作的跨引擎互操作性。
- 支持在任何地方托管目錄——在云中或組織的數據中心作為容器化應用程序。
- 集中的安全和基于角色的訪問控制。
Snowflake公司將Polaris Catalog外包給Apache軟件基金會,以鼓勵社區驅動的技術進步,并使其與供應商保持中立,以實現Polaris的多個長期目標,如下所示:
- 使其與所有開放表格式(如Delta Lake、Hudi)兼容
- 支持API表格維護
- 更廣泛的安全和訪問控制,例如支持Okta/Auth0等IDP、細粒度訪問控制等。
當前,Polaris軟件正處于Apache軟件基金會的孵化階段。盡管Snowflake公司已將Polaris的開發工作交由Apache軟件基金會負責,但Snowflake依然在其自身的部署中持續為Polaris Catalog提供支持。Snowflake所托管的Polaris Catalog被稱為Snowflake Open Catalog。
Polaris架構
Polaris Catalog在Iceberg生態系統中的架構如圖2所示。查詢引擎將使用Polaris REST API訪問Polaris Catalog中的表元數據。Polaris API的核心業務邏輯將作為接口,通過Iceberg元數據提供對存儲在開放文件格式(如Parquet、ORC)中的實際數據的訪問。
圖2:Iceberg生態系統中的Polaris架構
Polaris架構圍繞兩個核心組件構建:用于數據安全的基于角色的訪問控制(RBAC)和用于管理表元數據的Data Catalog。在RBAC中,主體(Principal)代表用戶或系統身份,而主體角色則定義分配給該主體的權限。一個主體可以擁有多個主體角色,并且每個主體角色可以包含多個主體。在目錄方面,目錄作為邏輯數據庫或模式,組織成命名空間(Namespaces),這些命名空間對Iceberg表或視圖進行分組。權限通過目錄角色進行管理,這些角色定義了目錄對象的直接權限,而主體角色則通過其與目錄角色的關聯來繼承這些權限。
該架構確保在邏輯組織的框架內對Iceberg表和視圖進行安全、可擴展和有效的管理。
從基礎設施部署的角度來看,盡管Polaris可以作為容器化的應用程序在云平臺和組織的數據中心中運行,但是需要為查詢引擎進行適當的網絡連接,以便能夠訪問Polaris基于REST API的目錄。目前,將Polaris Catalog部署在公共云平臺之外的情況并不常見,因為通常希望實際的開放文件格式存儲將位于云平臺中。
隨著技術的進步,為了滿足各個行業(如金融、醫療保?。┙M織的數據隱私和地理限制要求,在組織的防火墻內部署Polaris可能是一個有價值的用例。
Polaris的實際操作
Snowflake公司在2024年6月發布了Polaris,并于7月將其開源給Apache軟件基金會。該項目目前在Apache處于孵化狀態。Polaris Catalog的開源版本可以在GitHub存儲庫中獲得。開發人員只需幾個簡單的步驟就可以在本地工作站中開始使用Polaris。
1.安裝OpenJDK和Docker
JDK的最低版本要求是21,Docker的最低版本要求是27。除此之外,還需要安裝Gradle這一工具編譯項目源代碼。
2.克隆存儲庫
要在本地工作站中設置Polaris,第一步是克隆存儲庫。
3.在Docker容器中運行Polaris
Plain Text
docker compose -f docker-compose.yml up --build4.作為本地Java應用程序運行
Plain Text
gradle runAppGitHub中的Polaris項目分為兩個主要模塊。
- polaris-core:包含實體定義和業務邏輯。這是通過Iceberg元數據與開放文件格式存儲進行交互的層。
- API:包含Polaris的REST API定義。查詢引擎與API通信以訪問底層數據。
結論
在數據湖屋和開放表格式不斷發展的背景下,Polaris是下一個重大突破。這項技術有助于消除對查詢引擎特定數據目錄的需求,并帶來可互操作的協調解決方案。
Polaris最初是為Iceberg構建的,它不僅旨在成為查詢引擎的通用平臺,而且未來的開發目標是使其能夠跨其他開放表格式工作,例如Delta Lake。擁有可互操作的目錄技術可以降低組織架構的復雜性,有助于實現零數據復制原則,減少IT的支持開銷,并最終為組織節省成本。Polaris正在不斷發展,預計在未來幾個月內,在Apache軟件基金會和Snowflake公司的推動下,其采用率將會上升。
原文標題:Revolutionizing Catalog Management for Data Lakehouse With Polaris Catalog,作者:Dipankar Saha


























