数据湖技术 Iceberg 的探索与实践
隨著大數據存儲和處理需求的多樣化,如何構建一個統一的數據湖存儲,并在其上進行多種形式的數據分析成了企業構建大數據生態的一個重要方向。Netflix 發起的 Apache Iceberg 項目具備 ACID 能力的表格式中間件成為了大數據、數據湖領域炙手可熱的方向。本次演講將會具體介紹 Iceberg 的設計初衷、優點和能力,通過本次分享您將會對表格式這一領域有充分的了解,并深入了解 Iceberg 的設計、實現、優勢以及使用方式。
本文分享主要包括四部分:
數據湖技術?
Iceberg 原理介紹
Iceberg 應用落地
后續的規劃
數據湖技術
當前大數據發展的三大趨勢:
數據倉庫往數據湖方向發展
批處理往流式處理發展
本地部署往云模式發展
本文要講的是如何構建數據湖?并且在湖上如何分析?
一般而言,數據湖技術需要具備的能力主要包括以下幾項:
同時支持流批處理
支持數據更新
支持事務(ACID)
可擴展的元數據
數據質量保障
支持多種存儲引擎
支持多種計算引擎
今天市面上存在三種數據湖技術:Apache Iceberg、Apache Hudi 以及 Delta Lake。他們都是:
構建于存儲格式之上的數據組織方式
提供 ACID 能力,提供一定的事務特性和并發能力
提供行級別的數據修改能力
確保 Schema 的準確性,提供一定的 Schema 擴展能力。
上面表格在十三個維度對這些數據湖分析對比,過往記憶大數據之前的 《一篇文章掌握 delta、iceberg 和 hudi 三大開源數據湖方案》、《Delta Lake、Iceberg 和 Hudi 三大開源數據湖不知道如何選?那是因為你沒看這篇文章》以及《Delta Lake 和 Apache Hudi 兩種數據湖產品全方面對比》文章也有這方面的比較,感興趣的同學可以去看看。
上面的比較中可以看出,不同數據湖產品各有千秋,不同公司根據不同需求選擇了不同的數據湖產品,比如阿里云的 DLA 團隊選擇 Apache Hudi 作為其底層數據湖存儲引擎;騰訊選擇了?Apache?Iceberg 作為他們的數據湖存儲引擎。
Apache Iceberg 原理介紹
Apache Iceberg?是一種用于跟蹤超大規模表的新格式,是專門為對象存儲(如S3)而設計的。其核心思想:在時間軸上跟蹤表的所有變化。
快照(snapshot)表示表數據文件的一個完整集合
每次更新操作會生成一個新的快照。
前面說了騰訊選擇了?Apache Iceberg 作為其數據湖底層存儲,主要原因如下四點:
優化數據入庫流程:Iceberg 提供 ACID 事務能力,上游數據寫入即可見,不影響當前數據處理任務,這大大簡化了 ETL;Iceberg 提供了 upsert、merge into 能力,可以極大地縮小數據入庫延遲;
支持更多的分析引擎:優秀的內核抽象使之不綁定特定的計算引擎,目前?Iceberg 支持的計算引擎有 Spark、Flink、Presto 以及 Hive。
統一數據存儲和靈活的文件組織:提供了基于流式的增量計算模型和基于批處理的全量表計算模型。批處理和流任務可以使用相同的存儲模型,數據不再孤立;Iceberg 支持隱藏分區和分區進化,方便業務進行數據分區策略更新。支持 Parquet、Avro 以及 ORC 等存儲格式。
增量讀取處理能力:Iceberg 支持通過流式方式讀取增量數據,支持 Structed Streaming 以及 Flink table Source。
Iceberg 的快照設計方式,主要包括快照隔離以及對于文件列表的所有修改都是原子操作。
元數據組織包括:
實現基于快照的跟蹤方式;
表的元數據是不可修改的,并且始終向前迭代;
當前的快照可以回退。
Iceberg 應用落地
沒有使用數據湖技術,我們需要很多組件來保證 exactly-once 語義。并且利用 HDFS 的 rename 操作的原子性和復雜的命名規則來保證一致性、可見性。利用調度引擎來構建依賴關系,從而避免讀寫沖突。
上面架構存在的問題:架構比較復雜,需要不同組件之間的協調;架構的復雜會進一步導致數據的延遲。exactly-once 語義保證比較復雜,增加了運維的難度。
有了?Iceberg 之后,整體架構簡單了,而且通過簡單的架構即可實現原子語義。Iceberg 格式的數據直接可以使用 Hive、Spark 來讀取;同時,Iceberg 支持讀寫分區,寫入并且 commit 的數據下游系統立即可以使用,降低系統的整體延遲。
同時,Iceberg 技術還催生了新的架構,也就是 CDC 架構。其相比傳統的架構而言整體系統架構更加簡潔,端到端的延遲大大降低,而且支持 ACID 事務能力。
后續規劃
猜你喜歡
1、滴滴ElasticSearch千萬級TPS寫入性能翻倍技術剖析
2、
3、PB級大規模Elasticsearch集群運維與調優實踐
4、Presto on Spark:擴展 Presto 以支持大規模 ETL
————————————————
版權聲明:本文為CSDN博主「過往記憶」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wypblog/article/details/108480622
總結
以上是生活随笔為你收集整理的数据湖技术 Iceberg 的探索与实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是mmap?
- 下一篇: Kafka Connect简介