免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Uber的數(shù)據(jù)治理

數(shù)據(jù)賦能 Uber

Uber 通過(guò)賦能數(shù)十億打車(chē)和快遞服務(wù),連接數(shù)以百萬(wàn)計(jì)的乘客、企業(yè)、餐館、司機(jī)和快遞員,徹底改變了世界的出行方式。這個(gè)龐大的交通平臺(tái)的核心是大數(shù)據(jù)和數(shù)據(jù)科學(xué),它們支撐著 Uber 的所有工作,比如更好的定價(jià)和匹配、欺詐檢測(cè)、降低預(yù)計(jì)達(dá)到時(shí)間(ETA)和實(shí)驗(yàn)。每天 PB 級(jí)的數(shù)據(jù)被收集和處理,成千上萬(wàn)用戶(hù)根據(jù)這些數(shù)據(jù)進(jìn)行分析決策,從而構(gòu)建 / 改進(jìn)這些產(chǎn)品。

規(guī)模擴(kuò)展帶來(lái)的問(wèn)題

雖然我們能夠擴(kuò)展我們的數(shù)據(jù)系統(tǒng),但以前,對(duì)于一些重要的數(shù)據(jù)問(wèn)題,我們沒(méi)有給予足夠的關(guān)注,在規(guī)模擴(kuò)大之后,它們變得更加重要,涉及的具體問(wèn)題包括:

  • 數(shù)據(jù)重復(fù): 一些關(guān)鍵數(shù)據(jù)和指標(biāo)缺少一個(gè)真實(shí)的數(shù)據(jù)來(lái)源,這導(dǎo)致了重復(fù)、不一致,并且在使用時(shí)會(huì)有很多困惑。消費(fèi)者必須從解決業(yè)務(wù)問(wèn)題中抽出時(shí)間來(lái)做大量的盡職調(diào)查,從而彌補(bǔ)這一點(diǎn)。使用自助服務(wù)工具創(chuàng)建的數(shù)十萬(wàn)個(gè)數(shù)據(jù)集加劇了這個(gè)問(wèn)題,因?yàn)槲覀儫o(wú)法明顯看出哪個(gè)數(shù)據(jù)集更重要。

  • 發(fā)現(xiàn)問(wèn)題: 如果沒(méi)有豐富的元數(shù)據(jù)和分面搜索,在數(shù)十萬(wàn)數(shù)據(jù)集中發(fā)現(xiàn)數(shù)據(jù)是很困難的。糟糕的發(fā)現(xiàn)導(dǎo)致了重復(fù)的數(shù)據(jù)集、重復(fù)的工作和不一致的答案(這取決于回答問(wèn)題時(shí)所使用的數(shù)據(jù))。

  • 工具互不連通: 數(shù)據(jù)流經(jīng)許多工具、系統(tǒng)和組織。但是我們的工具沒(méi)有相互集成,導(dǎo)致工作重復(fù)和糟糕的開(kāi)發(fā)體驗(yàn)——例如,必須在多個(gè)工具之間復(fù)制粘貼文檔和所有者信息;開(kāi)發(fā)者無(wú)法自信地修改數(shù)據(jù)模式,因?yàn)椴磺宄谙掠问侨绾问褂玫摹?/span>

  • 日志不一致: 在移動(dòng)設(shè)備上的日志是手動(dòng)完成的;日志沒(méi)有統(tǒng)一的結(jié)構(gòu),我們無(wú)法通過(guò)簡(jiǎn)單、一致的方法度量用戶(hù)的實(shí)際行為,只能通過(guò)推斷來(lái)判定(這低效且容易出錯(cuò))。

  • 流程缺失: 缺乏跨團(tuán)隊(duì)的數(shù)據(jù)工程流程,導(dǎo)致各個(gè)團(tuán)隊(duì)的成熟度不同,團(tuán)隊(duì)間沒(méi)有一致的數(shù)據(jù)質(zhì)量定義或指標(biāo)。

  • 所有權(quán)和 SLA 缺失: 數(shù)據(jù)集沒(méi)有明確的屬主——它們通常沒(méi)有質(zhì)量保證、錯(cuò)誤修復(fù)的 SLA 不一致,電話(huà)支持、事件管理與我們對(duì)服務(wù)的管理方式相去甚遠(yuǎn)。

這些問(wèn)題并不是 Uber 獨(dú)有的——根據(jù)我們與其它公司的工程師和數(shù)據(jù)科學(xué)家的交流,這些問(wèn)題很常見(jiàn),特別是對(duì)于那些增長(zhǎng)非常快的公司。由于服務(wù)故障 / 中斷即時(shí)可見(jiàn),所以我們對(duì)服務(wù)和服務(wù)質(zhì)量的關(guān)注比較多,而對(duì)數(shù)據(jù)和相關(guān)工具的關(guān)注往往比較少。但在規(guī)模比較大時(shí),解決這些問(wèn)題,并使其與服務(wù)工具 / 管理的嚴(yán)格程度保持一致,變得極其重要,尤其是如果數(shù)據(jù)在產(chǎn)品功能和創(chuàng)新中扮演著關(guān)鍵角色,正如數(shù)據(jù)在 Uber 的角色一樣。

需要一種整體的數(shù)據(jù)解決方案

下圖顯示了從移動(dòng)應(yīng)用程序和服務(wù)到數(shù)據(jù)倉(cāng)庫(kù)和最終消費(fèi)面的高級(jí)數(shù)據(jù)流。我們最初只在數(shù)據(jù)流中出現(xiàn)數(shù)據(jù)問(wèn)題的地方應(yīng)急性地解決了這些問(wèn)題的癥狀,而沒(méi)有解決根本問(wèn)題。我們認(rèn)識(shí)到,需要一種整體的方案來(lái)解決這些問(wèn)題,并徹底解決其根源。我們的目標(biāo)是重新組織數(shù)據(jù)日志系統(tǒng)、工具和流程,從而逐步改變整個(gè) Uber 的數(shù)據(jù)質(zhì)量。我們召集了橫跨端到端數(shù)據(jù)流堆棧的團(tuán)隊(duì),其中包括來(lái)自堆棧各個(gè)部分的工程師和數(shù)據(jù)科學(xué)家,最終修改了 20 多個(gè)現(xiàn)有系統(tǒng)。

為了將精力集中在整體思考上,我們從 Rider 應(yīng)用程序上獲取了與行程和會(huì)話(huà)信息相關(guān)的關(guān)鍵數(shù)據(jù)“切片”,并嘗試為它們構(gòu)建一個(gè)真實(shí)數(shù)據(jù)源(source of truth,SoT),并且修復(fù)應(yīng)用程序上的日志記錄、數(shù)據(jù)處理工具、數(shù)據(jù)本身以及將其維護(hù)成 SoT 所需的過(guò)程。

數(shù)據(jù)處理的基本原則

與試圖隱藏?cái)?shù)據(jù)并向服務(wù)外部公開(kāi)狹窄接口的服務(wù)不同,倉(cāng)庫(kù)中的離線(xiàn)數(shù)據(jù)更多的是公開(kāi)來(lái)自相關(guān)服務(wù)和領(lǐng)域的數(shù)據(jù),以便一起進(jìn)行分析。我們的一個(gè)關(guān)鍵認(rèn)識(shí)是,為了做好這一點(diǎn),我們不僅要解決數(shù)據(jù)工具的問(wèn)題,還要解決數(shù)據(jù)的人員和流程方面的問(wèn)題。因此我們提出了一些指導(dǎo)原則:

  • 數(shù)據(jù)即代碼: 數(shù)據(jù)應(yīng)該作為代碼對(duì)待。對(duì)數(shù)據(jù)工件的創(chuàng)建、棄用和關(guān)鍵更改應(yīng)該通過(guò)設(shè)計(jì)評(píng)審流程,并使用適當(dāng)?shù)臅?shū)面文檔,而且是以客戶(hù)視角編寫(xiě)的文檔。必須為模型更改指定審閱者,他們?cè)诟穆涞刂斑M(jìn)行評(píng)審。模型復(fù)用 / 擴(kuò)展優(yōu)先于創(chuàng)建新模型。數(shù)據(jù)工件具有與之相關(guān)聯(lián)的測(cè)試,我們要對(duì)其進(jìn)行持續(xù)測(cè)試。通常,這是用于 API 服務(wù)的實(shí)踐,在考慮數(shù)據(jù)時(shí),我們需要同樣嚴(yán)格。

  • 數(shù)據(jù)要有屬主: 數(shù)據(jù)就是代碼,所有的代碼必須有屬主。每個(gè)數(shù)據(jù)工件必須有一個(gè)明確的所有者,一個(gè)明確的目的,并且在用完后廢棄。

  • 數(shù)據(jù)質(zhì)量可知: 數(shù)據(jù)工件必須有數(shù)據(jù)質(zhì)量 SLA,以及事件報(bào)告和管理,就像我們對(duì)服務(wù)所做的那樣。所有者負(fù)責(zé)維護(hù)這些服務(wù)協(xié)議。

  • 加速數(shù)據(jù)生產(chǎn)效率: 數(shù)據(jù)工具的設(shè)計(jì)必須可以改進(jìn)生產(chǎn)者和消費(fèi)者之間的協(xié)作,必要時(shí)必須有所有者、文檔和審閱者。數(shù)據(jù)工具必須與其它相關(guān)工具無(wú)縫集成,讓我們不必再考慮必要的元數(shù)據(jù)。數(shù)據(jù)工具應(yīng)配備與服務(wù)相同級(jí)別的開(kāi)發(fā)人員,提供在更改落地之前編寫(xiě)和運(yùn)行測(cè)試的能力,在轉(zhuǎn)入生產(chǎn)環(huán)境之前在準(zhǔn)生產(chǎn)環(huán)境中測(cè)試這些更改的能力,并與現(xiàn)有的監(jiān)控 / 告警生態(tài)系統(tǒng)很好地集成。

  • 針對(duì)數(shù)據(jù)的組織: 團(tuán)隊(duì)的目標(biāo)應(yīng)該是“全棧”配置,因此,必要的數(shù)據(jù)工程人才就可以對(duì)數(shù)據(jù)的整個(gè)生命周期進(jìn)行長(zhǎng)期的觀察。雖然更為核心的團(tuán)隊(duì)有復(fù)雜的數(shù)據(jù)集,但是大多數(shù)生成數(shù)據(jù)的團(tuán)隊(duì)?wèi)?yīng)該以本地所有權(quán)為目標(biāo)。我們應(yīng)該有必要的培訓(xùn)材料,并優(yōu)先培訓(xùn)工程師,使其相當(dāng)精通數(shù)據(jù)的生產(chǎn)和消費(fèi)實(shí)踐。最后,團(tuán)隊(duì)領(lǐng)導(dǎo)應(yīng)該對(duì)他們生產(chǎn)和使用的數(shù)據(jù)的所有權(quán)和質(zhì)量負(fù)責(zé)。

已經(jīng)解決的問(wèn)題

在本文的余下部分,我們將重點(diǎn)介紹我們編程體驗(yàn)中一些最有用也最有趣的收獲。

數(shù)據(jù)質(zhì)量和等級(jí)

由于數(shù)據(jù)質(zhì)量差,我們經(jīng)受了許多艱苦的工作。我們看到過(guò)這樣的例子:實(shí)驗(yàn)測(cè)量值不準(zhǔn)確,導(dǎo)致了大量的體力勞動(dòng),降低了驗(yàn)證和修正數(shù)據(jù)的效率。事實(shí)證明,隨著大數(shù)據(jù)的應(yīng)用,這個(gè)問(wèn)題變得越來(lái)越普遍——據(jù) IBM的一份研究 和哈佛商業(yè)評(píng)論(HBR)估計(jì),由數(shù)據(jù)驅(qū)動(dòng)的企業(yè)將因數(shù)據(jù)不足而遭受巨大的負(fù)面影響。

為了減少繁重的工作和不良的業(yè)務(wù)影響,我們希望開(kāi)發(fā)一種用于討論數(shù)據(jù)質(zhì)量的通用語(yǔ)言和框架,以便任何人都可以以一致的預(yù)期來(lái)生產(chǎn)和消費(fèi)數(shù)據(jù)。為了實(shí)現(xiàn)這一點(diǎn),我們發(fā)展了兩個(gè)主要概念:標(biāo)準(zhǔn)數(shù)據(jù)質(zhì)量檢查和數(shù)據(jù)集等級(jí)定義。

數(shù)據(jù)質(zhì)量

數(shù)據(jù)質(zhì)量是一個(gè)復(fù)雜的話(huà)題,有許多不同的方面值得深入研究,因此我們將把數(shù)據(jù)質(zhì)量的討論局限于我們已經(jīng)取得重大進(jìn)展的領(lǐng)域,而將其它方面留待以后討論。Uber 生成和使用數(shù)據(jù)的環(huán)境對(duì)我們選擇關(guān)注哪些數(shù)據(jù)質(zhì)量領(lǐng)域起著重要的作用。雖然其中有些也能適用于其他人,但有些不是。在 Uber,數(shù)據(jù)生產(chǎn)者和消費(fèi)者面臨的一系列常見(jiàn)問(wèn)題是:如何在分析最新數(shù)據(jù)和完整數(shù)據(jù)之間進(jìn)行權(quán)衡?如果在不同的數(shù)據(jù)中心并行運(yùn)行管道,我們?nèi)绾谓忉尣煌瑪?shù)據(jù)中心的數(shù)據(jù)一致性?在給定的數(shù)據(jù)集上應(yīng)該運(yùn)行什么語(yǔ)義質(zhì)量檢查?我們想要選擇一組檢查,為解釋這些問(wèn)題提供一個(gè)框架。

數(shù)據(jù)質(zhì)量檢查

經(jīng)過(guò)幾次迭代,我們得到了下面描述的 5 種主要類(lèi)型的數(shù)據(jù)質(zhì)量檢查。每個(gè)數(shù)據(jù)集都必須附帶這些檢查并配置默認(rèn)的 SLA:

  • 新鮮度: 從數(shù)據(jù)生成到數(shù)據(jù)在目標(biāo)系統(tǒng)中達(dá)到 99.9% 完成度之間的時(shí)間延遲,包括完整性水?。J(rèn)設(shè)置為 39 秒),因?yàn)橹粌?yōu)化新鮮度而不考慮完整性會(huì)導(dǎo)致低質(zhì)量的決策。

  • 完整性: 目標(biāo)系統(tǒng)中的行數(shù)與源系統(tǒng)中的行數(shù)之比。

  • 重復(fù): 具有重復(fù)主鍵或唯一鍵的行數(shù)百分比,在原始數(shù)據(jù)表中默認(rèn)為 0% 重復(fù),而在建模表中允許少量重復(fù)。

  • 跨數(shù)據(jù)中心的一致性: 將當(dāng)前數(shù)據(jù)中心中的數(shù)據(jù)集副本與另一個(gè)數(shù)據(jù)中心中的副本進(jìn)行對(duì)比時(shí),數(shù)據(jù)丟失的百分比。

  • 語(yǔ)義檢查: 捕獲數(shù)據(jù)字段的關(guān)鍵屬性,例如 null/not-null、唯一性、不同值的百分比和值的范圍。

數(shù)據(jù)集所有者可以選擇提供不同的 SLA,并向消費(fèi)者提供適當(dāng)?shù)奈臋n和解釋——例如,根據(jù)數(shù)據(jù)集的性質(zhì),人們可能想要犧牲完整性來(lái)?yè)Q取新鮮度(比如流式數(shù)據(jù)集)。相似地,消費(fèi)者可以選擇基于這些指標(biāo)來(lái)消費(fèi)數(shù)據(jù)集——基于完整性觸發(fā)器而不是簡(jiǎn)單地基于時(shí)間觸發(fā)器來(lái)運(yùn)行管道。

我們正繼續(xù)研究更復(fù)雜的檢查,包括跨數(shù)據(jù)集概念的一致性,以及在上述時(shí)間維度檢查的基礎(chǔ)上進(jìn)行異常檢測(cè)。

數(shù)據(jù)等級(jí)

除了質(zhì)量度量之外,擁有一種將數(shù)據(jù)集與業(yè)務(wù)不同等級(jí)的重要性關(guān)聯(lián)起來(lái)的方法也是必要的,這樣就很容易突出顯示最重要的數(shù)據(jù)。對(duì)于服務(wù),我們就是通過(guò)分配“等級(jí)”(基于數(shù)據(jù)的業(yè)務(wù)重要性)實(shí)現(xiàn)這一點(diǎn)的。這些等級(jí)有助于確定停機(jī)的影響,并提供了關(guān)于哪些數(shù)據(jù)等級(jí)應(yīng)用于哪些目的的指導(dǎo)原則。例如,如果某些數(shù)據(jù)影響合規(guī)性、收入或品牌,那么它應(yīng)該被標(biāo)記為第 1 級(jí)或第 2 級(jí)。由用戶(hù)創(chuàng)建的用于不太重要的臨時(shí)搜索的臨時(shí)數(shù)據(jù),默認(rèn)標(biāo)記為第 5 級(jí),如果不使用則可以在一段固定時(shí)間后刪除。數(shù)據(jù)等級(jí)還確定提交的事件的級(jí)別,以及針對(duì)數(shù)據(jù)集創(chuàng)建的修復(fù) bug 的 SLA。分級(jí)的一個(gè)副產(chǎn)品是數(shù)據(jù)資產(chǎn)的系統(tǒng)性清單,我們依賴(lài)這些資產(chǎn)來(lái)做業(yè)務(wù)關(guān)鍵決策。這樣做的另一個(gè)好處是,對(duì)相似或不再作為事實(shí)來(lái)源的數(shù)據(jù)集進(jìn)行顯式去重。最后,通過(guò)分級(jí)實(shí)現(xiàn)的可見(jiàn)性有助于我們重構(gòu)數(shù)據(jù)集,從而可以改進(jìn)建模、數(shù)據(jù)粒度一致性和規(guī)范化級(jí)別。

我們已經(jīng)開(kāi)發(fā)了自動(dòng)化方法來(lái)為機(jī)構(gòu)生成“分級(jí)報(bào)告”,顯示需要分級(jí)的數(shù)據(jù)集、分級(jí)數(shù)據(jù)的使用情況等,作為機(jī)構(gòu)的“數(shù)據(jù)健康”的衡量指標(biāo)。我們還跟蹤這些指標(biāo)作為“工程卓越性”標(biāo)準(zhǔn)。隨著越來(lái)越多的采用和反饋,我們不斷迭代具體的定義和度量方法,進(jìn)一步改進(jìn)它們。

數(shù)據(jù)質(zhì)量工具

如果我們不將這些定義自動(dòng)化并使其易于使用和應(yīng)用,僅僅擁有這些定義是不夠的。我們將多個(gè)現(xiàn)有的數(shù)據(jù)質(zhì)量工具整合到一個(gè)實(shí)現(xiàn)了這些定義的工具中。如果有意義,我們可以自動(dòng)生成測(cè)試(對(duì)于原始數(shù)據(jù),即由 Kafka 主題轉(zhuǎn)儲(chǔ)到數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù),除了語(yǔ)義測(cè)試之外,我們還可以自動(dòng)生成四類(lèi)測(cè)試),并且通過(guò)最小化數(shù)據(jù)集所有者的輸入簡(jiǎn)化了測(cè)試創(chuàng)建過(guò)程。這些標(biāo)準(zhǔn)檢查為每個(gè)數(shù)據(jù)集提供了一個(gè)最小測(cè)試集,同時(shí),該工具也為生產(chǎn)者提供了足夠的靈活性,他們只需提供一個(gè) SQL 查詢(xún)就可以創(chuàng)建新的測(cè)試。我們學(xué)到了許多有趣的經(jīng)驗(yàn),包括如何以較低的開(kāi)銷(xiāo)擴(kuò)展這些測(cè)試,如何簡(jiǎn)化為數(shù)據(jù)集構(gòu)建一套測(cè)試的抽象,何時(shí)調(diào)度測(cè)試以減少誤報(bào)和噪音警報(bào),如何將這些測(cè)試應(yīng)用于流式數(shù)據(jù)集,以及我們希望在以后的文章中發(fā)布的更多內(nèi)容。

Databook 和元數(shù)據(jù)

如前所述,我們有成千上萬(wàn)的數(shù)據(jù)集和成千上萬(wàn)的用戶(hù)。如果我們考慮其它數(shù)據(jù)資產(chǎn)——報(bào)表、機(jī)器學(xué)習(xí)特征、度量、儀表盤(pán)——我們管理的資產(chǎn)數(shù)量會(huì)大得多。我們希望確保:a) 消費(fèi)者使用正確的數(shù)據(jù)做出決策,b) 生產(chǎn)者做出明智的決策以改進(jìn)數(shù)據(jù)、確定錯(cuò)誤修復(fù)的優(yōu)先級(jí)等。為此,我們需要一個(gè)單一的目錄,該目錄收集所有數(shù)據(jù)資產(chǎn)的元數(shù)據(jù),并根據(jù)用戶(hù)的需求向他們提供正確的信息。事實(shí)上,我們意識(shí)到,糟糕的發(fā)現(xiàn)曾導(dǎo)致生產(chǎn)者和消費(fèi)者產(chǎn)生重復(fù)、冗余數(shù)據(jù)集的惡性循環(huán),然后這些數(shù)據(jù)集就被廢棄了。

我們希望向用戶(hù)提供關(guān)于每個(gè)數(shù)據(jù)工件(表、列、度量)的詳細(xì)元數(shù)據(jù):

  • 基礎(chǔ)元數(shù)據(jù): 例如文檔、所有權(quán)信息、管道、生成數(shù)據(jù)的源代碼、示例數(shù)據(jù)、譜系和工件層

  • 使用元數(shù)據(jù): 關(guān)于什么人在什么時(shí)候使用這些元數(shù)據(jù)、流行查詢(xún)和一起使用的工件的統(tǒng)計(jì)

  • 質(zhì)量元數(shù)據(jù): 對(duì)數(shù)據(jù)進(jìn)行測(cè)試,何時(shí)運(yùn)行、哪些測(cè)試通過(guò),以及數(shù)據(jù)提供的聚合 SLA

  • 成本元數(shù)據(jù): 用于計(jì)算和存儲(chǔ)數(shù)據(jù)的資源,包括貨幣成本

  • Bug 和 SLA: 針對(duì)工件、事件、近期預(yù)警和總體 SLA 提交的 bug,從而響應(yīng)所有者的問(wèn)題

創(chuàng)建這個(gè)單一的元數(shù)據(jù)目錄并提供一個(gè)功能強(qiáng)大的用戶(hù)界面(具有基于上下文的搜索和發(fā)現(xiàn)功能),對(duì)于實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者之間的協(xié)作、減少使用數(shù)據(jù)的工作量以及提升總體數(shù)據(jù)質(zhì)量至關(guān)重要。

為了實(shí)現(xiàn)這個(gè)目標(biāo),我們對(duì)內(nèi)部元數(shù)據(jù)目錄 Databook 的后端和 UI 進(jìn)行了徹底的改進(jìn)。我們對(duì)元數(shù)據(jù)詞匯表進(jìn)行了標(biāo)準(zhǔn)化,使其易于向現(xiàn)有實(shí)體添加新的元數(shù)據(jù)屬性,設(shè)計(jì)了擴(kuò)展性,以便以最小的工作量輕松定義新的實(shí)體類(lèi)型,并將我們的大多數(shù)關(guān)鍵工具集成到該系統(tǒng)中,并將它們的元數(shù)據(jù)發(fā)布到這個(gè)中心位置,把各種數(shù)據(jù)資產(chǎn)、工具和用戶(hù)連接起來(lái)。改進(jìn)后的用戶(hù)界面更清晰,并且用戶(hù)可以更方便地過(guò)濾和縮小所需數(shù)據(jù)的范圍。經(jīng)過(guò)這些改進(jìn)后,工具使用量急劇增加。我們?cè)谶@篇博客中詳細(xì)介紹了這些變化:Turning Metadata Into Insights with Databook。

應(yīng)用程序上下文日志

為了了解和改進(jìn)產(chǎn)品,讓我們的應(yīng)用程序打印日志來(lái)獲取實(shí)際的用戶(hù)體驗(yàn)是至關(guān)重要的。我們希望測(cè)量用戶(hù)體驗(yàn),而不是推斷用戶(hù)體驗(yàn),但是每個(gè)團(tuán)隊(duì)都有一個(gè)自定義的日志打印方法,導(dǎo)致在如何測(cè)量用戶(hù)體驗(yàn)方面存在不一致。我們希望標(biāo)準(zhǔn)化整個(gè)應(yīng)用系統(tǒng)中各個(gè)團(tuán)隊(duì)的日志打印方式,甚至“平臺(tái)化”日志打印,這樣開(kāi)發(fā)者就可以在開(kāi)發(fā)所有產(chǎn)品功能時(shí)免于去考慮如何通過(guò)日志打印必需信息,例如:向用戶(hù)展示了什么、與用戶(hù)交互時(shí)應(yīng)用程序的狀態(tài)、交互類(lèi)型和交互持續(xù)時(shí)間。

在深入研究了 Uber 用來(lái)構(gòu)建應(yīng)用程序的移動(dòng)框架之后,我們意識(shí)到,移動(dòng)應(yīng)用開(kāi)發(fā)框架(之前是開(kāi)源的)已經(jīng)內(nèi)置了一個(gè)天然的結(jié)構(gòu),當(dāng)用戶(hù)交互時(shí),可以提供有關(guān)應(yīng)用程序狀態(tài)的關(guān)鍵信息。自動(dòng)獲取 RIB 層次 將使我們了解應(yīng)用程序的狀態(tài),以及哪個(gè) RIB(大致可以將它們當(dāng)作組件)當(dāng)前是活躍的。應(yīng)用程序上的不同屏幕映射到不同的 RIB 層次。

基于這種直覺(jué),我們開(kāi)發(fā)了一個(gè)庫(kù)來(lái)捕獲當(dāng)前的 RIB 層次,將其序列化,并且自動(dòng)將其附加到應(yīng)用程序觸發(fā)的每個(gè)分析事件。在接收這些信息的后端網(wǎng)關(guān)中,我們實(shí)現(xiàn)了從 RIB 層次結(jié)構(gòu)到一組靈活的元數(shù)據(jù)(例如屏幕名稱(chēng)、應(yīng)用程序中階段的名稱(chēng),等等)的輕量級(jí)映射。這些元數(shù)據(jù)可以獨(dú)立演化,生產(chǎn)者或消費(fèi)者都可以添加更多信息,而不必依賴(lài)移動(dòng)應(yīng)用程序的更改(由于構(gòu)建和發(fā)布周期長(zhǎng)達(dá)數(shù)周,因此更改速度慢且成本高)。在后端,網(wǎng)關(guān)在寫(xiě)入 Kafka 之前,除了序列化狀態(tài)之外,還會(huì)將這些額外的元數(shù)據(jù)附加到分析事件中。網(wǎng)關(guān)上的這個(gè)映射也可以通過(guò) API 獲得,這樣倉(cāng)庫(kù)作業(yè)就可以在映射演進(jìn)時(shí)回填數(shù)據(jù)。

除了上面的核心問(wèn)題之外,我們還必須解決一些其它問(wèn)題,這里我們將不再詳細(xì)介紹,例如:優(yōu)化序列化的 RIB 層次結(jié)構(gòu)來(lái)減少分析負(fù)載大小,使映射高效,通過(guò)自定義測(cè)試框架在應(yīng)用程序更改時(shí)保持映射正確,將 RIB 樹(shù)正確映射到狀態(tài),對(duì)屏幕和狀態(tài)名稱(chēng)進(jìn)行標(biāo)準(zhǔn)化,等等。

雖然這個(gè)庫(kù)并沒(méi)有完全解決我們要解決的所有日志問(wèn)題,但它確實(shí)為日志提供了一個(gè)結(jié)構(gòu),使許多分析變得更容易,如下所述。我們正在迭代這個(gè)庫(kù)來(lái)解決提出的其它問(wèn)題。

騎手漏斗分析

使用上面的日志框架生成的數(shù)據(jù),我們能夠極大地簡(jiǎn)化對(duì)騎手行為的漏斗分析。我們?cè)趲讉€(gè)小時(shí)內(nèi)就建立了一個(gè)儀表盤(pán),這在過(guò)去可能需要幾個(gè)星期的時(shí)間。這些數(shù)據(jù)目前正在為許多實(shí)驗(yàn)監(jiān)控和其它儀表盤(pán)提供支持,讓我們可以了解用戶(hù)行為。

度量標(biāo)準(zhǔn)化

當(dāng)我們啟動(dòng) Data180 時(shí),公司中有許多度量代碼庫(kù)。我們?cè)u(píng)估了這些解決方案的優(yōu)缺點(diǎn),并在一個(gè)名為 uMetric 的代碼庫(kù)上進(jìn)行了標(biāo)準(zhǔn)化。事實(shí)上,它不僅僅是一個(gè)代碼庫(kù)——它具有高級(jí)功能,例如讓用戶(hù)專(zhuān)注于 YAML 格式的定義,并通過(guò)為不同的查詢(xún)系統(tǒng)(例如 Hive/Presto/Spark)生成查詢(xún)、為度量生成流式處理和批處理管道、自動(dòng)創(chuàng)建數(shù)據(jù)質(zhì)量測(cè)試等省去了大量的工作。這個(gè)系統(tǒng)正在得到更廣泛的采用,我們也在投資進(jìn)一步加強(qiáng)它。我們正在自動(dòng)化重復(fù)和近似重復(fù)的度量檢測(cè),將此系統(tǒng)與 Databook 和其它數(shù)據(jù)消費(fèi)界面集成,這樣消費(fèi)者就可以直接消費(fèi)度量結(jié)果,而不是復(fù)制和運(yùn)行度量 SQL(調(diào)整 SQL 更容易出錯(cuò)及導(dǎo)致度量重復(fù)),改進(jìn)了自助服務(wù)的性質(zhì),并在事故發(fā)生之前檢測(cè)到錯(cuò)誤,等等。這種標(biāo)準(zhǔn)化幫助我們大大減少了消費(fèi)時(shí)的重復(fù)和混亂。這個(gè)系統(tǒng)在這個(gè)博客中有詳細(xì)的描述——The Journey Towards Metric Standardization。

其它工具和流程變更

除了上面列出的更改之外,我們還實(shí)施了其它幾個(gè)工具和流程更改,以改進(jìn)我們的數(shù)據(jù)文化,簡(jiǎn)要介紹如下:

共享數(shù)據(jù)模型: 為了避免重復(fù)定義相同概念的模式(這很常見(jiàn)),我們改進(jìn)了模式定義的工具,允許導(dǎo)入和共享現(xiàn)有類(lèi)型和數(shù)據(jù)模型。我們正在構(gòu)建其它特性和流程,從而推動(dòng)共享數(shù)據(jù)模型的采用,減少重復(fù)和近似重復(fù)的數(shù)據(jù)模型的創(chuàng)建。

移動(dòng)分析強(qiáng)制代碼評(píng)審者和單元測(cè)試: 我們重新組織了移動(dòng)分析事件的模式,并允許生產(chǎn)者和消費(fèi)者將自己添加為強(qiáng)制評(píng)審者,以避免在沒(méi)有適當(dāng)評(píng)審和通知的情況下進(jìn)行更改。我們還構(gòu)建了一個(gè)移動(dòng)日志測(cè)試框架,以確保數(shù)據(jù)測(cè)試在構(gòu)建時(shí)運(yùn)行。

強(qiáng)制所有權(quán): 我們改進(jìn)了數(shù)據(jù)生成的底層數(shù)據(jù)工具和界面(模式定義、Kafka 主題創(chuàng)建、創(chuàng)建數(shù)據(jù)的管道、度量創(chuàng)建、儀表盤(pán)創(chuàng)建,等等),以便在無(wú)法自動(dòng)推斷所有者時(shí)強(qiáng)制提供所有權(quán)信息。所有權(quán)信息進(jìn)一步標(biāo)準(zhǔn)化為整個(gè)公司的單一服務(wù),跟蹤團(tuán)隊(duì)和組織,而不僅僅是單個(gè)創(chuàng)建者。這一修改可以避免新增無(wú)主數(shù)據(jù)。我們進(jìn)一步運(yùn)行啟發(fā)式算法,將所有者分配到“廢棄”的數(shù)據(jù)集,這些數(shù)據(jù)集沒(méi)有所有者或所有者已不在公司,這使我們有望達(dá)到 100% 的所有權(quán)覆蓋率。

跨工具集成: 我們集成了工具,這樣一旦在源工具上設(shè)置了文檔、所有權(quán)和其它關(guān)鍵元數(shù)據(jù),它就無(wú)縫地跨所有下游工具流動(dòng)。我們將管道工具與標(biāo)準(zhǔn)告警和監(jiān)控工具集成在一起,使服務(wù)和數(shù)據(jù)管道在生成和管理告警方面具有一致性。

后續(xù)工作

我們從這樣一個(gè)假設(shè)開(kāi)始:對(duì)數(shù)據(jù)進(jìn)行全面的思考——考慮跨人員和系統(tǒng)的端到端數(shù)據(jù)流——可以提高整體數(shù)據(jù)質(zhì)量。我們認(rèn)為,這一努力已經(jīng)顯示出支持這一假設(shè)的有力證據(jù)。然而,最初的工作僅僅是我們向更好的數(shù)據(jù)文化轉(zhuǎn)型之旅的開(kāi)始。在這項(xiàng)工作取得成功的基礎(chǔ)上,我們將這個(gè)程序推廣到 Uber 不同的組織和應(yīng)用程序。項(xiàng)目團(tuán)隊(duì)專(zhuān)注于分級(jí)、構(gòu)建真實(shí)數(shù)據(jù)源、提高數(shù)據(jù)質(zhì)量和數(shù)據(jù) SLA,而平臺(tái)團(tuán)隊(duì)則繼續(xù)改進(jìn)上述以及更多的工具。雙方共同努力來(lái)改進(jìn)流程,在 Uber 建立一種強(qiáng)大的數(shù)據(jù)文化。舉例來(lái)說(shuō),下面是一些正在進(jìn)行中的工作:

  • 對(duì)工具進(jìn)行了更多的基礎(chǔ)性改進(jìn),實(shí)現(xiàn)了更多的自動(dòng)化以支持不同的數(shù)據(jù)質(zhì)量檢查;實(shí)現(xiàn)了更多的集成以減少工作量

  • 增強(qiáng)應(yīng)用程序日志框架,進(jìn)一步捕獲更多有關(guān)用戶(hù)在應(yīng)用程序上實(shí)際“看了什么”和“做了什么”的直觀信息

  • 改進(jìn)流程和工具,改善生產(chǎn)者和消費(fèi)者之間的協(xié)作

  • 對(duì)數(shù)據(jù)資產(chǎn)實(shí)施生命周期管理,以便從系統(tǒng)中移除未使用和不必要的工件

  • 在工程師和數(shù)據(jù)科學(xué)家的日常數(shù)據(jù)開(kāi)發(fā)流程中進(jìn)一步應(yīng)用上述原則

我們希望在未來(lái)走向更好的數(shù)據(jù)文化的過(guò)程中分享更多的經(jīng)驗(yàn)教訓(xùn)。

作者介紹

Krishna Puttaswamy 是 Uber 高級(jí)工程師。他在市場(chǎng)團(tuán)隊(duì)中處理各種數(shù)據(jù)和實(shí)驗(yàn)問(wèn)題。這篇博客中描述的工作,是他在應(yīng)用數(shù)據(jù)改進(jìn) Uber 應(yīng)用程序和服務(wù)時(shí)所面臨的實(shí)際問(wèn)題的解決方案。他目前領(lǐng)導(dǎo) DataNG 和一個(gè)重寫(xiě)實(shí)驗(yàn)平臺(tái)的項(xiàng)目。他以前在 Airbnb 和 LinkedIn 處理過(guò)數(shù)據(jù) / 機(jī)器學(xué)習(xí)問(wèn)題。

Suresh Srinivas 是一位主要致力于數(shù)據(jù)平臺(tái)的架構(gòu)師,專(zhuān)注于讓用戶(hù)成功地從 Uber 的數(shù)據(jù)中實(shí)現(xiàn)價(jià)值。這篇博客中描述的工作,是這一努力的一部分。在 Uber 之前,他聯(lián)合創(chuàng)建了 Hortonworks,這是一家圍繞 Apache 開(kāi)源項(xiàng)目建立的公司,旨在將 Hadoop 生態(tài)系統(tǒng)引入企業(yè)。Suresh 是 Apache Hadoop 和相關(guān)項(xiàng)目的長(zhǎng)期貢獻(xiàn)者,也是 Hadoop PMC 成員之一。

原文鏈接

https://eng.uber.com/ubers-journey-toward-better-data-culture-from-first-principles/

來(lái)源:AI前線(xiàn)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
別張口閉口大數(shù)據(jù),看了此文你才知道大數(shù)據(jù)干嘛地
確保工件質(zhì)量、提高機(jī)器的可用性和生產(chǎn)率,西門(mén)子說(shuō)這個(gè)可行!
談?wù)勅绾蜗駥?duì)待產(chǎn)品一樣對(duì)待數(shù)據(jù)
云計(jì)算學(xué)習(xí)路線(xiàn)圖素材課件:云計(jì)算常用的開(kāi)源工具
制定測(cè)試計(jì)劃
在云環(huán)境中平衡工作負(fù)載
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服