標題: Uber帳號被鎖定如何解除封號限制
作者: uber解封, 駭客接送單, 駭客服務
日期: 2023-04-28
Uber帳號被鎖定(封號)怎麼辦?如果您正在遭受Uber帳號被封鎖的問題,請聯繫我們黑客團隊,我們可以為您解決它!以下是我們分析的Uber伺服器的核心技術和原理!
優步致力於在我們的全球市場提供更安全、更可靠的交通服務。為實現這一目標,優步嚴重依賴在各個層面做出數據驅動的決策,從預測高流量事件期間的乘客需求到識別和解決我們的司機合作夥伴註冊過程中的瓶頸。隨著時間的推移,對更多洞察力的需求導致超過100 PB 的分析資料需要透過我們基於Apache Hadoop ® 的大數據平台進行清理、儲存和服務,並以最小的延遲提供服務。自2014 年以來,我們一直致力於開發可確保資料可靠性、可擴展性和易用性的大數據解決方案,目前正專注於提高我們平台的速度和效率。
在本文中,我們深入探討了Uber 的Hadoop 平台之旅,並討論了我們下一步要建立什麼來擴展這個豐富而複雜的生態系統。
第一代:優步大數據的開端
在2014 年之前,我們有限的資料量可以裝入一些傳統的線上事務處理(OLTP) 資料庫(在我們的範例中是MySQL 和PostgreSQL)。為了利用這些數據,我們的工程師必須單獨存取每個資料庫或表,如果使用者需要組合來自不同資料庫的數據,則留給使用者編寫自己的程式碼。那時,我們沒有全球存取權限或所有儲存資料的全球視圖。事實上,我們的資料分散在不同的OLTP 資料庫中,總資料量大約是幾TB,存取這些資料的延遲非常快(通常不到一分鐘)。下面的圖1 概述了2014 年之前的資料架構:
隨著Uber 的業務呈指數級增長(無論是我們運營的城市/國家的數量還是每個城市使用該服務的乘客/司機的數量),傳入數據量也隨之增加,訪問和分析所有數據的需求也隨之增加。一個地方的資料要求我們建構第一代分析資料倉儲。為了讓Uber 盡可能以數據為驅動,我們需要確保分析師可以存取分析數據,所有這些都集中在一個地方。為實現這一目標,我們首先將資料使用者分為三大類:
城市營運團隊(數千名用戶):這些實地工作人員管理和擴展優步在每個市場的交通網絡。隨著我們的業務擴展到新的城市,成千上萬的城市營運團隊定期存取這些數據以回應司機和乘客的特定問題。
資料科學家和分析師(數百名用戶):這些是分佈在不同職能部門的分析師和科學家,他們需要數據來幫助為我們的用戶提供最佳的運輸和交付體驗,例如,在預測乘客需求以確保我們的未來無憂時服務。
工程團隊(數百名使用者):整個公司的工程師專注於建立自動化數據應用程序,例如我們的詐欺檢測和駕駛員入職平台。
我們的第一代分析資料倉儲專注於將Uber 的所有資料集中在一個地方,並簡化資料存取。對於前者,我們決定使用Vertica作為我們的資料倉儲軟體,因為它具有快速、可擴展且以列導向的設計。我們也開發了多個臨時ETL(提取、轉換和載入)作業,將資料從不同來源(即AWS S3、OLTP 資料庫、服務日誌等)複製到Vertica。為了實現後者,我們將SQL 標準化為我們解決方案的接口,並建立了一個線上查詢服務來接受使用者查詢並將它們提交給底層查詢引擎。下面的圖2 描述了這個分析資料倉儲:
我們第一個資料倉儲服務的發布對整個公司的工程師來說是一個巨大的成功。使用者第一次有了全域視圖,可以在一個地方存取所有資料。這導致大量新團隊使用數據分析作為其技術和產品決策的基礎。在幾個月內,我們的分析資料規模成長到數十TB,用戶數量增加到數百人。
使用SQL 作為簡單的標準介面使城市營運商能夠在不了解底層技術的情況下輕鬆地與資料互動。此外,不同的工程團隊開始根據這些數據(即uberPool、預付費用等)的資訊為用戶需求量身定制服務和產品,並組建了新團隊以更好地使用和服務這些數據(即我們的機器學習和實驗組)。
限制制
另一方面,我們的資料倉儲和傳入資料的廣泛使用揭示了一些限制。由於資料是透過臨時ETL 作業取得的,而且我們缺乏正式的模式通訊機制,因此資料可靠性成為一個問題。我們的來源資料大多是JSON 格式,攝取作業無法適應生產者程式碼的變化。
隨著我們公司的發展,擴展我們的資料倉儲變得越來越昂貴。為了降低成本,我們開始刪除舊的、過時的數據,為新數據騰出空間。最重要的是,我們的大部分大數據平台都無法水平擴展,因為主要目標是解除對集中資料存取或查看的關鍵業務需求,而且根本沒有足夠的時間來確保所有部分都可以水平擴展。我們的資料倉儲有效地用作資料湖,堆積所有原始資料以及執行所有資料建模和服務資料。
此外,由於生產資料的服務與下游資料消費者之間缺乏正式合同,將資料引入資料倉儲的ETL 作業也非常脆弱(靈活的JSON 格式的使用導致缺乏架構實施)來源資料)。如果不同的使用者在攝取期間執行不同的轉換,則可能會多次攝取相同的資料。這給我們的上游資料來源(即線上資料儲存)帶來了額外壓力,並影響了它們的服務品質。此外,這導致我們的倉庫中儲存了幾乎相同資料的多個副本,進一步增加了儲存成本。在資料品質問題的情況下,回填非常耗時且耗力,因為ETL 作業是臨時的並且依賴來源,資料預測和轉換是在攝取過程中進行的。由於我們的攝取工作缺乏標準化,也很難攝取任何新的資料集和類型。
第二代:Hadoop 的到來
為了解決這些限制,我們圍繞著Hadoop 生態系統重新設計了我們的大數據平台。更具體地說,我們引入了一個Hadoop 資料湖,其中所有原始資料僅從不同的線上資料儲存中提取一次,並且在提取期間沒有進行任何轉換。這種設計轉變顯著降低了我們線上資料儲存的壓力,並使我們能夠從臨時攝取作業過渡到可擴展的攝取平台。為了讓用戶訪問Hadoop 中的數據,我們引入了Presto以啟用交互式即席用戶查詢,引入了Apache Spark以促進對原始數據(SQL 和非SQL 格式)的編程訪問,以及Apache Hive充當超大查詢的主力。這些不同的查詢引擎允許用戶使用最能滿足他們需求的工具,使我們的平台更加靈活和易於存取。
為了保持平台的可擴展性,我們確保所有資料建模和轉換僅在Hadoop 中進行,從而在出現問題時實現快速回填和復原。只有最關鍵的建模表(即城市營運商即時利用的那些表來運行純粹、快速的SQL 查詢)被傳輸到我們的資料倉儲。這顯著降低了運行大型資料倉儲的營運成本,同時也將使用者引導至基於Hadoop 的查詢引擎,這些引擎是根據他們的特定需求而設計的。
我們也利用了Apache Parquet的標準列式檔案格式,在提供分析查詢服務的列式存取的情況下,由於壓縮率提高和運算資源增加,從而節省了儲存空間。此外,Parquet 與Apache Spark 的無縫整合使該解決方案成為存取Hadoop 資料的熱門選擇。下面的圖3 總結了我們第二代大數據平台的架構:
除了整合Hadoop資料湖,我們也讓這個生態系統中的所有資料服務都能水平擴展,進而提高我們大數據平台的效率和穩定性。特別是,擁有這種通用的水平可擴展性來滿足即時業務需求,使我們能夠將精力集中在建立下一代資料平台上,而不是解決臨時問題。
與資料管道易受上游資料格式變更影響的第一代平台不同,我們的第二次迭代允許我們對所有資料進行模式化,從JSON 過渡到Parquet 以將模式和資料儲存在一起。為實現這一點,我們建立了一個中央模式服務來收集、儲存和服務模式,以及不同的客戶端程式庫以將不同的服務與這個中央模式服務整合。脆弱的、臨時的資料攝取作業被一個標準平台所取代,以將所有來源資料以其原始的嵌套格式傳輸到Hadoop 資料湖中。透過Hadoop 中的水平可擴展批次作業攝取後,對資料進行的任何必要操作和轉換都會發生。
隨著Uber 的業務繼續以光速擴展,我們很快就擁有了數十PB 的數據。每天都有數十TB 的新資料加入我們的資料湖中,我們的大數據平台成長到超過10,000 個vcores,每天運行的批次作業超過100,000 個。這導致我們的Hadoop 資料湖成為所有分析Uber 資料的集中真實來源。
限制制
隨著公司規模不斷擴大,我們的生態系統中儲存了數十PB 的數據,我們面臨一系列新的挑戰。
首先,儲存在我們HDFS 中的大量小檔案(由於更多資料被攝取以及更多使用者編寫臨時批次作業產生更多輸出資料)開始為HDFS NameNode 增加額外壓力。最重要的是,數據延遲仍然遠遠無法滿足我們的業務需求。使用者每24 小時只能存取一次新數據,這對於做出即時決策來說太慢了。雖然將ETL 和建模轉移到Hadoop 中使這個過程更具可擴展性,但這些步驟仍然是瓶頸,因為這些ETL 作業必須在每次執行時重新建立整個建模表。雪上加霜的是,新資料的攝取和相關衍生表的建模都基於建立整個資料集的新快照並交換舊表和新表,以便為使用者提供對新資料的存取。攝取作業必須返回來源資料存儲,建立新快照,並在每次運行期間攝取或將整個資料集轉換為可使用的柱狀Parquet 檔案。隨著我們的資料儲存的成長,這些作業可能需要20 多個小時才能運行1,000 多個Spark 執行程式。
每項工作的很大一部分涉及從最新快照轉換歷史資料和新資料。雖然每天只為每個表添加超過100 GB 的新數據,但每次運行攝取作業都必須為該特定表轉換整個超過100 TB 的數據集。對於在每次運行時重新建立新派生表的ETL 和建模作業也是如此。由於歷史資料的更新率很高,這些作業必須依賴基於快照的來源資料攝取。從本質上講,我們的數據包含大量更新操作(即,乘客和司機評級或支援在完成行程後幾小時甚至幾天調整票價)。由於HDFS 和Parquet 不支援資料更新,因此所有攝取作業都需要從更新的來源資料建立新快照,將新快照攝取到Hadoop 中,將其轉換為Parquet 格式,然後交換輸出表以查看新資料。下面的圖4 總結了這些基於快照的資料攝取如何透過我們的大數據平台移動:
第三代:長期重建我們的大數據平台
到2017 年初,我們的大數據平台已被全公司的工程和營運團隊使用,使他們能夠在一個地方存取所有新數據和歷史數據。使用者可以輕鬆存取Hive、Presto、Spark、Vertica、Notebook和更多倉庫選項中的數據,所有這些都透過根據他們的需求量身定制的單一UI 入口網站。 HDFS 中有超過100 PB 的數據,我們的計算集群中有100,000 個虛擬核心,每天有100,000 個Presto 查詢,每天有10,000 個Spark 作業,每天有20,000 個Hive 查詢,我們的Hadoop 分析架構遇到了可擴展性限制,許多服務受到高資料延遲。
幸運的是,由於我們的底層基礎架構可以橫向擴展以滿足即時業務需求,因此我們有足夠的時間研究我們的資料內容、資料存取模式和用戶特定需求,以便在建立下一代之前確定最緊迫的問題。我們的研究揭示了四個主要痛點:
HDFS 可擴充性限制:許多依賴HDFS 擴展其大數據基礎設施的公司都面臨這個問題。依照設計,HDFS 受到其NameNode 容量的瓶頸,因此儲存大量小檔案會顯著影響效能。這種限制通常發生在資料大小超過10 PB 並且超過50-100 PB 時成為真正的問題。幸運的是,有相對簡單的解決方案可以將HDFS 從幾十PB 擴展到數百PB,例如利用ViewFS 和使用HDFS NameNode Federation。透過控制小檔案的數量並將我們資料的不同部分移至單獨的叢集(例如,HBase 和Yarn 應用程式日誌移至單獨的HDFS 叢集),我們能夠減輕這種HDFS 限制。
Hadoop 中更快的資料:優步的業務即時運作,因此,我們的服務需要存取盡可能新鮮的數據。因此,24 小時資料延遲對於許多用例來說太慢了,而且對更快的資料傳輸有巨大的需求。我們的第二代大數據平台基於快照的攝取方法效率低下,使我們無法以較低的延遲攝取資料。為了加快資料交付速度,我們不得不重新設計我們的管道,以便僅增量攝取更新的和新的資料。
支援Hadoop 和Parquet 中的更新和刪除:Uber 的數據包含許多更新,從過去幾天的年齡(例如,騎手或司機夥伴調整最近的旅行票價)到幾週(例如,騎手在他們下次乘坐時對他們上次旅行的評分)新行程)甚至幾個月(例如,由於業務需要回填或調整過去的數據)。透過基於快照的資料攝取,我們每24 小時攝取一次來源資料的新副本。換句話說,我們一次攝取所有更新,每天一次。然而,隨著對更新資料和增量攝取的需求,我們的解決方案必須能夠支援現有資料的更新和刪除操作。但是,由於我們的Big Data是儲存在HDFS和Parquet中的,無法直接支援對已有資料的更新操作。另一方面,我們的資料包含非常寬的表格(大約1,每個表000 列)具有五層或更多層的嵌套,而使用者查詢通常只涉及其中的幾列,這使我們無法以經濟高效率的方式使用非列格式。為了讓我們的大數據平台為長期成長做好準備,我們必須找到一種方法來解決我們HDFS 檔案系統中的這個限制,以便我們也可以支援更新/刪除操作。
更快的ETL 和建模:與原始資料攝取類似,ETL 和建模作業是基於快照的,需要我們的平台在每次運行時重建派生表。為了減少建模表的資料延遲,ETL 作業也需要成為增量的。這要求ETL 作業以增量方式僅從原始來源表中提取更改的資料並更新先前派生的輸出表,而不是每隔幾個小時重建整個輸出表。
介紹胡迪
考慮到上述要求,我們建立了Hadoop Upserts and Decremental (Hudi),這是一個開源Spark 函式庫,它在HDFS 和Parquet 之上提供了一個抽象層,以支援所需的更新和刪除操作。 Hudi 可用於任何Spark 作業,可水平擴展,並且僅依賴HDFS 運行。因此,任何需要支援歷史資料更新/刪除操作的大數據平台都可以利用Hudi。
Hudi 讓我們能夠更新、插入和刪除Hadoop 中現有的Parquet 資料。此外,Hudi 允許資料使用者僅增量拉取變更的數據,顯著提高查詢效率並允許增量更新派生建模表。
我們的Hadoop 生態系統中的原始資料會根據時間進行分區,任何舊分區都可能在以後接收更新。因此,對於依賴這些原始來源資料表的資料使用者或ETL 作業,了解哪個日期分割區包含更新資料的唯一方法是掃描整個來源表並根據一些已知的時間概念過濾掉記錄。這會導致計算量大的查詢需要全源表掃描,並阻止ETL 作業非常頻繁地執行。
使用Hudi,使用者可以簡單地傳遞他們的最後一個檢查點時間戳並檢索此後更新的所有記錄,無論這些更新是添加到最近日期分區的新記錄還是對舊資料的更新(例如,今天發生的新旅行與6 個月前的更新行程),而無需執行掃描整個來源表的昂貴查詢。
使用Hudi 庫,我們能夠從基於快照的原始資料攝取轉變為增量攝取模型,使我們能夠將資料延遲從24 小時減少到不到一小時。下面的圖5 描述了Hudi 合併後我們的大數據平台:
通用資料攝取
Hudi 並不是我們第三代大數據平台的唯一補充。我們也透過Apache Kafka 在儲存和大數據團隊之間正式移交了上游資料儲存變更。上游資料儲存事件(以及來自不同應用程式和服務的經典日誌訊息)使用統一的Avro 編碼流入Kafka,包括附加的標準全域元資料標頭(即時間戳記、行鍵、版本、資料中心資訊和原始主機)。 Streaming 和Big Data 團隊都使用這些儲存來更改日誌事件作為他們的來源輸入資料以進行進一步處理。
我們的資料攝取平台Marmaray以小批量運行並從Kafka 獲取上游儲存變更日誌,使用Hudi將它們應用到Hadoop 中的現有資料之上圖書館。如前所述,Hudi支援upsert操作,允許使用者新增記錄和更新或刪除歷史資料。 Ingestion Spark 作業每10-15 分鐘執行一次,在Hadoop 中提供30 分鐘的原始資料延遲(具有1-2 次攝取作業失敗或重試的餘裕)。為了避免將相同的來源資料多次攝取到Hadoop 中導致效率低下,我們的設定不允許在原始資料攝取期間進行任何轉換,因此我們決定將我們的原始資料攝取框架作為EL 平台而不是傳統的ETL 平台。在這種模式下,鼓勵使用者在上游資料以其原始巢狀格式登陸後,在Hadoop 中以批次模式執行所需的轉換操作。
自從對我們的大數據平台實施這些變更以來,我們透過避免不必要或低效的攝取操作節省了大量運算資源。我們的原始資料的可靠性也得到了顯著提高,因為我們現在可以避免在攝取過程中容易出錯的轉換。現在,用戶可以使用任何大數據處理引擎在原始來源資料之上運行他們的轉換。此外,如果出現任何問題,使用者可以再次重新執行他們的轉換,並透過使用更多的運算資源和更高的平行度來更快地完成批次轉換作業,從而仍然滿足他們的SLA。
增量資料建模
考慮到需要攝取到Hadoop 中的大量上游資料儲存(截至2017 年超過3,000 個原始Hadoop 表),我們還建立了一個通用攝取平台,以統一和可配置的方式促進將原始資料攝取到Hadoop 中。現在,我們的大數據平台以10-15 分鐘的資料延遲增量更新原始Hadoop 表,允許快速存取來源資料。然而,為了確保建模表也可以低延遲使用,我們也必須避免建模ETL 作業中的低效率(即,完全衍生表重新建立或完整來源原始表掃描)。事實上,Hudi 允許ETL 作業僅從來源表中取得更改的資料。
在ETL 作業期間使用Hudi writer 使我們能夠更新派生建模表中的舊分區,而無需重新建立整個分區或表。因此,我們的建模ETL 作業使用Hudi 讀取器以增量方式僅從來源表中獲取更改的數據,並使用Hudi 寫入器以增量方式更新派生的輸出表。現在,ETL 作業也在不到30 分鐘內完成,為Hadoop 中的所有派生表提供了不到一小時的端對端延遲。
為了提供Hadoop 表的資料使用者存取所有資料或只存取新資料或更新資料的不同選擇,使用Hudi 儲存格式的Hadoop 原始資料表提供了兩種不同的讀取模式:
最新模式視圖。提供當時整個Hadoop 表的整體視圖。此檢視包括所有記錄的最新合併值以及表中的所有現有記錄。
增量模式視圖。根據給定時間戳僅從特定Hadoop 表中取得新記錄和更新記錄。此視圖僅傳回最近插入或自最新檢查點以來更新的行。此外,如果特定行自上一個檢查點以來更新了不只一次,此模式將傳回所有這些中間變更的值(而不是僅傳回最新的合併值)
下面的圖6 描述了以Hudi 檔案格式儲存的所有Hadoop 表的這兩個讀取視圖:
使用者通常根據需要在這兩種表視圖之間進行切換。當他們執行臨時查詢以根據最新狀態分析資料時,他們使用表格的最新模式視圖(例如,獲取美國每個城市每週的總出行次數)。另一方面,當使用者有一個迭代作業或查詢需要只取得自最近一次執行以來更改的或新的記錄時,他們使用增量模式視圖。兩種視圖在任何時候都可用於所有Hadoop 表,使用者可以根據需要在不同模式之間切換。
標準化資料模型
除了提供相同表格的不同視圖外,我們還標準化了我們的資料模型,為所有原始Hadoop 資料提供兩種類型的表:
變更日誌歷史表。包含針對特定上游表收到的所有變更日誌的歷史記錄。該表使用戶能夠掃描給定表的更改歷史記錄,並且可以按鍵合併以提供每行的最新值。
合併快照表。容納上游表的最新合併視圖。此表包含每個鍵收到的所有歷史變更日誌的壓縮合併視圖。
下面的圖7 描述如何使用給定的變更日誌流為特定的上游來源資料儲存體產生不同的Hive 原始表:
但是,變更日誌流可能包含或不包含給定鍵的整行(所有列)。雖然合併快照表始終提供特定鍵的所有列,但如果變更日誌的上游流僅提供部分行變更日誌,則變更日誌歷史表可能是稀疏的,這是一種透過避免在只有一個或幾個時重新發送整行來提高效率的功能有限的列值被更改。如果使用者想要從變更日誌歷史表中取得變更的值並將其與合併的快照表連接起來以建立完整的資料行,我們還將合併快照表中相同鍵的日期分割區包含在變更日誌歷程表中。
下面的圖8 總結了我們大數據平台不同元件之間的關係:
第4 代:下一步是什麼?
自2017 年推出第三代大數據平台以來,整個公司的用戶都可以快速可靠地存取Hadoop 中的數據,但始終存在成長空間。以下我們總結了我們為提高資料品質、資料延遲、效率、可擴展性和可靠性而不斷增強Uber 大數據平台的努力。
數據品質
為了提高數據質量,我們確定了兩個需要改進的關鍵領域。首先,當某些上游資料儲存在儲存前不強制執行或檢查資料模式時(例如,儲存值為JSON blob 的鍵值),我們希望避免不符合模式的資料。這會導致不良資料進入我們的Hadoop 生態系統,進而影響所有依賴這些資料的下游使用者。為防止不良資料湧入,我們正在將所有上游資料儲存轉變為對資料內容執行強制性模式檢查,並在資料存在任何問題(例如,未確認模式)時拒絕資料輸入。
我們發現的第二個問題是實際數據內容的品質。雖然使用模式可確保資料包含正確的資料類型,但它們不會檢查實際資料值(例如,整數而不是[0,150] 之間的正數)。為了提高數據質量,我們正在擴展我們的模式服務以支援語義檢查。這些語義檢查(換句話說,Uber 特定的資料類型)允許我們在基本結構類型檢查之外對實際資料內容添加額外的約束。
數據延遲
我們的目標是將Hadoop 中的原始資料延遲減少到五分鐘,將建模表的資料延遲減少到十分鐘。這將允許更多用例從串流處理轉移到使用Hudi 增量資料拉取的更高效的小批量處理。
我們也正在擴展我們的Hudi 專案以支援額外的視圖模式,這將包括現有的讀取最佳化視圖,以及一個新的即時視圖,它顯示資料的延遲只有幾分鐘。這種即時視圖依賴我們稱為Merge-On-Read或Hudi 2.0 的開源解決方案(以及Hudi 的一部分)。
數據效率
為了提高數據效率,我們正在擺脫對任何服務依賴專用硬體的依賴,轉向服務碼頭化。此外,我們正在統一Hadoop 生態系統內部和跨Hadoop 生態系統的所有資源調度程序,以彌合整個公司的Hadoop 和非數據服務之間的差距。這允許所有作業和服務以統一的方式進行調度,而不管它們將在何種媒體中執行。隨著Uber 的發展,資料局部性將成為Hadoop 應用程式的一大問題,成功的統一資源管理器可以將所有現有的調度程序整合在一起(即Yarn、Mesos 和Myriad)。
可擴展性和可靠性
作為我們提高平台可擴展性和可靠性的努力的一部分,我們發現了幾個與可能的邊緣情況相關的問題。雖然我們的攝取平台是作為一個通用的、可插拔的模型開發的,但上游資料的實際攝取仍然包括大量依賴來源的管道配置,這使得攝取管道變得脆弱,並增加了運行數千個這些管道的維護成本。
為確保無論數據來源如何,我們都能統一獲取數據,我們與Uber 的數據存儲團隊合作啟動了一個項目,以統一所有上游數據源的變更日誌的內容、格式和元數據,無論其技術構成如何。該專案將確保有關這些特定上游技術的資訊僅是添加到實際變更日誌值的附加元資料(而不是針對不同資料來源具有完全不同的變更日誌內容和元資料),並且無論上游來源如何,資料攝取都會發生。
最後,我們的下一個版本的Hudi 將允許我們在幾分鐘內為所有資料來源預設產生更大的Parquet 檔案(超過1 GB,而我們目前的128 兆位元組)。它還將消除有關更新與插入比率的任何敏感性。 Hudi 1.0 依賴一種稱為寫入時複製的技術,只要有更新的記錄,它就會重寫整個來源Parquet 檔案。這顯著增加了寫入放大,尤其是當更新與插入的比率增加時,並阻止在HDF 中建立更大的Parquet 檔案。新版胡迪旨在透過將更新記錄儲存在單獨的增量檔案中並根據給定策略將其與基本Parquet 檔案異步合併(例如,當有足夠數量的更新資料來分攤重寫大型基本檔案的成本時)來克服此限制鑲木地板文件)。將Hadoop 資料儲存在更大的Parquet 檔案中以及更可靠的來源獨立資料攝取平台將使我們的分析資料平台在未來幾年隨著業務的蓬勃發展而繼續成長。
向前進
Uber 的資料組織是資料平台、資料基礎、串流媒體和即時平台以及大數據團隊之間的跨職能協作,以建立支援Uber 分析資料基礎架構所需的程式庫和分散式服務。如果您對挑戰規模極限的大數據挑戰感興趣,請考慮申請加入我們位於舊金山和帕洛阿爾託的團隊。
如果您有興趣與我們合作,請將您的履歷發送至 [email protected]
Reza Shiftehfar 目前領導Uber 的Hadoop 平台團隊。他的團隊協助建構和發展優步可靠且可擴展的大數據平台,利用Apache Hadoop、Apache Hive、Apache Kafka、Apache Spark 和Presto 等技術為PB 級資料提供服務。 Reza 是Uber 資料團隊的創始工程師之一,協助將Uber 的資料平台從幾TB 擴展到超過100 PB,同時將資料延遲從24 小時以上減少到幾分鐘。
Apache® , Apache Hadoop® , 阿帕奇蜂巢 、Apache Spark 、Hadoop® , 蜂房 和Spark 是Apache Software Foundation 在美國和/或其他國家的註冊商標或商標。使用這些標誌並不意味著Apache 軟體基金會對其背書。