什麼是 Apache Iceberg?

Apache Iceberg 是開放原始碼資料表格式,專為儲存在 data lake 中的大規模數據分析資料集而設計。這克服了傳統 data lake 資料表格格式的許多限制,為 data lakehouse 架構提供更高的可靠性、效能和彈性。您可以將這個服務視為智慧層,置於 Cloud Storage 等 data lake 儲存空間之上,為龐大的資料集提供類似資料庫的功能。Iceberg 會將資料表視為一系列資料檔案來管理,而非單純管理檔案,因此能提供結構定義演進、時間回溯,以及更有效率的查詢規劃等功能。這樣一來,資料分析師、數據資料學家和工程師就能更輕鬆、更有效率地處理 data lake 中的資料,並提升數據分析工作負載。

Apache Iceberg 的用途有哪些?

Apache Iceberg 在現代資料架構中可發揮多種用途,尤其是在運用 data lake 方面。主要用途包括:

  • 提供可靠的 data lake:Iceberg 確保作業符合 ACID 原則 (完整性、一致性、獨立性、耐用性)。這麼做可避免資料毀損和不一致的問題,而這些問題可能會在傳統的檔案式方法中發生。
  • 支援結構定義演進:與舊版資料表格式經常難以因應結構定義變更的情況不同,Iceberg 可讓結構定義順暢且安全地演進。您可以新增、刪除或重新命名資料欄,而不會中斷正在進行的查詢,也不需要花費高額費用遷移資料。
  • 提供時間回溯功能:Iceberg 會保留資料表快照記錄,方便使用者查詢特定時間點的資料。這對於稽核、偵錯和重現分析結果非常有幫助。
  • 最佳化查詢效能:Iceberg 的中繼資料管理功能可讓查詢引擎有效率地修剪不必要的資料檔案,大幅加快查詢執行速度,尤其是大型資料集。
  • 協助落實資料治理:資料表版本管理和中繼資料管理等功能,可提供資料變更的清楚稽核追蹤記錄,有助於落實資料治理和法規遵循。
  • 建構 data lakehouse:Iceberg 是建構 data lakehouse 的基礎元件,可結合 data lake 的規模與彈性,以及 data warehouse 的資料管理功能。可在相同資料上執行分析和更多作業工作負載。
  • 提升機器學習資料的可靠性:Iceberg 提供一致且版本受管理的資料集,是訓練及部署可靠機器學習模型的關鍵。數據資料學家可以使用歷來資料快照,輕鬆重現實驗。

Apache Iceberg 如何運作?

Apache Iceberg 的核心功能是引入中繼資料層,位於 data lake 中的實際資料檔案之上。與傳統的檔案式系統相比,這類中繼資料能以更有條理且穩健的方式,追蹤資料表的結構和內容。以下是主要機制的詳細說明:

  1. 中繼資料管理:Iceberg 會維護中繼資料檔案,這些檔案會說明資料表的結構定義、分區和資料檔案位置。這些中繼資料檔案通常會與資料一併儲存在 data lake 中。
  2. 目錄:Iceberg 會使用目錄,來追蹤每個資料表目前中繼資料的位置。這個目錄可以是 Hive Metastore 等服務、以檔案系統為基礎的實作,或是雲端原生目錄服務。
  3. 資料表快照:每次資料表發生變更 (例如新增資料、刪除資料或結構定義演進),Iceberg 就會建立資料表中繼資料的新快照。這些快照不可變更,且會提供資料表狀態的歷來記錄。
  4. 資訊清單清單和資訊清單檔案:每個快照都會指向一個資訊清單清單,而清單則會列出一或多個清單檔案。清單檔案包含個別資料檔案的相關中繼資料,包括位置、分區值和統計資料 (例如資料列計數和值範圍)。
  5. 資料檔案:這些是實際的 Parquet、ORC 或 Avro 檔案,用於在 data lake 中儲存資料。Iceberg 的中繼資料會追蹤這些檔案,以及檔案在資料表中的組織方式。

Apache Iceberg 架構

Apache Iceberg 的架構包含數個一起運作的關鍵元件:

  • Data lake 儲存空間:這是基礎儲存層,例如 Cloud Storage,用來儲存實際的資料檔案 (以 Parquet、ORC 或 Avro 等格式) 和 Iceberg 的中繼資料檔案。
  • Iceberg 目錄:這個元件負責管理 Iceberg 資料表的中繼資料指標。這會做為中央註冊表,追蹤每個資料表的中繼資料目前版本。常見的目錄導入方式包括:
  • Hive Metastore廣泛使用的中繼資料存放區,經常與以 Hadoop 為基礎的系統搭配使用。
  • 檔案系統目錄:簡單的實作方式,目錄資訊會直接儲存在 data lake 檔案系統中。
  • 雲端原生目錄服務:雲端服務供應商提供的代管服務,可用來儲存及管理中繼資料。
  • Iceberg 中繼資料:由多層中繼資料檔案組成,用於追蹤資料表的結構和資料。
  • 資料表中繼資料檔案:這個檔案會指向目前的資訊清單清單,並包含資料表的概要資訊,例如結構定義和分割規格。
  • 資訊清單清單:這個檔案會列出資料表的特定快照中,含有資料檔案中繼資料的資訊清單檔案。
  • 資訊清單檔案:這些檔案包含個別資料檔案的詳細資訊,包括位置、分區值和統計資料。
  • 查詢引擎和處理框架:這些工具可與 Iceberg 資料表互動,讀取及寫入資料。這些引擎會運用 Iceberg 的中繼資料,來最佳化查詢規劃和執行作業。
  • 運算資源:運算資源是執行查詢引擎和處理框架的底層基礎架構 (例如虛擬機器和容器)。

Apache Iceberg 和 data lake

Apache Iceberg 新增可靠且高效的資料表格式,大幅提升 data lake 的功能。在沒有 Iceberg 等資料表格式的傳統 data lake 中,資料通常只是一系列檔案。這可能會帶來幾項挑戰:

  • 缺乏結構定義演進功能:變更資料結構可能會變得複雜且容易出錯
  • 讀取作業不一致:並行的寫入作業可能會導致查詢讀取舊有和新資料的混合內容
  • 查詢效能緩慢:沒有中繼資料的情況下,查詢引擎通常必須掃描大量資料
  • 資料管理不易:沒有可用的時間回溯和版本管理等功能

Iceberg 在 data lake 之上提供結構化層,解決這些限制。這個解決方案為 data lake 提供類似資料庫的功能,將 data lake 轉換成更強大且更容易管理的 data lakehouse。Iceberg 會將資料表視為一系列含有豐富中繼資料的檔案來管理,並提供下列功能:

  • 可靠且一致的資料存取機制:ACID 屬性可確保資料完整性
  • 高效查詢處理:提供中繼資料導向的資料略過和篩選功能,可加速查詢
  • 彈性的資料管理:提供結構定義演進和時間回溯功能,可簡化資料維護與分析作業
  • 互通性:Iceberg 經過設計,可與 data lake 常用的各種查詢引擎和處理架構相容

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。
與 Google Cloud 銷售專員聯絡,深入探討您面臨的特殊難題。

Apache Iceberg 的挑戰

Apache Iceberg 雖然有許多優點,但也有一些需要考慮的問題:

複雜度增加

導入 Iceberg 會為 data lake 增加另一層抽象層,進而增加整體系統的複雜度。如要瞭解及管理中繼資料層,必須具備特定知識。

目錄依附關係

Iceberg 會使用目錄服務 (例如 Hive Metastore) 來管理資料表中繼資料位置。目錄的可用性和效能會影響整個系統。

學習門檻

團隊需要學習與 Iceberg 相關的概念和最佳做法,可能需要接受訓練和提升技能。

潛在的營運負擔

雖然 Iceberg 在許多情況下都能提升查詢效能,但中繼資料管理本身會帶來一些額外負擔,尤其是在資料集非常小或查詢非常簡單的情況下。

工具成熟度

雖然 Iceberg 生態系統發展迅速,但與既有的 data warehousing 技術相比,部分工具和整合功能仍不夠成熟。

遷移工作

遷移現有 data lake 以使用 Iceberg 很重要,可能需要重寫資料並變更現有資料 pipeline。

Google Cloud 與 Apache Iceberg

Google Cloud 提供穩固的環境,可讓您運用 Apache Iceberg。多項 Google Cloud 服務與 Iceberg 完美整合,可讓使用者建構功能強大且可擴充的 data lakehouse 解決方案。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。