真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Uber基于ApacheHudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐

這篇文章主要為大家分析了Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話(huà),不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐”的知識(shí)吧。

成都創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)成縣,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220

1. 引言

從確保準(zhǔn)確預(yù)計(jì)到達(dá)時(shí)間到預(yù)測(cè)最佳交通路線,在Uber平臺(tái)上提供安全、無(wú)縫的運(yùn)輸和交付體驗(yàn)需要可靠、高性能的大規(guī)模數(shù)據(jù)存儲(chǔ)和分析。2016年,Uber開(kāi)發(fā)了增量處理框架Apache Hudi,以低延遲和高效率為關(guān)鍵業(yè)務(wù)數(shù)據(jù)管道賦能。一年后,我們開(kāi)源了該解決方案,以使得其他有需要的組織也可以利用Hudi的優(yōu)勢(shì)。接著在2019年,我們履行承諾,進(jìn)一步將其捐贈(zèng)給了Apache Software Foundation,差不多一年半之后,Apache Hudi畢業(yè)成為Apache Software Foundation頂級(jí)項(xiàng)目。為紀(jì)念這一里程碑,我們想分享Apache Hudi的構(gòu)建、發(fā)布、優(yōu)化和畢業(yè)之旅,以使更大的大數(shù)據(jù)社區(qū)受益。

2. 什么是Apache Hudi

Apache Hudi是一個(gè)存儲(chǔ)抽象框架,可幫助組織構(gòu)建和管理PB級(jí)數(shù)據(jù)湖,通過(guò)使用upsert增量拉取等原語(yǔ),Hudi將流式處理帶到了類(lèi)似批處理的大數(shù)據(jù)中。這些功能通過(guò)統(tǒng)一的服務(wù)層(幾分鐘左右即可實(shí)現(xiàn)數(shù)據(jù)延遲),幫助我們更快,更新鮮地獲取服務(wù)數(shù)據(jù),從而避免了維護(hù)多個(gè)系統(tǒng)的額外開(kāi)銷(xiāo)。更靈活地,Apache Hudi還可以在Hadoop分布式文件系統(tǒng)(HDFS)或云存儲(chǔ)上運(yùn)行。

Hudi在數(shù)據(jù)湖上啟用原子性、一致性、隔離性和持久性(ACID)語(yǔ)義。Hudi的兩個(gè)最廣泛使用的功能是upserts增量拉取,它使用戶(hù)能夠捕獲變更數(shù)據(jù)并將其應(yīng)用于數(shù)據(jù)湖,為了實(shí)現(xiàn)這一點(diǎn),Hudi提供了可插拔索引機(jī)制,以及自定義索引實(shí)現(xiàn)。Hudi具有控制和管理數(shù)據(jù)湖中文件布局的能力,這不僅能克服HDFS NameNode節(jié)點(diǎn)和其他云存儲(chǔ)限制,而且對(duì)于通過(guò)提高可靠性和查詢(xún)性能來(lái)維護(hù)健康的數(shù)據(jù)生態(tài)系統(tǒng)也非常重要。另外Hudi支持多種查詢(xún)引擎,例如Presto,Apache Hive,Apache Spark和Apache Impala。

Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐

圖1. Apache Hudi通過(guò)在表上提供不同的視圖來(lái)攝取變更日志、事件和增量流,以服務(wù)于不同的應(yīng)用場(chǎng)景

從總體上講,Hudi在概念上分為3個(gè)主要組成部分:需要存儲(chǔ)的原始數(shù)據(jù);用于提供upsert功能的索引數(shù)據(jù)以及用于管理數(shù)據(jù)集的元數(shù)據(jù)。內(nèi)核方面,Hudi維護(hù)在不同時(shí)間點(diǎn)在表上執(zhí)行的所有動(dòng)作的時(shí)間軸,在Hudi中稱(chēng)為即時(shí),這提供了表格的即時(shí)視圖,同時(shí)還有效地支持了按序到達(dá)的數(shù)據(jù)檢索,Hudi保證時(shí)間軸上的操作是原子性的,并且基于即時(shí)時(shí)間,與數(shù)據(jù)庫(kù)中進(jìn)行更改的時(shí)間是一致的。利用這些信息,Hudi提供了同一Hudi表的不同視圖,包括用于快速列式文件性能的讀優(yōu)化視圖,用于快速數(shù)據(jù)攝取的實(shí)時(shí)視圖以及用于將Hudi表作為變更日志流讀取的增量視圖,如上圖1所示。

Hudi將數(shù)據(jù)表組織到分布式文件系統(tǒng)上基本路徑(basepath)下的目錄結(jié)構(gòu)中。表分為多個(gè)分區(qū),在每個(gè)分區(qū)內(nèi),文件被組織成文件組,由文件ID唯一標(biāo)識(shí)。每個(gè)文件組包含幾個(gè)文件切片,其中每個(gè)切片包含在某個(gè)特定提交/壓縮(commit/compaction)瞬間生成的基本數(shù)據(jù)文件(*.parquet),以及包含對(duì)基本數(shù)據(jù)文件進(jìn)行插入/更新的一組日志文件(*.log)。Hudi采用了Multiversion Concurrency Control(MVCC),其中壓縮操作將日志和基本文件合并以生成新的文件片,而清理操作則將未使用的/較舊的文件片去除,以回收文件系統(tǒng)上的空間。

Hudi支持兩種表類(lèi)型:寫(xiě)時(shí)復(fù)制和讀時(shí)合并。寫(xiě)時(shí)復(fù)制表類(lèi)型僅使用列文件格式(例如,Apache Parquet)存儲(chǔ)數(shù)據(jù)。通過(guò)寫(xiě)時(shí)復(fù)制,可以通過(guò)在寫(xiě)過(guò)程中執(zhí)行同步合并來(lái)簡(jiǎn)單地更新版本并重寫(xiě)文件。

讀時(shí)合并表類(lèi)型使用列式(例如Apache Parquet)和基于行(例如Apache Avro)文件格式的組合來(lái)存儲(chǔ)數(shù)據(jù)。更新記錄到增量文件中,然后以同步或異步壓縮方式生成列文件的新版本。

Hudi還支持兩種查詢(xún)類(lèi)型:快照查詢(xún)和增量查詢(xún)。快照查詢(xún)是從給定的提交或壓縮操作開(kāi)始對(duì)表進(jìn)行"快照"的請(qǐng)求。利用快照查詢(xún)時(shí),寫(xiě)時(shí)復(fù)制表類(lèi)型僅暴露最新文件片中的基本/列文件,并且與非Hudi表相比,可保證相同的列查詢(xún)性能。寫(xiě)入時(shí)復(fù)制提供了現(xiàn)有Parquet表的替代品,同時(shí)提供了upsert/delete和其他功能。對(duì)于讀時(shí)合并表,快照查詢(xún)通過(guò)動(dòng)態(tài)合并最新文件切片的基本文件和增量文件來(lái)提供近乎實(shí)時(shí)的數(shù)據(jù)(分鐘級(jí))。對(duì)于寫(xiě)時(shí)復(fù)制表,自給定提交或壓縮以來(lái),增量查詢(xún)將提供寫(xiě)入表的新數(shù)據(jù),并提供更改流以啟用增量數(shù)據(jù)管道。

3. Apache Hudi在Uber的使用

在Uber,我們?cè)诟鞣N場(chǎng)景中都使用到了Hudi,從在Uber平臺(tái)上提供有關(guān)行程的快速、準(zhǔn)確的數(shù)據(jù),從檢測(cè)欺詐到在我們的UberEats平臺(tái)上提供餐廳和美食推薦。為了演示Hudi的工作原理,讓我們逐步了解如何確保Uber Marketplace中的行程數(shù)據(jù)在數(shù)據(jù)湖上是最新的,從而改善Uber平臺(tái)上的騎手和駕駛員的用戶(hù)體驗(yàn)。行程的典型生命周期始于騎手提出的行程,然后隨著行程的進(jìn)行而繼續(xù),直到行程結(jié)束且騎手到達(dá)最終目的地時(shí)才結(jié)束。Uber的核心行程數(shù)據(jù)以表格形式存儲(chǔ)在Uber的可擴(kuò)展數(shù)據(jù)存儲(chǔ)Schemaless中。行程表中的單個(gè)行程條目在行程的生命周期中可能會(huì)經(jīng)歷許多更新。在Uber使用Hudi之前,大型Apache Spark作業(yè)會(huì)定期將整個(gè)數(shù)據(jù)集重新寫(xiě)入HDFS,以獲取上游在線表的插入、更新和刪除,從而反映出行程狀態(tài)的變化。就背景而言,在2016年初(在構(gòu)建Hudi之前),一些最大的任務(wù)是使用1000個(gè)executors并處理超過(guò)20TB的數(shù)據(jù),此過(guò)程不僅效率低下,而且難以擴(kuò)展。公司的各個(gè)團(tuán)隊(duì)都依靠快速、準(zhǔn)確的數(shù)據(jù)分析來(lái)提供高質(zhì)量的用戶(hù)體驗(yàn),為滿(mǎn)足這些要求,我們當(dāng)前的解決方案無(wú)法擴(kuò)展進(jìn)行數(shù)據(jù)湖上的增量處理。使用快照和重新加載解決方案將數(shù)據(jù)移至HDFS時(shí),這些低效率的處理正在寫(xiě)到到所有數(shù)據(jù)管道,包括使用此原始數(shù)據(jù)的下游ETL,我們可以看到這些問(wèn)題只會(huì)隨著規(guī)模的擴(kuò)大而加劇。

在沒(méi)有其他可行的開(kāi)源解決方案可供使用的情況下,我們于2016年末為Uber構(gòu)建并啟動(dòng)了Hudi,以構(gòu)建可促進(jìn)大規(guī)??焖伲煽繑?shù)據(jù)更新的事務(wù)性數(shù)據(jù)湖。Uber的第一代Hudi利用了寫(xiě)時(shí)復(fù)制表類(lèi)型,該表類(lèi)型每30分鐘將作業(yè)處理速度提高到20GB,I/O和寫(xiě)入放大減少了100倍。到2017年底,Uber的所有原始數(shù)據(jù)表都采用了Hudi格式,運(yùn)行著地球上最大的事務(wù)數(shù)據(jù)湖之一。

Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐

圖2. Hudi的寫(xiě)時(shí)復(fù)制功能使我們能夠執(zhí)行文件級(jí)更新,從而大大提高數(shù)據(jù)的新鮮度

4. 改進(jìn)Apache Hudi

隨著Uber數(shù)據(jù)處理和存儲(chǔ)需求的增長(zhǎng),我們開(kāi)始遇到Hudi的寫(xiě)時(shí)復(fù)制功能的局限性,主要是需要繼續(xù)提高數(shù)據(jù)的處理速度和新鮮度,即使使用Hudi"寫(xiě)時(shí)復(fù)制"功能,我們的某些表收到的更新也分散在90%的文件中,從而導(dǎo)致需要重寫(xiě)數(shù)據(jù)湖中任何給定的大型表的數(shù)據(jù),重寫(xiě)數(shù)據(jù)量大約為100TB。由于寫(xiě)時(shí)復(fù)制甚至為單個(gè)修改的記錄重寫(xiě)整個(gè)文件,因此寫(xiě)復(fù)制功能導(dǎo)致較高的寫(xiě)放大和損害的新鮮度,從而導(dǎo)致HDFS群集上不必要的I/O以及更快地消耗磁盤(pán)空間,此外,更多的數(shù)據(jù)表更新意味著更多的文件版本,以及HDFS文件數(shù)量激增,反過(guò)來(lái),這些需求導(dǎo)致HDFS Namenode節(jié)點(diǎn)不穩(wěn)定和較高的計(jì)算成本。

為了解決這些日益增長(zhǎng)的擔(dān)憂(yōu),我們實(shí)現(xiàn)了第二種表類(lèi)型,即"讀時(shí)合并"。由于讀時(shí)合并通過(guò)動(dòng)態(tài)合并數(shù)據(jù)來(lái)使用近實(shí)時(shí)的數(shù)據(jù),為避免查詢(xún)端的計(jì)算成本,我們需要合理使用此模式。"讀時(shí)合并"部署模型包括三個(gè)獨(dú)立的作業(yè),其中包括一個(gè)攝取作業(yè),包括由插入、更新和刪除組成的新數(shù)據(jù),一個(gè)次要的壓縮作業(yè),以異步方式主動(dòng)地壓縮少量最新分區(qū)的更新/刪除內(nèi)容,以及一個(gè)主要的壓縮作業(yè),該作業(yè)會(huì)緩慢穩(wěn)定地壓縮大量舊分區(qū)中的更新/刪除。這些作業(yè)中的每一個(gè)作業(yè)都以不同的頻率運(yùn)行,次要作業(yè)和提取作業(yè)的運(yùn)行頻率比主要作業(yè)要高,以確保其最新分區(qū)中的數(shù)據(jù)以列格式快速可用。通過(guò)這樣的部署模型,我們能夠以列式為數(shù)千個(gè)查詢(xún)提供新鮮數(shù)據(jù),并將我們的查詢(xún)側(cè)合并成本限制在最近的分區(qū)上。使用讀時(shí)合并,我們能夠解決上面提到的所有三個(gè)問(wèn)題,并且Hudi表幾乎不受任何對(duì)數(shù)據(jù)湖的更新或刪除的影響?,F(xiàn)在,在Uber,我們會(huì)根據(jù)不同場(chǎng)景同時(shí)使用Apache Hudi的寫(xiě)時(shí)復(fù)制和讀時(shí)合并功能。

Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐

圖3. Uber的Apache Hudi團(tuán)隊(duì)開(kāi)發(fā)了一種數(shù)據(jù)壓縮策略,用于讀時(shí)合并表,以便頻繁將最近的分區(qū)轉(zhuǎn)化為列式存儲(chǔ),從而減少了查詢(xún)端的計(jì)算成本

有了Hudi,Uber每天向超過(guò)150PB數(shù)據(jù)湖中插入超過(guò)5,000億條記錄,每天使用30,000多個(gè)core,超過(guò)10,000多個(gè)表和數(shù)千個(gè)數(shù)據(jù)管道,Hudi每周在我們的各種服務(wù)中提供超過(guò)100萬(wàn)個(gè)查詢(xún)。

5. Apache Hudi經(jīng)驗(yàn)總結(jié)

Uber在2017年開(kāi)源了Hudi,為其他人帶來(lái)了該解決方案的好處,該解決方案可大規(guī)模提取和管理數(shù)據(jù)存儲(chǔ),從而將流處理引入大數(shù)據(jù)。當(dāng)Hudi畢業(yè)于Apache軟件基金會(huì)下的頂級(jí)項(xiàng)目時(shí),Uber的大數(shù)據(jù)團(tuán)隊(duì)總結(jié)了促使我們構(gòu)建Hudi的各種考慮因素,包括:

  • 如何提高數(shù)據(jù)存儲(chǔ)和處理效率?

  • 如何確保數(shù)據(jù)湖包含高質(zhì)量的表?

  • 隨著業(yè)務(wù)的增長(zhǎng),如何繼續(xù)大規(guī)模有效地提供低延遲的數(shù)據(jù)?

  • 在分鐘級(jí)別的場(chǎng)景中,我們?nèi)绾谓y(tǒng)一服務(wù)層?

如果沒(méi)有良好的標(biāo)準(zhǔn)化和原語(yǔ),數(shù)據(jù)湖將很快成為無(wú)法使用的"數(shù)據(jù)沼澤"。這樣的沼澤不僅需要花費(fèi)大量時(shí)間和資源來(lái)協(xié)調(diào)、清理和修復(fù)表,而且還迫使各個(gè)服務(wù)所有者構(gòu)建復(fù)雜的算法來(lái)進(jìn)行調(diào)整、改組和交易,從而給技術(shù)棧帶來(lái)不必要的復(fù)雜性。

如上所述,Hudi通過(guò)無(wú)縫地?cái)z取和管理分布式文件系統(tǒng)上的大型分析數(shù)據(jù)集來(lái)幫助用戶(hù)控制其數(shù)據(jù)湖,從而彌補(bǔ)了這些差距。建立數(shù)據(jù)湖是一個(gè)多方面的問(wèn)題,需要在數(shù)據(jù)標(biāo)準(zhǔn)化、存儲(chǔ)技術(shù)、文件管理實(shí)踐,數(shù)據(jù)攝取與數(shù)據(jù)查詢(xún)之間折衷性能等方面進(jìn)行取舍。在我們建立Hudi時(shí)與大數(shù)據(jù)社區(qū)的其他成員交談時(shí),我們了解到這些問(wèn)題在許多工程組織中普遍存在。我們希望在過(guò)去的幾年中,開(kāi)源和與Apache社區(qū)的合作,在Hudi基礎(chǔ)上發(fā)展可以使其他人在不同行業(yè)對(duì)大數(shù)據(jù)運(yùn)營(yíng)有更深入的了解。在Uber之外,Apache Hudi已在多家公司用于生產(chǎn),其中包括阿里云,騰訊云,AWS、Udemy等。

6. 未來(lái)計(jì)劃

Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐

圖4. Apache Hudi場(chǎng)景包括數(shù)據(jù)分析和基礎(chǔ)架構(gòu)運(yùn)行狀況監(jiān)視

Hudi通過(guò)對(duì)數(shù)據(jù)集強(qiáng)制schema,幫助用戶(hù)構(gòu)建更強(qiáng)大、更新鮮的數(shù)據(jù)湖,從而提供高質(zhì)量的見(jiàn)解。

在Uber,擁有全球最大的事務(wù)數(shù)據(jù)湖之一為我們提供了各種Apache Hudi用例場(chǎng)景的機(jī)會(huì),由于以這種規(guī)模解決問(wèn)題并提高效率可能會(huì)產(chǎn)生重大影響,因此有直接的動(dòng)機(jī)促使我們更加深入。在Uber,我們已經(jīng)使用了先進(jìn)的Hudi原語(yǔ),如增量拉取來(lái)幫助建立鏈?zhǔn)皆隽苛魉€,從而減少了作業(yè)的計(jì)算空間,而這些作業(yè)本來(lái)會(huì)執(zhí)行大型掃描和寫(xiě)入。我們根據(jù)特定的用例場(chǎng)景和要求調(diào)整讀時(shí)合并表的壓縮策略。自從我們將Hudi捐贈(zèng)給Apache基金會(huì)以來(lái),最近幾個(gè)月,Uber貢獻(xiàn)了一些功能,例如嵌入式時(shí)間軸服務(wù)以實(shí)現(xiàn)高效的文件系統(tǒng)訪問(wèn),刪除重命名以支持云友好的部署并提高增量拉取性能。

在接下來(lái)的幾個(gè)月中,Uber計(jì)劃為Apache Hudi社區(qū)貢獻(xiàn)更多新功能。其中一些功能可通過(guò)優(yōu)化計(jì)算使用量以及改善數(shù)據(jù)應(yīng)用程序的性能來(lái)幫助降低成本,我們還將更深入地研究如何根據(jù)訪問(wèn)模式和數(shù)據(jù)應(yīng)用程序需求來(lái)改善存儲(chǔ)管理和查詢(xún)性能。

有關(guān)我們?nèi)绾斡?jì)劃實(shí)現(xiàn)這些目標(biāo)的更多信息,您可以閱讀一些RFC,包括支持列索引和O(1)查詢(xún)計(jì)劃的智能元數(shù)據(jù),將Parquet表高效引導(dǎo)到Hudi,記錄級(jí)別索引支持更快速插入,這些RFC由Uber的Hudi團(tuán)隊(duì)向Apache社區(qū)提出。

隨著Apache Hudi畢業(yè)成為Apache頂級(jí)項(xiàng)目,我們很高興為該項(xiàng)目雄心勃勃的路線圖做出貢獻(xiàn)。Hudi使Uber和其他公司可以使用開(kāi)放源文件格式,在未來(lái)證明其數(shù)據(jù)湖的速度,可靠性和交易能力,從而消除了許多大數(shù)據(jù)挑戰(zhàn),并構(gòu)建了豐富而可移植的數(shù)據(jù)應(yīng)用程序。

關(guān)于“Uber基于Apache Hudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐”就介紹到這了,更多相關(guān)內(nèi)容可以搜索創(chuàng)新互聯(lián)以前的文章,希望能夠幫助大家答疑解惑,請(qǐng)多多支持創(chuàng)新互聯(lián)網(wǎng)站!


分享名稱(chēng):Uber基于ApacheHudi如何構(gòu)建PB級(jí)數(shù)據(jù)湖實(shí)踐
文章分享:http://weahome.cn/article/geeihs.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部