
AWS 在其分析、機器學習和存儲技術棧中全面採用 Apache Iceberg 開放表格式 (OTF),這是對其廣受歡迎的 S3 對象存儲用戶需求的積極回應。
儘管業界對 Iceberg 的認可度在不斷提升,但關於其競爭對手 Delta Lake (由 Databricks 創建並在 Linux 基金會管理下開源) 的未來仍存在疑問。目前,Delta Lake 是 Microsoft 和 SAP 等軟體巨頭的首選格式。
但對於全球最大的雲平台提供商而言,在 S3 服務用戶另有要求之前,他們已經確定選擇 Iceberg。
這一立場的重要性源於以下事實:S3 在全球企業數據存儲軟體市場占有約 23% 的份額,而 AWS 的年收入預計將達到 1050 億美元,使其成為規模最大的雲基礎設施提供商。
Iceberg 的重要性還體現在 Databricks 願意支付 10 億美元 (可能高達 20 億美元) 收購 Tabular (Iceberg 原創者創立的公司),儘管這項技術本身是開源的。
AWS 副總裁兼傑出工程師 Andy Warfield 向 The Register 表示:"我們直接使用 Iceberg。我們在 Iceberg 開源項目中有核心貢獻者,AWS 積極參與 Iceberg 本身的開發,包括設計 API 和與其他開發者合作。我們之所以選擇這個方向,是因為我們看到最大的 S3 分析客戶都在使用它。"
"如果客戶有其他需求,我們當然會考慮增加對其他技術的支持。但目前,Iceberg 在設計上非常具有吸引力,同時也是構建這類結構化存儲支持的流行且備受支持的方向。"
去年年底,AWS 推出了 S3 Tables,這是一種新型存儲桶,Warfield 將其描述為"託管的 Iceberg 表。它提供了一個 Iceberg 目錄,用戶可以在其中創建命名空間和表,每個表都是一級資源。用戶可以直接在表上進行訪問控制策略和安全策略設置。"
AWS 此前表示,由於存儲桶預先分區,訪問性能將提升 10 倍。AWS 還會自動運行所有維護和優化任務。
Iceberg 起源於 2015 年,當時 Netflix 完成了從本地數據倉庫和分析堆棧向基於 AWS S3 對象存儲的遷移。他們最初嘗試通過 Hive Tables 進行查詢,但遇到了性能問題和"一些非常令人意外的行為"。
這些挑戰促使團隊開發了 Iceberg 開放表格式,該格式專為大規模分析工作負載而設計,支持包括 Spark、Trino、Flink、Presto、Hive 和 Impala 在內的查詢引擎。它承諾幫助組織將其選擇的分析引擎用於數據處理,而無需承擔將數據遷移到新存儲的費用和不便。Iceberg 於 2018 年 11 月作為開源項目捐贈給 Apache 軟體基金會。自 2022 年初以來,它獲得了包括 Google、Snowflake 和 Cloudera 在內的數據倉庫和數據湖巨頭的公開支持。
2023 年,AWS 首次公開宣布支持 Iceberg,預覽版允許用戶使用其雲原生數據倉庫 Redshift 在外部數據湖中運行 Iceberg 表的分析查詢,但僅限於新建表,不支持從 Parquet 轉換為 Iceberg 的表。
Warfield 表示,大約三年前,隨著 S3 用戶和 AWS 努力解決在 S3 中創建類資料庫數據表示的問題,對 Iceberg 的興趣開始增長。他們通過劃分列和在所謂的行組中創建表示來解決這個問題,避免了查詢整個文件的需求。雖然這種方法帶來了好處,但也有成本。
"Parquet 在這方面變得更好了,"Warfield 說。"我們獲得了更適合資料庫的數據表示,但由於 S3 是不可變的,一旦你用 Parquet 寫入表,就無法執行人們習慣於在資料庫中進行的修改操作。你無法更新它。因此,在 OTF 引入之前的三年裡,我們看到的最好情況是數據完全靜態,人們通過添加額外的 Parquet 文件來進行追加。"
Iceberg 和其他 OTF 為 Parquet 結構添加了元數據層。Iceberg 創建一個根節點,通過存儲通常為 JSON 文件的新元數據來指向表的當前視圖。新的根節點可以像資料庫原子更新一樣,移動客戶看到的數據表視圖。
"你可以進行這些相對較小的更新,但這使得表完全可變,"Warfield 說。"兩年前,與客戶的對話轉向了從僅使用 Parquet (有時在其上使用 Hive 作為元存儲) 到實際嘗試使用 Iceberg。"
AWS 對 Iceberg 的實踐體現在 S3 Tables 上,同時也體現在機器學習平台 Sagemaker 上,該平台已經重新定位以適應數據倉庫、分析和數據湖的某些方面。
"從 S3 存儲團隊的角度來看,他們對 S3 Tables 非常興奮,因為任何將高度結構化數據放在這裡的人突然獲得了從任何分析或機器學習工具以及自己的應用程序中使用它的能力。從 Sagemaker 的角度來看,支持 Iceberg API 意味著他們現在不僅可以使用 S3 和 S3 Tables,還可以使用存儲在任何地方的 Iceberg 數據,"Warfield 說。
由於 Snowflake、Google 和其他眾多供應商也加入了 Iceberg,這一舉措有望簡化與其他技術已啟動項目的集成。這對 AWS 的 Redshift 也有影響,客戶已經在上面構建項目超過十年了。
AWS 數據倉庫有自己的存儲方法 - Redshift Managed Storage (RMS),Warfield 表示這是雲供應商試圖解決 OTF 也在解決的一些問題。通過 Sagemaker Lakehouse Catalog,只要支持 Iceberg API,這些數據就可以向 AWS 產品組合之外的更廣泛的分析工具開放。
"通過在 Sagemaker Lakehouse Catalog 中引入 Iceberg REST Catalog 支持,分析團隊已經開放了 RMS 可以被任何分析平台訪問的能力,這極大地提高了數據的靈活性和可訪問性。相反,Redshift 通過 Iceberg REST Catalog 可以處理任何 Iceberg 存儲,"他說。
通過在其存儲、分析和機器學習產品組合中採用 Iceberg,AWS 正在為推動 Iceberg 實現其早期承諾做出貢獻。
"所有這些都是由大量進行分析的客戶的響亮聲音推動的。他們的數據分布在各個地方,他們的團隊偏好使用不同的工具。有很多新的採用和用戶的巨大投資,以確保任何工具都能與任何數據配合使用,任何數據都可供每個工具使用,"Warfield 說。
關於 Microsoft 在其 Fabric 平台中的方法仍有疑問。這個無處不在的供應商承諾在某種程度上與 Iceberg 集成,儘管 Delta 仍將是其原生表格式。
Databricks 已經談到試圖合併 Delta 和 Iceberg,它承認這可能需要幾年時間,而且在任何情況下都將取決於 Apache 對 Iceberg 的治理,而 Databricks 並不控制這一點。
據說在 Apple 使用 Iceberg 的範圍很廣,一位前 Apple 軟體工程經理表示,採用 Iceberg 作為事實上的標準,而不是合併兩個標準,將是更好的選擇。Iceberg 提交者和 PMC 成員 Russel Spitzer (最近加入 Snowflake 擔任首席工程師) 在 10 月份告訴 The Register,他希望供應商都在底層使用 Iceberg,以消除表格式作為設計點。
Warfield 表示,AWS 與 Databricks 進行了對話,因為後者在 S3 之上構建系統,並正在努力確保用戶在任何這些分析平台上的所有數據都可供所有人使用,並能在所有系統上運行。
但由於這家雲巨頭重申了對 Iceberg 的承諾,現在球在 Databricks 的場地上。