Lakehouse 的運作方式

Lakehouse for Apache Iceberg 的技術架構支援引擎之間的互通性,方法是集中管理中繼資料,並透過特定路徑處理查詢。

架構

建構 Google Cloud 的Lakehouse包含下列技術元件:

  • 儲存空間:Cloud Storage 和 BigQuery 儲存空間是儲存層,建議使用 Apache Iceberg 做為開放式資料表格式,在 Cloud Storage 中提供高效能且可互通的儲存空間。

  • 目錄:Lakehouse 執行階段目錄提供單一事實來源,可管理中繼資料。這個目錄會使用各種相容性選項 (例如 Apache Iceberg REST 目錄端點),集中管理多個引擎的中繼資料探索作業。將資料表登錄至目錄時,系統會自動將項目登錄至業務中繼資料 Knowledge Catalog。

  • 查詢引擎:BigQuery 和開放原始碼引擎 (包括 Apache Spark、Apache Flink 和 Trino) 可連結至 Lakehouse 執行階段目錄,順暢互通。Managed Service for Apache Spark 等運算引擎會運用開放原始碼 Apache Spark,並進行執行最佳化,確保工作負載可移植性,避免受限於特定廠商。

  • 治理:Knowledge Catalog 可為整個湖倉架構提供集中式安全性、歷程和治理政策。

  • 資料寫入和分析工具:整合式引擎和工具提供多種資料擷取和分析路徑,確保資料科學家和分析師都能以一致的方式存取資料。

資源階層

Google Cloud 的 Lakehouse 會使用與 Apache Iceberg 標準和標準資料庫概念一致的階層,整理資料。這個結構可讓 Lakehouse 執行階段目錄將邏輯身分對應至實體儲存路徑。如要與這個資源階層互動,並將查詢引擎連線至目錄,請使用特定端點,如下所述。

  1. Lakehouse 執行階段目錄: Google Cloud 中的頂層區域服務資源,用於代管中繼資料。如要將查詢引擎連線至這項服務及管理基礎目錄,請使用特定目錄端點 (例如 Apache Iceberg REST 目錄端點) 設定用戶端應用程式。
  2. 目錄:執行階段目錄服務中的邏輯容器。在專案/目錄/命名空間/表格 (P.C.N.T) 命名結構中,這代表您要查詢的特定目錄執行個體。
  3. 命名空間:目錄中資料表的邏輯分組。如果使用者熟悉 BigQuery,命名空間在功能上與資料集類似。
  4. 資料表:指向 Cloud Storage 中資料的特定實體。資料表中繼資料包含結構定義、分割資訊,以及透過 Apache Iceberg metadata.json 檔案指向目前資料表狀態的指標。

支援的端點

Lakehouse 執行階段目錄提供多個端點,可連結 Cloud Storage 和 BigQuery 中的資料。

  • Apache Iceberg REST 目錄端點:提供標準 REST 介面,可與 Apache Spark、Apache Flink 和 Trino 等開放原始碼引擎廣泛相容。這是新工作負載的建議介面,可提供完整的讀取和寫入互通性。

  • BigQuery 端點的自訂 Apache Iceberg 目錄:可讓引擎直接與 BigQuery 目錄互通。這個介面主要用於 BigQuery 管理的 Apache Iceberg 資料表,以及轉換至 Lakehouse 架構的現有工作負載。

  • Apache Hive 目錄端點:為依附於 Apache Hive Metastore (HMS) 介面的開放原始碼工作負載提供相容性。您可以在 Google Cloud上,針對全代管 Metastore 服務執行 Apache Hive 或 Spark 工作負載。

Lakehouse 執行階段目錄

在資源階層中,Lakehouse 執行階段目錄是 Google Cloud的頂層區域中繼資料服務,可做為代管個別目錄執行個體的根容器,集中管理不同查詢引擎的中繼資料探索作業。

如要深入瞭解中繼存放區服務,包括主要功能、支援的引擎、端點設定和限制,請參閱「關於 Lakehouse 執行階段目錄」。

目錄

目錄是邏輯中繼資料存放區容器,由單一 Cloud Storage 倉庫 bucket 支援。在 Project.Catalog.Namespace.Table (P.C.N.T) 命名結構中,目錄代表可將開放式表格中繼資料與查詢引擎連結的專屬中繼存放區執行個體。

目錄的主要特徵包括:

  • 儲存空間關聯:一個目錄只能與一個 Cloud Storage bucket 建立關聯。
  • 區域複製:目錄的區域會自動與基礎 Cloud Storage bucket 的區域相符。
  • 存取權委派:管理員可以在目錄中啟用憑證販售功能,藉此委派存取權,讓系統自動產生存留時間較短的憑證,並縮減憑證範圍,而非直接授予使用者儲存空間權限。

命名空間

命名空間是目錄中資料表的邏輯分組,功能類似於資料庫、結構定義或 BigQuery 資料集。命名空間提供結構,可整理及管理資料表的存取權控管。

命名空間的主要特徵包括:

  • 區域性:建立命名空間時,系統會自動使用與上層目錄相同的區域。
  • 巢狀限制:不支援巢狀命名空間 (子命名空間)。
  • 安全界線:您可以在命名空間層級授予 IAM 角色,管理其中所有資料表的存取權。

資料表

使用 Google Cloud 的 Lakehouse 建構時,您可以選擇下列資料表類型:

Lakehouse 執行階段目錄支援

建議

  • Apache Iceberg 資料表:從開放原始碼引擎建立並儲存在 Cloud Storage 中的 Apache Iceberg 資料表。這些項目提供開放式相容性,並透過 Lakehouse 執行階段目錄 REST 端點進行管理。

BigQuery 支援

  • Apache Iceberg 資料表:由 BigQuery 建立及管理的 Apache Iceberg 資料表。這些資料表的中繼資料會儲存在 BigQuery 目錄中,而資料表資料和實體中繼資料則會儲存在 Cloud Storage 中。
  • 原生資料表:由 BigQuery 全代管的資料表,可連結至 Lakehouse 執行階段目錄,與開放原始碼引擎互通。
  • 外部資料表:位於 Lakehouse 執行階段目錄外部的資料表,資料和中繼資料由您自行管理。這類資料表支援透過連線委派存取權,存取儲存在 Cloud Storage、Amazon S3 或 Azure Blob 儲存空間的資料。

如要詳細比較這些選項,請參閱表格總覽

支援的表格格式

僅支援 Apache Iceberg V2 資料表,不支援 Iceberg V1 資料表。如果您有現有的 Iceberg V1 資料表,必須先將其升級至 V2 (例如執行 ALTER TABLE catalog.schema.table SET TBLPROPERTIES ('format-version'='2'); 或使用類似的引擎作業),才能搭配 Lakehouse for Apache Iceberg 使用。

查詢處理順序

向 Google Cloud 的 Lakehouse 資料表提交查詢時,要求會遵循特定路徑,在處理資料前強制執行政策並擷取中繼資料。

  1. 提交:您將 SQL 查詢提交至相容的引擎,例如 Apache Spark、Trino 或 BigQuery。
  2. 中繼資料要求:引擎會向 Lakehouse 執行階段目錄要求資料表中繼資料,以識別資料表及其位置。
  3. 授權:如果您使用的端點支援授權,目錄會根據 Identity and Access Management (IAM) 和精細的安全政策驗證要求。
  4. 中繼資料回應:目錄會傳回中繼資料。如果啟用憑證販售功能,系統也會提供短期權杖,協助安全存取儲存空間。
  5. 資料擷取:引擎會使用中繼資料和選用權杖,直接從 Cloud Storage 讀取資料檔案。
  6. 執行:引擎會處理資料並傳回結果。

最佳做法

在 Google Cloud 上設計及運作資料湖倉時,請考慮下列最佳做法:

  • 採用獎章架構:將資料倉儲劃分為循序邏輯層級 (銅級層用於原始擷取、銀級層用於清理和一致性資料,金級層則用於精選的業務層級匯總)。針對金級層使用 BigQuery,盡量提升查詢效能和並行性。
  • 使用工作階段範本處理互動式工作負載:進行探索性分析和撰寫 Notebook 時,請使用工作階段範本,在開發團隊中統一環境設定,減少重複設定。
  • 指派自訂批次 ID:提交非互動式無伺服器 Apache Spark 批次工作負載時,請指派自訂批次和工作名稱。這有助於提升觀測能力,方便您在 Cloud Logging 和 Google Cloud 控制台中篩選及追蹤工作執行作業。
  • 啟用診斷記錄:針對複雜的資料工程 pipeline,啟用診斷套件並確保保留驅動程式和執行器記錄,簡化疑難排解和支援程序。

後續步驟