一、概述
Hudi( and ),簡稱Hudi,是一個流式數據湖平臺hadoop大數據處理 pdf,支持對海量數據快速更新,內置表格式,支持事務的存儲層、 一系列表服務、數據服務(開箱即用的攝取工具)以及完善的運維監控工具,它可以以極低的延遲將數據快速存儲到HDFS或云存儲(S3)的工具,最主要的特點支持記錄級別的插入更新()和刪除,同時還支持增量查詢。
地址:
官方文檔:
上圖從下到上,由左向右看
二、Hudi 架構通過、Flink、Spark等工具,將數據攝取到數據湖存儲,可使用HDFS作為數據湖的數據存儲;基于HDFS可以構建Hudi的數據湖;Hudi提供統一的訪問Spark數據源和Flink數據源;外部通過不同引擎,如:Spark、Flink、、Hive、、 DLA、AWS 訪問接口;
三、Hudi的表格式
Hudi提供兩類型表:寫時復制(Copy on Write,COW)表和讀時合并(Merge On Read,MOR)表。
1)Copy on Write(寫時復制)
簡稱COW,顧名思義,它是在數據寫入的時候,復制一份原來的拷貝,在其基礎上添加新數據。正在讀數據的請求,讀取的是最近的完整副本,這類似Mysql 的MVCC的思想。
2)Merge On Read(讀時合并)
簡稱MOR,新插入的數據存儲在delta log 中,定期再將delta log合并進行數據文件。讀取數據時,會將delta log跟老的數據文件做merge,得到完整的數據返回。下圖演示了MOR的兩種數據讀寫方式。
3)COW vs MOR
權衡
寫時復制(COW )
讀時合并(MOR )
數據延遲
更高
更低
更新代價( I/O)
更高(重寫整個文件)
更低(追加到增量日志)
&件大小
更小(高更新代價( I/O)
更大(低更新代價)
寫放大
更高
更低(取決于壓縮策略)
適用場景
寫少讀多
寫多讀少
四、元數據表( Table)五、索引()
Hudi通過索引機制將給定的鍵(記錄鍵+分區路徑)一致地映射到文件id,從而提供高效的升級。一旦將記錄的第一個版本寫入文件,記錄鍵和文件組/文件id之間的映射就不會改變。簡而言之,映射的文件組包含一組記錄的所有版本。
目前,Hudi支持以下索引類型:
六、查詢類型(Query Type)
Hudi支持三種不同的查詢表的方式: (快照查詢)、 (增量查詢)和Read (讀優化查詢)。
1) (快照查詢)2) (增量查詢)3)Read (讀優化查詢)七、計算模型
在hudi過去的使用場景里,和大部分公司的架構類似,采用批式和流式共存的架構,后來Uber提出增量模型,相對批式來講,更加實時hadoop大數據處理 pdf,相對流式而言,更加經濟。
1)批式模型(Batch)
批式模型就是使用、Hive、Spark等典型的批計算引擎,以小時任務或者天任務的形式來做數據計算。特性如下:
2)流式模型()
流式模型,典型的就是使用Flink來進行實時的數據計算,特性:
3)增量模型()
針對批式和流式的優缺點,Uber提出了增量模型( Mode),相對批式來講,更加實時;相對流式而言,更加經濟。 增量模型,簡單來講,就是一mini batch的形式來跑準實時任務。hudi在增量模型中支持了兩個最重要的特性:
八、數據倉庫 VS 數據湖1)數據類型2)數據倉庫與數據湖的區別
特性
數據倉庫
數據湖
數據
來自事務系統、運營數據庫和業務線應用程序的關系型數據
來自loT設備、網站、移動應用程序、社交媒體和企業應用程序的非關系型和關系型數據
設計在超倉庫實施之前(寫入型)
寫入在分析時(讀取型)
性價比
更快的查詢結果會帶來更高的存儲成本
更快查詢結果只需較低存儲成本
數據質量
可作為重要事實依據的高度監管數據
任何可以或無法進行監管的數據(例如原始數據
用戶
業務分析師
數據科學家、數據開發人員和業務分析師(使用監管數據)
分析
批處理報告、BI和可視化
機器學習、詢分析、數據發現和分析
3)湖倉一體化
九、源碼編譯
wget https://dlcdn.apache.org/hudi/0.12.0/hudi-0.12.0.src.tgz
tar -xf hudi-0.12.0.src.tgz ; cd cd hudi-0.12.0
# mvn clean package -DskipTests
mvn clean package -DskipTests -DskipITs -Dspark3.2 -Dscala-2.12
編譯好的Hudi 包下載地址:
提取碼:ihhb
新一代流式數據湖平臺 Hudi介紹與源碼編譯就先到這里了,有疑問的小伙伴歡迎給我留言,后續會持續更新【云原生+大數據】相關的文章,請小伙伴耐心等待~