HUDI基礎(chǔ)

什么是Hudi鸦难?

image.png

HUDI(Hadoop Upserts Deletes and Incrementals)是一個(gè)開(kāi)源的數(shù)據(jù)湖工具明刷,用于管理大規(guī)模數(shù)據(jù)湖中的數(shù)據(jù)满粗。

HUDI旨在解決數(shù)據(jù)湖中常見(jiàn)的一些挑戰(zhàn),如數(shù)據(jù)的增量更新挤聘、刪除和查詢(xún)等捅彻。它提供了一套API和工具,可以幫助用戶(hù)在數(shù)據(jù)湖中進(jìn)行寫(xiě)入从隆、更新缭裆、刪除和查詢(xún)等操作澈驼,并提供了高效的數(shù)據(jù)索引和存儲(chǔ)機(jī)制,以加速數(shù)據(jù)的訪(fǎng)問(wèn)和處理缝其。

HUDI的核心理念是將數(shù)據(jù)分為小的内边、可修改的單元,稱(chēng)為"寫(xiě)時(shí)復(fù)制(copy-on-write)"缭贡。當(dāng)數(shù)據(jù)需要更新或刪除時(shí),HUDI會(huì)創(chuàng)建一個(gè)新的數(shù)據(jù)文件谍失,而不是直接修改原始數(shù)據(jù)文件莹汤。這種設(shè)計(jì)可以保證數(shù)據(jù)的不可變性,同時(shí)提供了高效的增量更新和刪除操作抹竹。

HUDI還提供了用于數(shù)據(jù)管理的元數(shù)據(jù)存儲(chǔ)和查詢(xún)功能止潮,可以跟蹤數(shù)據(jù)的版本、變更歷史和元數(shù)據(jù)信息袄琳。這使得用戶(hù)可以輕松地追蹤和管理數(shù)據(jù)的變更燃乍,同時(shí)支持time-travel查詢(xún),即可以查詢(xún)數(shù)據(jù)在不同時(shí)間點(diǎn)的版本逗旁。

Hudi Timeline

Hudi timeline是HUDI用于跟蹤和管理數(shù)據(jù)變更歷史的一種機(jī)制片效。它記錄了數(shù)據(jù)湖中各個(gè)數(shù)據(jù)集的不同版本和變更操作英古,以及它們?cè)跁r(shí)間上的順序。

Timeline的核心概念是HUDI數(shù)據(jù)集的不可變性。每當(dāng)對(duì)HUDI數(shù)據(jù)集進(jìn)行寫(xiě)入箕戳、更新或刪除操作時(shí)陵吸,HUDI會(huì)創(chuàng)建一個(gè)新的數(shù)據(jù)文件或目錄,而不是直接修改原始數(shù)據(jù)文件澳厢。每個(gè)數(shù)據(jù)文件或目錄都被分配一個(gè)唯一的時(shí)間戳,用于表示它的創(chuàng)建時(shí)間线得。

Timeline維護(hù)了所有數(shù)據(jù)文件和目錄的時(shí)間戳信息徐伐,并按照時(shí)間順序組織它們。這使得HUDI能夠追蹤數(shù)據(jù)集的完整變更歷史角雷,并支持time-travel query性穿。通過(guò)Timeline,用戶(hù)可以查詢(xún)數(shù)據(jù)集在不同時(shí)間點(diǎn)的版本吗坚,回溯到過(guò)去的數(shù)據(jù)狀態(tài)胯舷。

HUDI Timeline還提供了一些其他功能桑嘶,如支持增量數(shù)據(jù)拉取(incremental data pull)和增量數(shù)據(jù)合并(incremental data merge)讨便。增量數(shù)據(jù)拉取允許用戶(hù)只拉取數(shù)據(jù)集中發(fā)生變化的部分以政,而不必處理整個(gè)數(shù)據(jù)集。增量數(shù)據(jù)合并則可以將多個(gè)HUDI數(shù)據(jù)集合并為一個(gè)數(shù)據(jù)集废菱,并保持?jǐn)?shù)據(jù)的一致性和有序性抖誉。

Hudi的Timeline由一系列按時(shí)間順序的Instants組成袒炉,Instant有下面三部分:

  • Instant action: 對(duì)于Hudi table的操作類(lèi)型;
  • Instant time:操作發(fā)生時(shí)間戳(比如20190117010349)孽文;
  • Instant state: Instant的當(dāng)前狀態(tài)。

Instant Action主要有以下幾種:

  • COMMITS:commit表示將一批記錄原子的寫(xiě)入到hudi table中沉衣;
  • CLEANS:刪除表中不再需要的舊版本文件楷掉,后臺(tái)活動(dòng)。
  • DELTA_COMMIT:delta_commit指的是將一批記錄原子寫(xiě)入 MergeOnRead 類(lèi)型的表中斑鸦,其中一些/所有數(shù)據(jù)可以只寫(xiě)入delta logs草雕。
  • COMPACTION: 將delta logs里的數(shù)據(jù)與parquet data files合并墩虹。
  • ROLLBACK:表示commit/delta commit不成功并回滾,刪除在此類(lèi)寫(xiě)入期間產(chǎn)生的任何partial data files旬昭。
  • SAVEPOINT:將某些file group標(biāo)記為“saved”菌湃,這樣cleaner就不會(huì)刪除它們惧所。 在發(fā)生災(zāi)難/數(shù)據(jù)恢復(fù)情況時(shí),它有助于將表恢復(fù)到timeline上的某個(gè)點(diǎn)纽绍。

Instant State主要有以下幾種:

  • REQUESTED:表示已經(jīng)被scheduled势似,但尚未啟動(dòng)的操作。
  • INFLIGHT:表示操作正在進(jìn)行辖佣。
  • COMPLETED:表示操作已經(jīng)完成搓逾。

Hudi Table/Query Type

在Hudi中杯拐,有幾種常見(jiàn)的表類(lèi)型,用于滿(mǎn)足不同的數(shù)據(jù)管理和處理需求污淋。下面是Hudi中常見(jiàn)的表類(lèi)型:

  • Copy-on-Write (COW)表:COW表是Hudi最基本的表類(lèi)型余掖。它采用了寫(xiě)時(shí)復(fù)制的策略冗美,每次更新操作都會(huì)創(chuàng)建一個(gè)新版本的完整數(shù)據(jù)集粉洼。新版本以一組新的文件形式存儲(chǔ),而原始數(shù)據(jù)保持不變安拟。COW表適合那些數(shù)據(jù)寫(xiě)入一次后多次讀取的場(chǎng)景宵喂。
  • Merge-on-Read (MOR)表:MOR表是Hudi引入的一種改進(jìn)型表類(lèi)型。它采用了基于讀取時(shí)合并的策略愉棱。數(shù)據(jù)被組織成基礎(chǔ)文件(base files)和日志文件(log files)奔滑∷成伲基礎(chǔ)文件包含不可變的數(shù)據(jù),而日志文件則記錄了基礎(chǔ)文件的增量更改梅猿。在查詢(xún)執(zhí)行期間秒裕,Hudi會(huì)動(dòng)態(tài)地合并基礎(chǔ)文件和日志文件几蜻,以提供一致的數(shù)據(jù)視圖体斩。MOR表適合那些需要頻繁更新和低延遲查詢(xún)的場(chǎng)景絮吵。


    image.png

在Hudi中忱屑,有幾種常見(jiàn)的查詢(xún)類(lèi)型可以用來(lái)檢索和分析數(shù)據(jù)莺戒。下面是Hudi中常用的查詢(xún)類(lèi)型:

  • Snapshot Query:Snapshot查詢(xún)是一種基于數(shù)據(jù)快照(Snapshot)的查詢(xún)方式。它可以獲取Hudi表中的某個(gè)commit或compaction的數(shù)據(jù)快照闹究,并以只讀方式進(jìn)行查詢(xún)和分析食店。通過(guò)指定特定的時(shí)間戳或快照ID吉嫩,可以獲取表在該時(shí)間點(diǎn)的一致視圖。
  • Incremental Query:Hudi支持增量查詢(xún)用踩,即只查詢(xún)某個(gè)commit或compaction以來(lái)有變化的數(shù)據(jù)忙迁。增量查詢(xún)利用Hudi表的增量存儲(chǔ)和索引結(jié)構(gòu)姊扔,可以快速檢索到最新的變化數(shù)據(jù),避免全表掃描佛南,提高查詢(xún)效率嵌言。
  • Read Optimized Queries:查詢(xún)給定某個(gè)commit或compaction的snapshot摧茴。僅暴露file group中的base/columnar文件,不暴漏delta log文件尘分,以期獲得與非Hudi 列存表相同的查詢(xún)性能。


    image.png

Hudi File Layout

  • Hudi將數(shù)據(jù)表組織成分布式文件系統(tǒng)上base path下的目錄結(jié)構(gòu)缓窜。
  • 表被分割成多個(gè)partition。
  • 在每個(gè)partition內(nèi)禾锤,文件被組織成file group,由file ID唯一標(biāo)識(shí)恩掷。
  • 每個(gè)file group包含多個(gè)file slices黄娘。
  • 每個(gè)file slice包含在某個(gè)commit/compaction instant生成的base file(.parquet),以及一組delta log(.log.*)优床,這些delta log文件包含了自base file生成以來(lái)對(duì)base file的插入/更新操作誓焦。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末杂伟,一起剝皮案震驚了整個(gè)濱河市赫粥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匪燕,老刑警劉巖喧笔,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帽驯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡书闸,警方通過(guò)查閱死者的電腦和手機(jī)尼变,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嫌术,你說(shuō)我怎么就攤上這事哀澈。” “怎么了度气?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵割按,是天一觀(guān)的道長(zhǎng)磷籍。 經(jīng)常有香客問(wèn)我适荣,道長(zhǎng),這世上最難降的妖魔是什么院领? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任弛矛,我火速辦了婚禮,結(jié)果婚禮上比然,老公的妹妹穿的比我還像新娘丈氓。我一直安慰自己,他們只是感情好强法,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布万俗。 她就那樣靜靜地躺著,像睡著了一般拟烫。 火紅的嫁衣襯著肌膚如雪该编。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天硕淑,我揣著相機(jī)與錄音课竣,去河邊找鬼。 笑死置媳,一個(gè)胖子當(dāng)著我的面吹牛于樟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拇囊,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼迂曲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了寥袭?” 一聲冷哼從身側(cè)響起路捧,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎传黄,沒(méi)想到半個(gè)月后杰扫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膘掰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年章姓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凡伊,死狀恐怖零渐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情系忙,我是刑警寧澤诵盼,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站银还,受9級(jí)特大地震影響拦耐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜见剩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扫俺。 院中可真熱鬧苍苞,春花似錦、人聲如沸狼纬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疗琉。三九已至冈欢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盈简,已是汗流浹背凑耻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柠贤,地道東北人香浩。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像臼勉,于是被迫代替她去往敵國(guó)和親邻吭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一宴霸、背景 傳統(tǒng)數(shù)倉(cāng)分為離線(xiàn)和實(shí)時(shí)兩個(gè)部分 離線(xiàn)部分屬于業(yè)務(wù)驅(qū)動(dòng)囱晴,固定的計(jì)算邏輯,通過(guò)定時(shí)調(diào)度瓢谢,最后產(chǎn)出報(bào)表畸写; 實(shí)時(shí)...
    TOTower閱讀 1,356評(píng)論 0 1
  • Hudi架構(gòu) 一. 時(shí)間軸(TimeLine) 1.1 時(shí)間軸(TimeLine)概念 Hudi的核心是維護(hù)在不同...
    只是甲閱讀 456評(píng)論 0 0
  • Flink 使用介紹相關(guān)文檔目錄 Flink 使用介紹相關(guān)文檔目錄[http://www.reibang.com...
    AlienPaul閱讀 12,613評(píng)論 4 10
  • [TOC] 數(shù)據(jù)實(shí)時(shí)處理和實(shí)時(shí)的數(shù)據(jù) 實(shí)時(shí)分為處理的實(shí)時(shí)和數(shù)據(jù)的實(shí)時(shí)即席分析是要求對(duì)數(shù)據(jù)實(shí)時(shí)的處理艺糜,馬上要得到對(duì)應(yīng)...
    西北偏北閱讀 1,147評(píng)論 0 0
  • 背景 本篇為Hudi概念和特性相關(guān)介紹。依據(jù)于官網(wǎng)和相關(guān)博客資料,融入了個(gè)人理解破停。內(nèi)容可能會(huì)有疏漏翅楼,歡迎大家指正和...
    AlienPaul閱讀 13,215評(píng)論 0 10