欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

DataPipeline:DataHub—LinkedIn

DataPipeline:Data Hub—LinkedIn

成都創(chuàng)新互聯(lián)是一家專業(yè)提供西安企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為西安眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

作者:Mars?Lan,?Seyi Adebajo,?Shirshanka Das

譯者:?張雅然


作為全球最大的職場社交平臺,LinkedIn的數(shù)據(jù)團隊不斷致力于擴展其基礎(chǔ)架構(gòu),以滿足不斷增長的大數(shù)據(jù)生態(tài)系統(tǒng)需求。隨著數(shù)據(jù)量和豐富度的增長,對數(shù)據(jù)科學(xué)家和工程師而言:發(fā)現(xiàn)數(shù)據(jù)資產(chǎn),理解它們的來源并基于這些見解采取適當(dāng)?shù)男袆幼兊糜l(fā)具有挑戰(zhàn)。

為了在數(shù)據(jù)增長的同時繼續(xù)擴展數(shù)據(jù)的生產(chǎn)力和創(chuàng)新力,我們創(chuàng)建了一個通用的元數(shù)據(jù)搜索和發(fā)現(xiàn)工具Data Hub。

一、擴展元數(shù)據(jù)

為提高LinkedIn數(shù)據(jù)團隊的工作效率,我們之前開發(fā)并開源了WhereHows,一個中央元數(shù)據(jù)存儲庫和數(shù)據(jù)集門戶。存儲的元數(shù)據(jù)類型包括技術(shù)元數(shù)據(jù)(例如,位置、模式、分區(qū)、所有權(quán))和過程元數(shù)據(jù)(例如,沿襲、作業(yè)執(zhí)行、生命周期信息)。WhereHows還有一個搜索引擎,以幫助定位感興趣的數(shù)據(jù)集。?


自2016年最初發(fā)布WhereHows以來,業(yè)界對通過使用元數(shù)據(jù)來提高數(shù)據(jù)科學(xué)家生產(chǎn)力的關(guān)注度越來越高。例如,在這個領(lǐng)域開發(fā)的工具包括AirBnb的Dataportal,Uber的Databook,Netflix的Metacat,Lyft的Amundsen以及最近Google的Data Catalog。在LinkedIn,我們也一直在忙于擴展我們的元數(shù)據(jù)收集范圍,以便在保持公平性、隱私性和透明度的同時為新用例提供支持。但是,我們開始意識到WhereHows無法滿足我們不斷變化的元數(shù)據(jù)需求。以下是我們從擴展WhereHows中得到的經(jīng)驗總結(jié):

1. 推比拉更好
雖然直接從源中提取元數(shù)據(jù)似乎是收集元數(shù)據(jù)最直接的方式,但開發(fā)和維護很快就會成為一場噩夢。讓各個元數(shù)據(jù)提供者通過API或消息將信息推送到中央存儲庫的方式更具可擴展性。這種基于推送的方法還可確保更及時地反映新的和更新的元數(shù)據(jù)。
2. 通用比具體更好?WhereHows對數(shù)據(jù)集或作業(yè)的元數(shù)據(jù)應(yīng)該是什么樣子有著強烈意見。這就導(dǎo)致出現(xiàn)固定的API、數(shù)據(jù)模型和存儲格式,一旦對元數(shù)據(jù)模型有微小地更改將導(dǎo)致堆棧上下的級聯(lián)更改。如果我們設(shè)計一個通用的體系結(jié)構(gòu),該結(jié)構(gòu)不受存儲和服務(wù)的元數(shù)據(jù)模型的影響,那將更具可擴展性。這反過來將使我們能夠?qū)W⒂诎l(fā)展適合我們業(yè)務(wù)的元數(shù)據(jù)模型,而不必擔(dān)心堆棧的較低層。
3. 在線與離線同樣重要

一旦收集了元數(shù)據(jù),就很自然地想要分析元數(shù)據(jù)以獲得價值。一個簡單的解決方案是將所有元數(shù)據(jù)轉(zhuǎn)儲到離線系統(tǒng),如Hadoop,可以執(zhí)行任意分析。但是,我們很快發(fā)現(xiàn)僅僅支持離線分析是不夠的。例如訪問控制和數(shù)據(jù)隱私處理,必須在線查詢最新的元數(shù)據(jù)。


4.?關(guān)系扮演重要角色

元數(shù)據(jù)通常傳達重要的關(guān)系(例如,血統(tǒng),所有權(quán)和依賴關(guān)系),這些關(guān)系能夠?qū)崿F(xiàn)強大的功能,如影響分析,數(shù)據(jù)匯總,更好的搜索相關(guān)性等。將所有這些關(guān)系建模為最重要的組件并支持對它們進行有效地分析查詢是非常重要的。?

5. 多中心化

我們意識到僅僅圍繞單個實體(數(shù)據(jù)集)建模元數(shù)據(jù)是不夠的。整個生態(tài)系統(tǒng)的數(shù)據(jù),代碼和角色實體(數(shù)據(jù)集,數(shù)據(jù)科學(xué)家,團隊,代碼,微服務(wù)API,指標,AI功能,AI模型,儀表板,筆記本等)都需要集成到元數(shù)據(jù)地圖。

二、一起了解下Data Hub


大約一年前,我們根據(jù)這些知識從頭開始設(shè)計WhereHows。我們意識到LinkedIn越來越需要跨各種數(shù)據(jù)實體的統(tǒng)一的搜索和發(fā)現(xiàn)體驗,以及將它們連接在一起的元數(shù)據(jù)圖。因此,我們決定擴大項目范圍,構(gòu)建一個完全通用的元數(shù)據(jù)搜索和發(fā)現(xiàn)工具Data Hub,其雄心勃勃的愿景是:將LinkedIn員工與對他們至關(guān)重要的數(shù)據(jù)聯(lián)系起來。?

我們將單片WhereHows堆棧分成兩個不同的堆棧:模塊化UI前端和通用元數(shù)據(jù)架構(gòu)后端。新架構(gòu)使我們能夠快速擴展元數(shù)據(jù)收集范圍,而不僅僅是數(shù)據(jù)集和作業(yè)。在撰寫本文時,Data Hub已經(jīng)存儲并索引數(shù)千萬條元數(shù)據(jù)記錄,這些記錄包含19個不同的實體,包括數(shù)據(jù)集,指標,作業(yè),圖表,AI功能,人員和組。我們還計劃在不久的將來在機器學(xué)習(xí)模型和標簽,實驗,儀表板,微服務(wù)API和代碼上,發(fā)揮元數(shù)據(jù)的作用。?

三、模塊化UI

Data Hub Web應(yīng)用程序是大多數(shù)用戶與元數(shù)據(jù)交互的方式。該應(yīng)用程序用Ember Framework編寫,運行在Play中間層上。為了使開發(fā)具有可擴展性,我們充分利用各種現(xiàn)代化的網(wǎng)絡(luò)技術(shù),包括ES9,ES.Next,TypeScript, Yarn以及 Prettier和 ESLint這樣的代碼質(zhì)量工具。展現(xiàn)層,控制層和數(shù)據(jù)層被模塊化為包,以便應(yīng)用程序中的特定視圖由相關(guān)包組合構(gòu)建。?

?組件服務(wù)框架
在應(yīng)用模塊化UI基礎(chǔ)架構(gòu)時,我們將Data Hub Web應(yīng)用程序構(gòu)建為一系列為了完成業(yè)務(wù)的組件,這些組件分組為可安裝的軟件包。該軟件包架構(gòu)在基礎(chǔ)上使用了Yarn Workspaces和Ember附加組件,并使用Ember的組件和服務(wù)進行組件化。您可以將此視為使用小型構(gòu)建塊(即組件和服務(wù))構(gòu)建的UI,以創(chuàng)建更大的構(gòu)建塊(即Ember附加組件和npm / Yarn軟件包),這些構(gòu)建塊組合在一起最終構(gòu)成Data Hub Web應(yīng)用程序。
將組件和服務(wù)作為應(yīng)用程序的核心,該框架允許我們分離不同的方面并將應(yīng)用程序中的其他功能組合在一起。此外,每一層的分段提供了一個非常可定制的架構(gòu),允許消費者擴展或簡化其應(yīng)用程序,以便僅利用與其領(lǐng)域相關(guān)的功能或構(gòu)建新的元數(shù)據(jù)模型。?與Data Hub交互

在最高級別,前端提供三種類型的交互:(1)搜索,(2)瀏覽,(3)查看/編輯元數(shù)據(jù)。以下是一些實際應(yīng)用的截圖(點開看更清晰哦)

DataPipeline:Data Hub—LinkedIn

Data Hub應(yīng)用截圖

與典型的搜索引擎體驗類似,用戶可以通過提供關(guān)鍵字列表來搜索一種或多種類型的實體。他們可以通過篩選一系列方面來進一步實現(xiàn)結(jié)果。高級用戶還可以使用OR,NOT和regex等運算符來執(zhí)行復(fù)雜搜索。
Data Hub中的數(shù)據(jù)實體可以以樹狀方式組織和瀏覽,其中每個實體都允許出現(xiàn)在樹中的多個位置。這使用戶能夠以不同的方式瀏覽相同的目錄,例如,通過物理部署配置或業(yè)務(wù)功能組織。樹中甚至有一個專門的部分,僅顯示“經(jīng)過認證的實體”,這些實體可通過單獨的治理過程進行策劃。
最終的交互視圖/編輯元數(shù)據(jù)也是最復(fù)雜的一個。每個數(shù)據(jù)實體都有一個可以顯示所有相關(guān)元數(shù)據(jù)的“配置文件頁面”,例如,數(shù)據(jù)集配置文件頁面可能包含其架構(gòu),所有權(quán),合規(guī)性,運行狀況和沿襲元數(shù)據(jù)。它還可以顯示實體與其他實體之間的關(guān)系。對于可編輯的元數(shù)據(jù),用戶還可以直接通過UI進行更新。?

四、通用元數(shù)據(jù)架構(gòu)


為了充分實現(xiàn)Data Hub的愿景,我們需要一種能夠使用元數(shù)據(jù)進行擴展的架構(gòu)??蓴U展性挑戰(zhàn)有以下四種不同形式:
1. 建模:以開發(fā)人員友好的方式為所有類型的元數(shù)據(jù)和關(guān)系建模。
2. 獲?。?/strong>通過API和流,大規(guī)模獲取大量元數(shù)據(jù)更改。
3. 服務(wù):服務(wù)于收集的原始和派生元數(shù)據(jù),以及針對元數(shù)據(jù)的各種復(fù)雜查詢。
4. 索引:大規(guī)模索引元數(shù)據(jù),并在元數(shù)據(jù)發(fā)生更改時自動更新索引。?元數(shù)據(jù)建模

簡而言之,元數(shù)據(jù)是“?提供關(guān)于其他數(shù)據(jù)的信息的數(shù)據(jù)?!痹谠獢?shù)據(jù)建模方面,帶來了兩個不同要求:

1. 元數(shù)據(jù)也是數(shù)據(jù)
為模擬元數(shù)據(jù),我們需要一種通用的建模語言。
2. 元數(shù)據(jù)是分布式的
期望所有元數(shù)據(jù)來自單一來源是不現(xiàn)實的。例如,管理數(shù)據(jù)集的訪問控制列表(ACL)的系統(tǒng)很可能與存儲模式元數(shù)據(jù)的系統(tǒng)不同。一個好的建??蚣軕?yīng)該允許多個團隊獨立地發(fā)展他們的元數(shù)據(jù)模型,同時呈現(xiàn)與數(shù)據(jù)實體相關(guān)的所有元數(shù)據(jù)的統(tǒng)一視圖。
我們選擇利用Pegasus,這是一種由LinkedIn創(chuàng)建的開放源碼和完善的數(shù)據(jù)模式語言。Pegasus專為通用數(shù)據(jù)建模而設(shè)計,因此適用于大多數(shù)元數(shù)據(jù)。但是,由于Pegasus沒有提供模型關(guān)系或關(guān)聯(lián)的明確方法,因此我們引入了一些自定義擴展來支持這些用例。
為了演示如何使用Pegasus對元數(shù)據(jù)建模,讓我們看一個簡單的例子,它由以下修改后的實體關(guān)系圖(ERD)演示。

DataPipeline:Data Hub—LinkedIn

該示例包含三種類型的實體:用戶、組和數(shù)據(jù)集,由圖中的藍色圓圈表示。我們用箭頭來表示這些實體之間的三種關(guān)系類型,即OwnedBy,HasMember和HasAdmin。換句話說,一個組由一個管理員和多個用戶組成,他們可以擁有一個或多個數(shù)據(jù)集。
?與傳統(tǒng)的ERD不同,我們將實體和關(guān)系的屬性分別直接放在圓圈內(nèi)和關(guān)系名稱下面,以便將新類型的組件(稱為“元數(shù)據(jù)方面”)附加到實體。不同的團隊可以擁有和發(fā)展同一實體元數(shù)據(jù)的不同方面,而不會相互干擾,從而實現(xiàn)分布式元數(shù)據(jù)建模要求。三種類型的元數(shù)據(jù)方面:所有權(quán),配置文件和成員資格在上面的示例中呈現(xiàn)為綠色矩形。虛線表示元數(shù)據(jù)方面與實體的關(guān)聯(lián)。例如,配置文件可以與用戶相關(guān)聯(lián),且所有權(quán)可以與數(shù)據(jù)集等相關(guān)聯(lián)。
您可能已經(jīng)注意到實體和關(guān)系屬性與元數(shù)據(jù)方面存在重疊,例如,User的firstName屬性應(yīng)該與關(guān)聯(lián)的Profile的firstName字段相同。重復(fù)的原因?qū)⒃诒疚牡暮蟀氩糠诌M行解釋。
以Pegasus為例,我們將每個實體,關(guān)系和元數(shù)據(jù)方面轉(zhuǎn)換為單獨的Pegasus架構(gòu)文件(PDSC)。為簡單起見,我們在此僅包含每個類別的一個模型。首先,讓我們看一下用戶實體的PDSC:
每個實體都需要具有URN形式的全局唯一ID ,可以將其視為一種類型的GUID。User實體具有包括名字,姓氏和LDAP的屬性,每個屬性都映射到用戶記錄中的可選字段。
接下來是OwnedBy關(guān)系的PDSC模型:

DataPipeline:Data Hub—LinkedIn


每個關(guān)系模型自然包含“源”和“目標”字段,這些字段使用其URN指向特定實體實例。該模型可以選擇包含其他屬性字段,例如本例中的“type”。在這里,我們還引入了一個名為“pairings”的自定義屬性,以限制與特定的源和目標URN類型的關(guān)系。在這種情況下,OwnedBy關(guān)系只能用于將數(shù)據(jù)集連接到用戶。
最后,您將在下面找到Ownership 元數(shù)據(jù)方面的模型。在此,我們選擇將所有權(quán)建模為包含type和ldap字段的記錄數(shù)組。但是,只要它是有效的PDSC記錄,對于元數(shù)據(jù)方面的建模幾乎沒有限制。這令滿足先前所述的“元數(shù)據(jù)也是數(shù)據(jù)”的要求成為可能。

DataPipeline:Data Hub—LinkedIn

在創(chuàng)建所有模型之后,下個問題是如何將它們連接在一起以形成所提議的ERD。我們將把這個討論推遲到本文后面的元數(shù)據(jù)索引部分。
元數(shù)據(jù)獲取
Data Hub提供兩種獲取元數(shù)據(jù)的形式:直接API調(diào)用或Kafka流。前者用于需要讀寫一致性的元數(shù)據(jù)更改,后者更適用于面向事實的更新。?

Data Hub的API基于Rest.li,這是一種可擴展,強類型的RESTful服務(wù)架構(gòu),廣泛用于LinkedIn。由于Rest.li使用Pegasus作為其接口定義,因此可以逐字使用上一節(jié)中定義的所有元數(shù)據(jù)模型。從API到存儲需要多級模型轉(zhuǎn)換的日子已經(jīng)成為歷史?- API和模型將始終保持同步。


對于基于Kafka的獲取,元數(shù)據(jù)生成者被期望產(chǎn)生一個標準化的元數(shù)據(jù)改變事件(MCE),其包含一個由相應(yīng)實體URN鍵控的對特定元數(shù)據(jù)方面的建議更改列表。MCE的格式是Apache Avro,它是由Pegasus元數(shù)據(jù)模型自動生成的。
在API和Kafka事件模式中使用相同的元數(shù)據(jù)模型,使得我們可以輕松地改進模型,而無需費力地維護相應(yīng)的轉(zhuǎn)換邏輯。但是,要實現(xiàn)真正無縫的模式演變,我們需要將所有模式更改限制為始終向后兼容。這在構(gòu)建時通過添加兼容性檢查強制執(zhí)行。
在LinkedIn,我們傾向于更多地依賴Kafka流,因為它在生產(chǎn)者和消費者之間提供了松散的耦合。我們每天都會收到來自不同制作人的數(shù)百萬個MCE,隨著擴大元數(shù)據(jù)收集的范圍,預(yù)計該數(shù)量將呈指數(shù)級增長。為了構(gòu)建流式元數(shù)據(jù)提取管道,我們利用Apache Samza作為流處理框架。獲取Samza作業(yè)的目的是快速簡單地實現(xiàn)高吞吐量。它只是將Avro數(shù)據(jù)轉(zhuǎn)換回Pegasus并調(diào)用相應(yīng)的Rest.li API來完成獲取。

DataPipeline:Data Hub—LinkedIn

元數(shù)據(jù)服務(wù)

一旦攝取存儲了元數(shù)據(jù),就必須有效地提供原始元數(shù)據(jù)和派生元數(shù)據(jù)。Data Hub旨在支持四種常見的大量元數(shù)據(jù)查詢:


1.?面向文檔的查詢
2.?面向圖形的查詢
3.?涉及連接的復(fù)雜查詢
4.?全文檢索
為實現(xiàn)這一目標,Data Hub需要使用多種數(shù)據(jù)系統(tǒng),每種數(shù)據(jù)系統(tǒng)都專門用于擴展和提供有限類型的查詢。例如,Espresso是LinkedIn的NoSql數(shù)據(jù)庫,特別適合大規(guī)模面向文檔的CRUD。同樣,Galene可以輕松索引和提供網(wǎng)絡(luò)規(guī)模的全文搜索。當(dāng)談到非平凡的圖形查詢時,specialized graph DB可以比RDBMS更好地執(zhí)行數(shù)量級,這并不奇怪。然而,事實證明,圖結(jié)構(gòu)也是表示外鍵關(guān)系的自然方式,能有效地回答復(fù)雜的連接查詢。
Data Hub通過一組通用數(shù)據(jù)訪問對象(DAO)進一步抽象底層數(shù)據(jù)系統(tǒng),例如鍵值DAO,查詢DAO和搜索DAO。進而,當(dāng)修改DAO的實現(xiàn)時,無需再更改Data Hub中的任何業(yè)務(wù)邏輯。這將使我們能夠在充分利用LinkedIn專有存儲技術(shù)的同時,能夠為流行的開源系統(tǒng)提供參考實現(xiàn)的開源Data Hub。

DataPipeline:Data Hub—LinkedIn


DAO抽象的另一個主要好處是標準化的變更數(shù)據(jù)捕獲(CDC)。無論底層數(shù)據(jù)存儲系統(tǒng)的類型如何,通過鍵值DAO的任何更新操作都將自動發(fā)出元數(shù)據(jù)審計事件(MAE)。每個MAE包含相應(yīng)實體的URN,以及特定元數(shù)據(jù)方面的前后圖像。這支持lambda架構(gòu),其中可以批量或流處理MAE。與MCE類似,MAE的模式也是由元數(shù)據(jù)模型自動生成的。
元數(shù)據(jù)索引
最后一個缺失的部分是元數(shù)據(jù)索引管道。該系統(tǒng)將元數(shù)據(jù)模型連接在一起,并在圖形數(shù)據(jù)庫和搜索引擎中創(chuàng)建相應(yīng)索引,以促進有效查詢。這些業(yè)務(wù)邏輯以索引構(gòu)建器和圖形構(gòu)建器的形式捕獲,并作為處理MAE的Samza作業(yè)的一部分執(zhí)行。每個構(gòu)建器都在作業(yè)中注冊了它們對特定元數(shù)據(jù)方面的興趣,并將使用相應(yīng)的MAE進行調(diào)用。然后,構(gòu)建器會返回到一個冪等更新列表,這些更新將應(yīng)用于搜索索引或graph DB。
元數(shù)據(jù)索引管道也是高度可擴展的,因為它可以基于每個MAE的實體URN進行分區(qū),以支持每個實體的有序處理。

DataPipeline:Data Hub—LinkedIn

五、結(jié)論和期待

在這篇文章中,我們介紹了Data Hub,這是我們在LinkedIn元數(shù)據(jù)之旅中的最新進展。該項目包括模塊化UI前端和通用元數(shù)據(jù)架構(gòu)后端。


過去六個月,Data Hub在LinkedIn每周支持1500多員工的搜索和各種特定的操作工作。LinkedIn的元數(shù)據(jù)圖包含超過一百萬個數(shù)據(jù)集,23個數(shù)據(jù)存儲系統(tǒng),25k個指標,500多個AI功能,最重要的是所有LinkedIn員工都是該圖的創(chuàng)建者,消費者和操作者。?
我們通過向產(chǎn)品添加更多有趣的用戶故事和相關(guān)性算法來繼續(xù)改進Data Hub。我們還計劃為GraphQL添加原生支持,并利用Pegasus領(lǐng)域特定的語言(PDL)在不久的將來自動生成代碼。與此同時,我們正積極與開源社區(qū)分享WhereHows的演變,并將在Data Hub公開發(fā)布后發(fā)表聲明。

文章來源:Linkedin Engineering ,?《Data Hub: A Generalized Metadata Search & Discovery Tool》作者 / Mars?Lan,?Seyi Adebajo,?Shirshanka Das

新聞標題:DataPipeline:DataHub—LinkedIn
瀏覽路徑:http://chinadenli.net/article16/gidhgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、自適應(yīng)網(wǎng)站電子商務(wù)、品牌網(wǎng)站建設(shè)、定制開發(fā)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)