主頁 > 資料庫 > 性能提升30%!袋鼠云數堆疊基于 Apache Hudi 的性能優化實戰決議

性能提升30%!袋鼠云數堆疊基于 Apache Hudi 的性能優化實戰決議

2023-06-22 08:07:14 資料庫

Apache Hudi 是一款開源的資料湖解決方案,它能夠幫助企業更好地管理和分析海量資料,支持高效的資料更新和查詢,并提供多種資料壓縮和存盤格式以及索引功能,從而為企業資料倉庫實踐提供更加靈活和高效的資料處理方式,

在金融領域,企業可以使用 Hudi 來處理大量需要實時查詢和更新的金融交易資料,在電商業務中,企業可以使用 Hudi 來跟蹤訂單資料,以及對訂單進行實時更新和查詢,在物流和供應鏈管理中,Hudi 可以幫助企業實時處理和更新大量的物流資料,保證資料的一致性和可靠性,

作為一站式大資料基礎軟體的袋鼠云數堆疊,基于 Apache Hudi 為客戶提供了存量資料遷移、資料入湖、檔案治理等完整支持能力,在這個程序中,積累了一些 Hudi 性能優化的經驗,希望通過本文與大家分享交流,

Hudi 原理簡析

Apache Hudi 是一個開源的資料湖解決方案,它是基于 Hadoop 和 Spark 的技術堆疊構建而成,并且拓展到了 Flink、 Trino 等多種計算引擎,Apache Hudi 的主要目的是提供一個高效、可擴展且可靠的資料湖解決方案,用于管理和處理大規模的資料集,

Hudi 的核心實作是通過將資料集合劃分為多個資料檔案,并為每個資料檔案維護一個資料版本和索引資訊,來支持增量資料更新和查詢操作,如下圖所示,當用戶需要對資料進行更新時,Hudi 會將更新的資料寫入一個新的資料檔案中,并通過寫時復制(copy-on-write)操作,將原始資料檔案中的資料記錄復制到新的資料檔案中,并在新的資料檔案中更新對應的資料記錄,

同時,Hudi 會更新資料版本和索引資訊,以便用戶可以根據資料版本和唯一識別符號來訪問最新的資料記錄,當用戶需要查詢資料時,Hudi 會使用索引資訊來定位資料記錄,并回傳最新的資料記錄,

file

在 Hudi 的 merge on read 模式中,更新操作是通過在查詢時將原始資料和更新資料進行合并來實作的,具體來說,當有新的資料要被寫入時,Hudi 會將新資料追加寫入到一個新的日志檔案中,并在元資料檔案中記錄新檔案的資訊,當查詢資料時,Hudi 會將所有資料檔案進行合并,生成一個視圖,然后對視圖進行查詢,

由于 Hudi 只需要在查詢時將需要更新的資料進行合并,而不需要在寫入時進行合并,因此可以避免寫入時的性能開銷,從而實作快速的更新操作,

Apache Hudi 在寫入資料時創建一個新版本,而讀取資料時通過將所有版本的資料進行合并來生成一個視圖,在視圖中,每個資料記錄只出現一次,并且是最新的版本,這樣可以保證讀操作只會涉及到視圖中的資料,而不會對原始資料進行修改,從而實作了讀寫分離,

通過多版本實作并發控制,Hudi 可以在保證資料一致性的前提下,提高讀操作的性能,同時也保證了資料的可靠性和可擴展性,

Hudi 優化實踐

下面介紹基于袋鼠云數堆疊的實踐經驗,所做的 Hudi 性能優化,

支持多索引

Hudi 將資料集合劃分為多個資料檔案,并為每個資料檔案維護一個資料版本和索引資訊,來支持增量資料更新和查詢操作,通過構建索引就可以利用生成的元資料快速定位查詢所需資料的位置,如下圖所示,這樣可以減少甚至避免從檔案系統中掃描或者讀取不必要的資料,減少 IO 的開銷,大大提升查詢效率,Hudi 已經支持幾種不同的索引技術,并且還在不斷地改進和添加更多的索引實作,

袋鼠云數堆疊支持用戶在創建 Hudi 表時就設定想要使用的索引型別,包括 SIMPLE、BLOOM FILTER、BUCKET 等型別,在寫入程序中,Hudi 會將索引資訊寫入到 parquet 檔案或者外部存盤中,在讀取時應用程式根據這些資訊進行比較判斷,跳過不必要的資料檔案,

file

Hudi 在0.11.0版本引入了 MetadataTable 這種多模式索引,利用 MetadataTable 匯總元資料資訊,應用程式可以避免檔案系統呼叫檔案 Listing 操作(這在物件存盤中是非常耗時的),還可以避免直接讀取 parquet 檔案中的 footer 資訊,能夠大幅提升查詢性能,

袋鼠云數堆疊支持用戶在建表時就開啟多模式索引,在寫入資料的同時將檔案的索引資訊也寫入 MetadataTable,數堆疊還支持以異步的方式構建 MetadataTable,保證寫入仍然處于低延遲的狀態,再由后臺的應用程式離線生成 MetadataTable 以提升讀取性能,

由于 MetadataTable 依賴 base 檔案記錄的 column stats/bloomfilter 等資訊,因此 merge on read 模式下沒有辦法將 log 檔案的資訊保存到 MetadataTable 中,開源框架上沒有利用它實作進行檔案過濾,

但考慮到 base 檔案和 log 檔案共用相同的 fileId,袋鼠云技術團隊在數堆疊內部進行了改造:通過 MetadataTable 獲取到 base 檔案之后,再根據 fileId 進行 log 檔案過濾,避免不必要讀取,經過驗證,這種改動能夠使得 merge on read 模式具備和 copy on write 模式相同的過濾效果,

優化檔案布局

在大資料存盤中,檔案布局優化是一種重要的性能優化技術,其主要目的是在資料寫入時將資料按照一定的規則布局到存盤介質中,以提高資料讀取和處理的效率,檔案布局優化可以采用多種方式,如時間戳排序、磁區排序和合并檔案等方式,

Hudi 提供了一種名為 Clustering 的檔案布局優化方法,可以借此將小檔案合并成較大的檔案以減少查詢引擎需要掃描的檔案總數,或者利用空間填充曲線之類的概念來適應資料湖布局并減少查詢讀取的資料量,利用 Clustering,可以將具有相同查詢特征的資料放到相鄰的幾個檔案內,在查詢時再根據索引資訊進行過濾,能夠有效減少需要讀取的檔案數量,降低計算成本,

袋鼠云數堆疊提供了可視化頁面以方便用戶對檔案布局進行調整,用戶可以根據需要自由設定排序策略、排序欄位、過濾條件等,如下圖所示,應用程式會周期性地在后臺根據配置對檔案進行優化,因為 Hudi 采用多版本組織檔案,用戶不需要擔心優化任務會影響正在運行的讀取任務,在優化完成后新的讀取任務即可享受到新的布局帶來的效率提升,

file

探索新特性

在落地 Hudi 的程序中,袋鼠云數堆疊也在積極跟蹤實踐社區的新功能新特性,

在 Hudi 0.13.0 中,Hudi 實作了“優化記錄負載處理”的特性,通過設定 hoodie.datasource.write.record.merger.impls=org.apache.hudi.HoodieSparkRecordMerger 和 hoodie.logfile.data.block.format=parquet 兩個引數避免了額外的復制和反序列化,在寫入操作的整個生命周期內以統一的方式處理記錄,

袋鼠云數堆疊測驗和引入了這項特性,經過驗證,更新性能相比上一版本有了約20%的提升,符合社區的描述,另外,數堆疊還參考了 Hudi 0.13.0 引入的 disruptor 無鎖訊息佇列寫入資料的新特性,通過設定 hoodie.write.executor.type = DISRUPTOR 和 hoodie.write.executor.disruptor.wait.strategy = BUSY_SPIN_WAIT 引數,結合前述的優化配置,更新性能整體提升了30%以上,

總結

Apache Hudi 的優勢在于支持增量資料處理,具有良好的資料一致性和可靠性,同時提供多種性能優化技術,能夠提高資料處理和查詢的效率,具有良好的性能和可擴展性,

袋鼠云數堆疊團隊在落地 Hudi 的程序中,驗證了 Hudi 的多種索引,應用了檔案組織優化功能,總結了常用的調優引數,為推動企業資料湖建設,提供可靠、高效、可擴展的資料湖解決方案積累了不少經驗,能夠幫助企業更好地管理和分析資料,提高業務決策的精度和效率,

《數堆疊產品白皮書》:https://www.dtstack.com/resources/1004?src=https://www.cnblogs.com/DTinsight/p/szsm

《資料治理行業實踐白皮書》下載地址:https://www.dtstack.com/resources/1001?src=https://www.cnblogs.com/DTinsight/p/szsm

想了解或咨詢更多有關袋鼠云大資料產品、行業解決方案、客戶案例的朋友,瀏覽袋鼠云官網:https://www.dtstack.com/?src=https://www.cnblogs.com/DTinsight/p/szbky

同時,歡迎對大資料開源專案有興趣的同學加入「袋鼠云開源框架釘釘技術qun」,交流最新開源技術資訊,qun號碼:30537511,專案地址:https://github.com/DTStack

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/555795.html

標籤:大數據

上一篇:ClickHouse(14)ClickHouse合并樹MergeTree家族表引擎之VersionedCollapsingMergeTree詳細決議

下一篇:返回列表

標籤雲
其他(161478) Python(38244) JavaScript(25512) Java(18251) C(15238) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7260) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4606) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) HtmlCss(1971) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 性能提升30%!袋鼠云數堆疊基于 Apache Hudi 的性能優化實戰決議

    Apache Hudi 是一款開源的[資料湖解決方案](https://www.dtstack.com/dtengine/easylake?src=https://www.cnblogs.com/DTinsight/p/szsm),它能夠幫助企業更好地管理和分析海量資料,支持高效的[資料更新和查詢](https://www.dtstack.com/dtengine/ea ......

    uj5u.com 2023-06-22 08:07:14 more
  • ClickHouse(14)ClickHouse合并樹MergeTree家族表引擎之Versioned

    [toc] >VersionedCollapsingMergeTree引擎繼承自MergeTree并將折疊行的邏輯添加到合并資料部分的演算法中。VersionedCollapsingMergeTree用于相同的目的折疊樹但使用不同的折疊演算法,允許以多個執行緒的任何順序插入資料。特別是,Version列有 ......

    uj5u.com 2023-06-22 08:07:07 more
  • InnoDB 記憶體結構之更改緩沖區

    更改緩沖區(Change Buffer)是一種特殊的資料結構,用于快取不在緩沖池中的二級索引(secondary index)頁的更改。可能來自于 INSERT、UPDATE 或 DELETE 操作(資料操作語言,DML)的緩沖更改,會在后續通過其他讀操作將這些頁加載到緩沖池時被合并。 ......

    uj5u.com 2023-06-21 08:53:09 more
  • 華為云GaussDB為MetaERP“成本核算”產品“保駕護航”

    摘要:華為宣布實作了自主創新的MetaERP研發,并且完成了對舊ERP系統的全面替換,這其中,就采用了華為云GaussDB資料庫特有的全密態技術,對ERP系統中的絕密資料進行加密保護,從而保障了資料的安全。 ERP系統在幫助企業優化業務流程、實作數字化管理方面有重要作用,可以說企業所有的業務流轉都需 ......

    uj5u.com 2023-06-21 08:53:02 more
  • CSR格式如何更新? GES圖計算引擎HyG揭秘之資料更新

    摘要:HyG圖計算引擎采用CSR格式來存盤圖的拓撲資訊,CSR格式可以將稀疏矩陣的存盤空間壓縮,進而大大降低圖的存盤開銷,同時具備訪問效率高、格式易轉化等優點。 本文分享自華為云社區《CSR格式如何更新? GES圖計算引擎HyG揭秘之資料更新》,作者: π 。 HyG圖計算引擎采用CSR格式來存盤圖 ......

    uj5u.com 2023-06-21 08:52:51 more
  • Linux安裝MongoDB 4.0.3

    Linux安裝MongoDB 4.0.3 1.準備 CentOS下安裝MongoDB 官網提供windows、Linux、OSX系統環境下的安裝包,這里主要是記錄一下在Linux下的安裝;首先到官網下載安裝包;文中安裝的是4.0.3版本的。 官網地址:https://www.mongodb.com/ ......

    uj5u.com 2023-06-21 08:52:38 more
  • 華為云GaussDB為MetaERP“成本核算”產品“保駕護航”

    摘要:華為宣布實作了自主創新的MetaERP研發,并且完成了對舊ERP系統的全面替換,這其中,就采用了華為云GaussDB資料庫特有的全密態技術,對ERP系統中的絕密資料進行加密保護,從而保障了資料的安全。 ERP系統在幫助企業優化業務流程、實作數字化管理方面有重要作用,可以說企業所有的業務流轉都需 ......

    uj5u.com 2023-06-21 08:51:32 more
  • InnoDB 記憶體結構之更改緩沖區

    更改緩沖區(Change Buffer)是一種特殊的資料結構,用于快取不在緩沖池中的二級索引(secondary index)頁的更改。可能來自于 INSERT、UPDATE 或 DELETE 操作(資料操作語言,DML)的緩沖更改,會在后續通過其他讀操作將這些頁加載到緩沖池時被合并。 ......

    uj5u.com 2023-06-21 08:50:53 more
  • CSR格式如何更新? GES圖計算引擎HyG揭秘之資料更新

    摘要:HyG圖計算引擎采用CSR格式來存盤圖的拓撲資訊,CSR格式可以將稀疏矩陣的存盤空間壓縮,進而大大降低圖的存盤開銷,同時具備訪問效率高、格式易轉化等優點。 本文分享自華為云社區《CSR格式如何更新? GES圖計算引擎HyG揭秘之資料更新》,作者: π 。 HyG圖計算引擎采用CSR格式來存盤圖 ......

    uj5u.com 2023-06-21 08:50:31 more
  • [20230616]One Deadlock of 'row cache lock' and '

    [20230616]One Deadlock of 'row cache lock' and 'library cache lock'.txt--//鏈接http://ksun-oracle.blogspot.com/2023/06/one-deadlock-of-row-cache-lock-an ......

    uj5u.com 2023-06-20 09:32:04 more