最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Apache?Hudi內(nèi)核文件標記機制

 更新時間:2022年03月30日 19:24:59   作者:leesf  
這篇文章主要為大家介紹了深入解析Apache?Hudi內(nèi)核文件標記機制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

1. 摘要

Hudi 支持在寫入時自動清理未成功提交的數(shù)據(jù)。Apache Hudi 在寫入時引入標記機制來有效跟蹤寫入存儲的數(shù)據(jù)文件。 在本博客中,我們將深入探討現(xiàn)有直接標記文件機制的設計,并解釋了其在云存儲(如 AWS S3、Aliyun OSS)上針對非常大批量寫入的性能問題。 并且演示如何通過引入基于時間軸服務器的標記來提高寫入性能。

2. 為何引入Markers機制

Hudi中的marker是一個表示存儲中存在對應的數(shù)據(jù)文件的標簽,Hudi使用它在故障和回滾場景中自動清理未提交的數(shù)據(jù)。

每個標記條目由三部分組成

  • 數(shù)據(jù)文件名
  • 標記擴展名 (.marker)
  • 創(chuàng)建文件的 I/O 操作(CREATE - 插入、MERGE - 更新/刪除或 APPEND - 兩者之一)。

例如標記91245ce3-bb82-4f9f-969e-343364159174-0_140-579-0_20210820173605.parquet.marker.CREATE指示相應的數(shù)據(jù)文件是91245ce3-bb82-4f9f-969e-343364159174-0_140-579-0_20210820173605.parquet 
并且 I/O 類型是 CREATE。

在寫入每個數(shù)據(jù)文件之前,Hudi 寫入客戶端首先在存儲中創(chuàng)建一個標記,該標記會被持久化,在提交成功后會被寫入客戶端顯式刪除。

標記對于寫客戶端有效地執(zhí)行不同的操作很有用,標記主要有如下兩個作用

刪除重復/部分數(shù)據(jù)文件:通過 Spark 寫入 Hudi 時會有多個 Executor 進行并發(fā)寫入。一個 Executor 可能失敗,留下部分數(shù)據(jù)文件寫入,在這種情況下 Spark 會重試 Task ,當啟用speculative execution時,可以有多次attempts成功將相同的數(shù)據(jù)寫入不同的文件,但最終只有一次attempt會交給 Spark Driver程序進程進行提交。標記有助于有效識別寫入的部分數(shù)據(jù)文件,其中包含與后來成功寫入的數(shù)據(jù)文件相比的重復數(shù)據(jù),并在寫入和提交完成之前清理這些重復的數(shù)據(jù)文件。

回滾失敗的提交:寫入時可能在中間失敗,留下部分寫入的數(shù)據(jù)文件。在這種情況下,標記條目會在提交失敗時保留在存儲中。在接下來的寫操作中,寫客戶端首先回滾失敗的提交,通過標記識別這些提交中寫入的數(shù)據(jù)文件并刪除它們。

接下來我們將深入研究現(xiàn)有的標記機制,闡述其性能問題,并演示新的基于時間軸服務器的標記機制來解決該問題。

3. 現(xiàn)有的直接標記機制及其局限性

現(xiàn)有的標記機制簡單地創(chuàng)建與每個數(shù)據(jù)文件相對應的新標記文件,標記文件名如前面所述。 每個 marker 文件被寫入在相同的目錄層次結構中,即提交即時和分區(qū)路徑,在Hudi表的基本路徑下的臨時文件夾.hoodie/.temp下。 例如,下圖顯示了向 Hudi 表寫入數(shù)據(jù)時創(chuàng)建的標記文件和相應數(shù)據(jù)文件的示例。 在獲取或刪除所有marker文件路徑時,該機制首先列出臨時文件夾.hoodie/.temp/<commit_instant>下的所有路徑,然后進行操作。

雖然掃描整個表以查找未提交的數(shù)據(jù)文件效率更高,但隨著要寫入的數(shù)據(jù)文件數(shù)量的增加,要創(chuàng)建的標記文件的數(shù)量也會增加。 這可能會為 AWS S3 等云存儲帶來性能瓶頸。 在 AWS S3 中,每個文件創(chuàng)建和刪除調(diào)用都會觸發(fā)一個 HTTP 請求,并且對存儲桶中每個前綴每秒可以處理的請求數(shù)有速率限制。 當并發(fā)寫入的數(shù)據(jù)文件數(shù)量和 marker 文件數(shù)量巨大時,marker 文件的操作會成為寫入性能的顯著性能瓶頸。而在像 HDFS 這樣的存儲上,用戶可能幾乎不會注意到這一點,其中文件系統(tǒng)元數(shù)據(jù)被有效地緩存在內(nèi)存中。

4. 基于時間線服務器的標記機制提高寫入性能

為解決上述 AWS S3 速率限制導致的性能瓶頸,我們引入了一種利用時間線服務器的新標記機制,該機制優(yōu)化了存儲標記的相關延遲。 Hudi 中的時間線服務器用作提供文件系統(tǒng)和時間線視圖。 如下圖所示,新的基于時間線服務器的標記機制將標記創(chuàng)建和其他標記相關操作從各個執(zhí)行器委托給時間線服務器進行集中處理。 時間線服務器在內(nèi)存中為相應的標記請求維護創(chuàng)建的標記,時間線服務器通過定期將內(nèi)存標記刷新到存儲中有限數(shù)量的底層文件來實現(xiàn)一致性。 通過這種方式,即使數(shù)據(jù)文件數(shù)量龐大,也可以顯著減少與標記相關的實際文件操作次數(shù)和延遲,從而提高寫入性能。

為了提高處理標記創(chuàng)建請求的效率,我們設計了在時間線服務器上批量處理標記請求。 每個標記創(chuàng)建請求在 Javalin 時間線服務器中異步處理,并在處理前排隊。 對于每個批處理間隔,例如 20 毫秒,調(diào)度線程從隊列中拉出待處理的請求并將它們發(fā)送到工作線程進行處理。 每個工作線程處理標記創(chuàng)建請求,并通過重寫存儲標記的底層文件。有多個工作線程并發(fā)運行,考慮到文件覆蓋的時間比批處理時間長,每個工作線程寫入一個不被其他線程觸及的獨占文件以保證一致性和正確性。 批處理間隔和工作線程數(shù)都可以通過寫入選項進行配置。

請注意工作線程始終通過將請求中的標記名稱與時間線服務器上維護的所有標記的內(nèi)存副本進行比較來檢查標記是否已經(jīng)創(chuàng)建。 存儲標記的底層文件僅在第一個標記請求(延遲加載)時讀取。 請求的響應只有在新標記刷新到文件后才會返回,以便在時間線服務器故障的情況下,時間線服務器可以恢復已經(jīng)創(chuàng)建的標記。 這些確保存儲和內(nèi)存中副本之間的一致性,并提高處理標記請求的性能。

5. 標記相關的寫入選項

我們在 0.9.0 版本中引入了以下與標記相關的新寫入選項,以配置標記機制。

  • hoodie.write.markers.type,要使用的標記類型。支持兩種模式: direct,每個數(shù)據(jù)文件對應的單獨標記文件由編寫器直接創(chuàng)建; timeline_server_based,標記操作全部在時間線服務中處理作為代理。 為了提高效率新的標記條目被批處理并存儲在有限數(shù)量的基礎文件中。默認值為direct
  • hoodie.markers.timeline_server_based.batch.num_threads,用于在時間軸服務器上批處理標記創(chuàng)建請求的線程數(shù)。默認值為20。
  • hoodie.markers.timeline_server_based.batch.interval_ms,標記創(chuàng)建批處理的批處理間隔(以毫秒為單位)。默認值為50。

6. 性能

我們通過使用 Amazon EMR 和 Spark 和 S3 批量插入大規(guī)模數(shù)據(jù)集來評估directtimeline_server_based的標記機制的寫入性能。 輸入數(shù)據(jù)大約為 100GB。 我們通過設置最大 parquet 文件大小為 1MB 和并行度為 240 來配置寫入操作以并發(fā)生成大量數(shù)據(jù)文件。 正如我們之前提到的,而直接標記機制的延遲對于較小數(shù)量的增量寫入是可以接受的,對于產(chǎn)生更多數(shù)據(jù)文件的大批量插入/寫入,開銷會急劇增加。

如下圖所示,由于是批處理,基于時間線服務器的標記機制生成的存儲標記的文件要少得多,從而導致標記相關的 I/O 操作的時間要少得多,因此與直接相比,寫入完成時間減少了 31%。 標記文件機制。

7. 總結

我們發(fā)現(xiàn)由于 AWS S3 等云存儲上文件創(chuàng)建和刪除調(diào)用的速率限制,現(xiàn)有的直接標記文件機制會導致性能瓶頸。 為了解決這個問題我們引入了一種利用時間線服務器的新標記機制,它將標記創(chuàng)建和其他與標記相關的操作從各個 Executor 委托給時間線服務器,并使用批處理來提高性能。使用 Spark 和 S3 在 Amazon EMR 上進行的性能評估表明,與標記相關的 I/O 延遲和整體寫入時間有所減少。

以上就是深入解析Apache Hudi內(nèi)核文件標記機制的詳細內(nèi)容,更多關于Apache Hudi內(nèi)核文件標記的資料請關注腳本之家其它相關文章!

相關文章

最新評論

辽宁省| 阜阳市| 新和县| 和静县| 固阳县| 舟曲县| 天全县| 三都| 龙门县| 葫芦岛市| 讷河市| 游戏| 牙克石市| 甘肃省| 庄河市| 洛宁县| 肇东市| 卓资县| 凤阳县| 鄢陵县| 噶尔县| 新乐市| 宁津县| 游戏| 博湖县| 从化市| 辽宁省| 贵州省| 景泰县| 长武县| 黔东| 峨山| 拉萨市| 任丘市| 沿河| 云南省| 新宾| 宣威市| 诏安县| 兴安盟| 安西县|