Open Source DataHub: Platfòm rechèch ak dekouvèt Metadata LinkedIn

Open Source DataHub: Platfòm rechèch ak dekouvèt Metadata LinkedIn

Jwenn done ou bezwen yo rapidman esansyèl pou nenpòt konpayi ki konte sou gwo kantite done pou pran desizyon ki baze sou done. Non sèlman sa a gen yon enpak sou pwodiktivite itilizatè done yo (ki gen ladan analis, devlopè aprantisaj machin, syantis done, ak enjenyè done), men li gen tou yon enpak dirèk sou pwodwi final yo ki depann sou yon bon jan kalite aprantisaj machin (ML) tiyo. Anplis de sa, tandans pou mete ann aplikasyon oswa bati platfòm aprantisaj machin natirèlman poze kesyon an: ki metòd ou genyen pou dekouvri karakteristik, modèl, paramèt, seri done, elatriye.

Nan atik sa a nou pral pale sou fason nou pibliye yon sous done anba yon lisans ouvè DataHub nan rechèch metadata nou an ak platfòm dekouvèt, kòmanse nan premye jou yo nan pwojè a Ki kote Kijan. LinkedIn kenbe pwòp vèsyon li nan DataHub separeman ak vèsyon sous louvri. Nou pral kòmanse pa eksplike poukisa nou bezwen de anviwònman devlopman separe, Lè sa a, diskite sou apwòch bonè yo sèvi ak sous louvri WhereHows la epi konpare vèsyon entèn nou an (pwodiksyon) nan DataHub ak vèsyon an sou GitHub. Nou pral pataje tou detay sou nouvo solisyon otomatik nou an pou pouse ak resevwa mizajou sous louvri pou kenbe tou de depo yo nan senkronizasyon. Finalman, nou pral bay enstriksyon sou kòman yo kòmanse sèvi ak sous louvri DataHub epi diskite yon ti tan sou achitekti li yo.

Open Source DataHub: Platfòm rechèch ak dekouvèt Metadata LinkedIn

WhereHows se kounye a yon DataHub!

Ekip metadata LinkedIn a te deja prezante DataHub (siksesè nan WhereHows), rechèch LinkedIn ak platfòm dekouvèt metadata, ak pataje plan yo louvri li. Yon ti tan apre anons sa a, nou te pibliye yon vèsyon alfa DataHub epi pataje li ak kominote a. Depi lè sa a, nou te toujou kontribye nan depo a epi travay ak itilizatè ki enterese yo ajoute karakteristik ki pi mande yo ak rezoud pwoblèm. Kounye a nou kontan anonse lage ofisyèl la DataHub sou GitHub.

Open Source Apwòch

WhereHows, pòtal orijinal LinkedIn pou jwenn done ak kote li soti, te kòmanse kòm yon pwojè entèn; ekip metadata a te louvri li kòd sous nan 2016. Depi lè sa a, ekip la te toujou kenbe de baz kod diferan - youn pou sous louvri ak youn pou itilizasyon entèn LinkedIn - paske se pa tout karakteristik pwodwi devlope pou ka itilize LinkedIn yo te jeneralman aplikab a pi laj odyans lan. Anplis de sa, WhereHows gen kèk depandans entèn (enfrastrikti, bibliyotèk, elatriye) ki pa sous louvri. Nan ane ki te swiv yo, WhereHows te pase anpil iterasyon ak sik devlopman, sa ki te fè kenbe de baz kod yo nan senkronizasyon yon gwo defi. Ekip metadata a te eseye diferan apwòch pandan ane yo pou eseye kenbe devlopman entèn ak sous louvri nan senkronize.

Premye eseye: "Louvri sous premye"

Okòmansman, nou te swiv yon modèl devlopman "sous louvri premye", kote pifò devlopman fèt nan yon depo sous louvri epi yo fè chanjman pou deplwaman entèn yo. Pwoblèm nan ak apwòch sa a se ke kòd la toujou pouse nan GitHub an premye anvan li te konplètman revize intern. Jiskaske chanjman yo fèt nan depo sous louvri epi yo fè yon nouvo deplwaman entèn, nou p ap jwenn okenn pwoblèm pwodiksyon. Nan ka deplwaman pòv, li te tou trè difisil detèmine koupab la paske chanjman yo te fè nan lo.

Anplis de sa, modèl sa a te redwi pwodiktivite ekip la lè li te devlope nouvo karakteristik ki te mande rapid iterasyon, paske li te fòse tout chanjman yo dwe premye pouse nan yon depo sous louvri epi answit pouse nan yon depo entèn. Pou diminye tan pwosesis la, yo ka fè ranje oswa chanjman ki nesesè yo nan depo entèn la an premye, men sa a te vin tounen yon gwo pwoblèm lè li te rive rantre chanjman sa yo tounen nan depo sous louvri paske de depo yo te soti nan senkronize.

Modèl sa a pi fasil pou aplike pou platfòm pataje, bibliyotèk, oswa pwojè enfrastrikti pase pou aplikasyon entènèt ki gen anpil karakteristik. Anplis de sa, modèl sa a se ideyal pou pwojè ki kòmanse sous louvri depi premye jou, men WhereHows te bati kòm yon aplikasyon entènèt konplètman entèn. Li te reyèlman difisil konplètman abstrè lwen tout depandans entèn yo, kidonk nou te bezwen kenbe fouchèt la entèn, men kenbe fouchèt la entèn ak devlope sitou sous louvri pa t 'byen travay deyò.

Dezyèm tantativ: "Andan premye"

**Kòm yon dezyèm tantativ, nou te deplase nan yon modèl devlopman "entèn premye", kote pifò devlopman fèt nan kay la epi yo fè chanjman nan kòd sous louvri sou yon baz regilye. Malgre ke modèl sa a pi byen adapte pou ka itilize nou an, li gen pwoblèm nannan. Dirèkteman pouse tout diferans nan repozitwa sous louvri ak Lè sa a, eseye rezoud konfli fizyone pita se yon opsyon, men li pran tan. Devlopè yo nan pifò ka yo eseye pa fè sa chak fwa yo revize kòd yo. Kòm yon rezilta, sa a pral fè anpil mwens souvan, nan lo, e konsa fè li pi difisil pou rezoud konfli fizyone pita.

Twazyèm fwa li te travay!

De tantativ echwe mansyone pi wo a te lakòz repozitwa GitHub WhereHows rete demode pou yon tan long. Ekip la te kontinye amelyore karakteristik ak achitekti pwodwi a, se konsa ke vèsyon an entèn nan WhereHows pou LinkedIn te vin pi avanse pase vèsyon an sous louvri. Li menm te gen yon nouvo non - DataHub. Baze sou tantativ echwe anvan yo, ekip la deside devlope yon solisyon évolutive, alontèm.

Pou nenpòt nouvo pwojè sous louvri, ekip sous louvri LinkedIn a konseye ak sipòte yon modèl devlopman nan ki modil pwojè a yo devlope antyèman nan sous louvri. Afè ki gen vèsyon yo deplwaye nan yon depo piblik epi yo tcheke yo tounen nan zafè entèn LinkedIn lè l sèvi avèk demann bibliyotèk ekstèn (ELR). Swiv modèl devlopman sa a se pa sèlman bon pou moun ki sèvi ak sous louvri, men tou rezilta nan yon achitekti plis modilè, ekstansib, ak branche.

Sepandan, yon aplikasyon back-end ki gen matirite tankou DataHub pral mande pou yon kantite tan enpòtan pou rive nan eta sa a. Sa a tou anpeche posiblite pou apwovizyone louvri yon aplikasyon totalman travay anvan tout depandans entèn yo te konplètman abstrè. Se poutèt sa nou te devlope zouti ki ede nou fè kontribisyon sous louvri pi vit ak anpil mwens doulè. Solisyon sa a benefisye ekip metadata (pwomotè DataHub) ak kominote sous louvri. Seksyon sa yo pral diskite sou nouvo apwòch sa a.

Open Source Otomatik Piblikasyon

Dènye apwòch ekip Metadata a nan DataHub sous louvri se devlope yon zouti ki otomatikman senkronize kodbaz entèn la ak depo sous louvri. Karakteristik wo nivo nan bwat zouti sa a enkli:

  1. Senkronize kòd LinkedIn pou/soti nan sous louvri, menm jan an rsync.
  2. Lisans header jenerasyon, menm jan ak Apache rat.
  3. Otomatikman jenere mòso bwa komite sous louvri soti nan mòso bwa komite entèn yo.
  4. Anpeche chanjman entèn ki kraze sous louvri bati pa tès depandans.

Sou-seksyon sa yo pral fouye nan fonksyon yo mansyone anwo a ki gen pwoblèm enteresan.

Senkronizasyon kòd sous

Kontrèman ak vèsyon sous louvri nan DataHub, ki se yon sèl depo GitHub, vèsyon an LinkedIn nan DataHub se yon konbinezon de depo miltip (yo rele anndan an. plizyè pwodwi). Koòdone DataHub, bibliyotèk modèl metadata, sèvis backend depo metadata, ak travay difizyon abite nan depo separe sou LinkedIn. Sepandan, pou rann li pi fasil pou itilizatè sous louvri, nou gen yon sèl depo pou vèsyon sous louvri nan DataHub.

Open Source DataHub: Platfòm rechèch ak dekouvèt Metadata LinkedIn

Figi 1: Synchronization ant depo LinkedIn DataHub ak yon sèl depo DataHub sous louvri

Pou sipòte travay otomatik pou konstwi, pouse, ak rale, nouvo zouti nou an otomatikman kreye yon kat nivo dosye ki koresponn ak chak dosye sous. Sepandan, bwat zouti a mande pou premye konfigirasyon epi itilizatè yo dwe bay yon kat modil wo nivo jan yo montre anba a.

{
  "datahub-dao": [
    "${datahub-frontend}/datahub-dao"
  ],
  "gms/impl": [
    "${dataset-gms}/impl",
    "${user-gms}/impl"
  ],
  "metadata-dao": [
    "${metadata-models}/metadata-dao"
  ],
  "metadata-builders": [
    "${metadata-models}/metadata-builders"
  ]
}

Kat jeyografik nan nivo modil la se yon senp JSON ki gen kle yo se modil sib yo nan repozitwa sous louvri ak valè yo se lis modil sous nan depo LinkedIn yo. Nenpòt modil sib nan yon depo sous louvri ka manje pa nenpòt kantite modil sous. Pou endike non entèn depo nan modil sous, sèvi ak entèpolasyon fisèl nan style Bash. Sèvi ak yon fichye kat jeyografik nan nivo modil, zouti yo kreye yon fichye kat jeyografik nan nivo fichye lè yo analize tout dosye ki nan anyè ki asosye yo.

{
  "${metadata-models}/metadata-builders/src/main/java/com/linkedin/Foo.java":
"metadata-builders/src/main/java/com/linkedin/Foo.java",
  "${metadata-models}/metadata-builders/src/main/java/com/linkedin/Bar.java":
"metadata-builders/src/main/java/com/linkedin/Bar.java",
  "${metadata-models}/metadata-builders/build.gradle": null,
}

Kat nivo fichye a otomatikman kreye pa zouti yo; sepandan, itilizatè a kapab tou mete ajou manyèlman. Sa a se yon kat jeyografik 1: 1 nan yon dosye sous LinkedIn nan yon dosye nan depo sous louvri. Gen plizyè règ ki asosye ak kreyasyon otomatik sa a nan asosyasyon dosye:

  • Nan ka modil sous miltip pou yon modil sib nan sous louvri, konfli ka leve, pa egzanp, menm bagay la. FQCN, ki egziste nan plis pase yon modil sous. Kòm yon estrateji rezolisyon konfli, zouti nou yo default nan opsyon "yon dènye genyen".
  • "nil" vle di ke fichye sous la pa fè pati depo sous louvri.
  • Apre chak soumèt oswa ekstraksyon sous louvri, kat sa a otomatikman mete ajou epi yo kreye yon snapshot. Sa nesesè pou idantifye adisyon ak efase nan kòd sous depi dènye aksyon an.

Kreye mòso bwa komite

Jounal komèt pou komèt sous louvri yo tou otomatikman pwodwi pa fizyone mòso bwa yo komèt nan depo entèn yo. Anba la a se yon echantiyon komite journal pou montre estrikti komite journal ki te pwodwi pa zouti nou an. Yon komèt endike klèman ki vèsyon depo sous yo ki pake nan komite sa a epi li bay yon rezime jounal komèt la. Tcheke yon sèl sa a soti komèt lè l sèvi avèk yon egzanp reyèl nan yon jounal komèt ki te pwodwi pa bwat zouti nou an.

metadata-models 29.0.0 -> 30.0.0
    Added aspect model foo
    Fixed issue bar

dataset-gms 2.3.0 -> 2.3.4
    Added rest.li API to serve foo aspect

MP_VERSION=dataset-gms:2.3.4
MP_VERSION=metadata-models:30.0.0

Tès depandans

LinkedIn genyen enfrastrikti tès depandans, ki ede asire ke chanjman nan yon multiproduct entèn pa kraze asanble multiproducts depandan yo. Sous louvri DataHub depo a se pa milti-pwodwi, epi li pa kapab yon depandans dirèk nan nenpòt ki milti-pwodwi, men avèk èd nan yon anbalaj milti-pwodwi ki jwenn kòd sous ouvè DataHub la, nou ka toujou itilize tès depandans sa a. Kidonk, nenpòt chanjman (ki ka ekspoze pita) nan nenpòt nan miltipwodwi yo ki manje depo DataHub sous ouvè a deklanche yon evènman bati nan miltipwodwi koki a. Se poutèt sa, nenpòt chanjman ki echwe pou bati yon pwodwi wrapper echwe tès yo anvan yo komèt pwodwi orijinal la epi yo retounen.

Sa a se yon mekanis itil ki ede anpeche nenpòt komèt entèn ki kraze konstriksyon sous louvri epi detekte li nan moman komite. San sa a, li ta byen difisil pou detèmine ki komèt entèn ki te lakòz konstriksyon depo sous louvri a echwe, paske nou pakèt chanjman entèn nan depo sous louvri DataHub la.

Diferans ant sous louvri DataHub ak vèsyon pwodiksyon nou an

Jiska pwen sa a, nou te diskite solisyon nou an pou senkronize de vèsyon depo DataHub, men nou poko esplike rezon ki fè nou bezwen de kouran devlopman diferan an premye. Nan seksyon sa a, nou pral lis diferans ki genyen ant vèsyon piblik DataHub ak vèsyon pwodiksyon an sou sèvè LinkedIn, epi eksplike rezon ki fè diferans sa yo.

Youn nan sous diferans ki soti nan lefèt ke vèsyon pwodiksyon nou an gen depandans sou kòd ki poko sous louvri, tankou LinkedIn's Offspring (kad piki depandans entèn LinkedIn a). Pitit yo lajman itilize nan kodbaz entèn paske li se metòd pi pito pou jere konfigirasyon dinamik. Men, li pa sous louvri; Se konsa, nou te bezwen jwenn altènativ sous louvri nan sous louvri DataHub la.

Gen lòt rezon tou. Kòm nou kreye ekstansyon nan modèl la metadata pou bezwen LinkedIn yo, ekstansyon sa yo anjeneral trè espesifik nan LinkedIn epi yo ka pa dirèkteman aplike nan lòt anviwònman. Pou egzanp, nou gen etikèt trè espesifik pou ID patisipan yo ak lòt kalite metadata matche. Se konsa, kounye a nou eskli ekstansyon sa yo nan modèl metadata sous louvri DataHub la. Pandan n ap angaje ak kominote a epi konprann bezwen yo, n ap travay sou vèsyon komen sous louvri nan ekstansyon sa yo kote sa nesesè.

Fasilite pou itilize ak pi fasil adaptasyon pou kominote a sous louvri tou enspire kèk nan diferans ki genyen ant de vèsyon yo nan DataHub. Diferans nan enfrastrikti pwosesis kouran yo se yon bon egzanp sa a. Malgre ke vèsyon entèn nou an itilize yon kad pwosesis jere kouran, nou te chwazi sèvi ak pwosesis kouran entegre (otonòm) pou vèsyon sous louvri paske li evite kreye yon lòt depandans enfrastrikti.

Yon lòt egzanp diferans lan se gen yon sèl GMS (Jeneralize Metadata Store) nan yon aplikasyon sous louvri olye ke plizyè GMS. GMA (Generalized Metadata Architecture) se non achitekti back-end pou DataHub, ak GMS se magazen metadata nan kontèks GMA. GMA se yon achitekti trè fleksib ki pèmèt ou distribye chak konstriksyon done (egzanp ansanm done, itilizatè, elatriye) nan pwòp magazen metadata li yo, oswa estoke konstwi done miltip nan yon magazen metadata sèl osi lontan ke rejis la ki gen kat estrikti done a nan. GMS mete ajou. Pou fasil pou itilize, nou te chwazi yon sèl egzanp GMS ki estoke tout done diferan konstwi nan sous louvri DataHub la.

Yon lis konplè sou diferans ki genyen ant de aplikasyon yo bay nan tablo ki anba a.

Product Features
LinkedIn DataHub
Open Source DataHub

Konstwi Done Sipòte
1) Ansanm done 2) Itilizatè yo 3) Paramèt 4) Karakteristik ML 5) Tablo 6) Dashboards
1) Datasets 2) Itilizatè yo

Sous Metadata Sipòte pou Ansanm Done yo
1) Ambry 2) Couchbase 3) Dalids 4) Èksprès 5) HDFS 6) Hive 7) Kafka 8) MongoDB 9) MySQL 10) Oracle 11) pinot 12) Presto 12) 13) Teradata 13) Vektè 14) Venice
Hive Kafka RDBMS

Pub-sub
LinkedIn Kafka
Konfluyan Kafka

Pwosesis kouran
Kontwole
Entègre (otonòm)

Piki Depandans & Konfigirasyon dinamik
LinkedIn Desandans
Prentan

Bati zouti
Ligradle (Anbalaj Gradle entèn LinkedIn a)
Gradlew

CI / CD
CRT (CI/CD entèn LinkedIn)
TravisCI ak Hub Docker

Magazen Metadata
Distribiye plizyè GMS: 1) Dataset GMS 2) Itilizatè GMS 3) Metrik GMS 4) Karakteristik GMS 5) Tablo/Dashboard GMS
Single GMS pou: 1) Datasets 2) Itilizatè yo

Mikwosèvis nan resipyan Docker

Koupre senplifye deplwaman aplikasyon ak distribisyon ak kontenèrizasyon. Chak pati nan sèvis la nan DataHub se sous louvri, ki gen ladan eleman enfrastrikti tankou Kafka, Elasticsearch, neo4j и Miskl, gen pwòp imaj Docker li yo. Pou òganize resipyan Docker nou te itilize yo Docker Konpoze.

Open Source DataHub: Platfòm rechèch ak dekouvèt Metadata LinkedIn

Figi 2: Achitekti DataHub *sous louvri**

Ou ka wè achitekti wo nivo DataHub nan imaj ki anwo a. Anplis eleman enfrastrikti yo, li gen kat resipyan Docker diferan:

datahub-gms: sèvis depo metadata

datahub-frontend: aplikasyon Jwe, sèvi koòdone DataHub la.

datahub-mce-consumer: aplikasyon Kafka Streams, ki itilize kouran evènman metadata chanjman (MCE) epi mete ajou magazen metadata a.

datahub-mae-consumer: aplikasyon Kafka Streams, ki itilize yon kouran evènman odit metadata (MAE) epi kreye yon endèks rechèch ak baz done graf.

Open sous dokiman depo ak pòs orijinal DataHub blog gen plis enfòmasyon detaye sou fonksyon divès kalite sèvis yo.

CI/CD sou DataHub se sous louvri

Sous louvri DataHub depo itilize TravisCI pou entegrasyon kontinyèl ak Hub Docker pou deplwaman kontinyèl. Tou de gen bon entegrasyon GitHub epi yo fasil pou mete sou pye. Pou pifò enfrastrikti sous ouvè devlope pa kominote a oswa konpayi prive (egzanp. Confluent), imaj Docker yo kreye epi deplwaye nan Docker Hub pou fasilite kominote a itilize. Nenpòt imaj Docker yo jwenn nan Docker Hub ka fasil pou itilize ak yon lòd senp docker rale.

Avèk chak angajman nan depo sous louvri DataHub, tout imaj Docker yo otomatikman bati epi deplwaye nan Docker Hub ak tag "dènye". Si Docker Hub se configuré ak kèk nonmen branch ekspresyon regilye yo, tout tags nan depo sous louvri yo tou lage ak non tag korespondan nan Docker Hub.

Sèvi ak DataHub

Mete kanpe DataHub se trè senp epi li konsiste de twa etap senp:

  1. Klone depo sous louvri a epi kouri tout resipyan Docker ak docker-compose lè l sèvi avèk script docker-compose yo bay la pou yon demaraj rapid.
  2. Telechaje echantiyon done yo bay nan depo a lè l sèvi avèk zouti liy kòmand yo bay tou.
  3. Browse DataHub nan navigatè w la.

Aktivman Suivi Gitter chat tou configuré pou kesyon rapid. Itilizatè yo kapab tou kreye pwoblèm dirèkteman nan depo GitHub la. Sa ki pi enpòtan, nou akeyi ak apresye tout fidbak ak sijesyon!

Plan pou lavni

Kounye a, chak enfrastrikti oswa mikwosèvis pou DataHub sous louvri yo bati kòm yon veso Docker, epi tout sistèm lan òkestre lè l sèvi avèk docker-konpoze. Bay popilarite a ak gaye toupatou Kubernetes, nou ta renmen tou bay yon solisyon ki baze sou Kubernetes nan fiti prè.

Nou planifye tou pou bay yon solisyon kle pou deplwaye DataHub sou yon sèvis nwaj piblik tankou Ble, AWS oswa Google nwaj. Etandone anons ki sot pase yo sou migrasyon LinkedIn nan Azure, sa pral aliman ak priyorite entèn ekip metadata a.

Denye men pa pi piti, gras a tout premye moun ki te adopte DataHub nan kominote sous ouvè a ki te evalye DataHub alphas epi ki te ede nou idantifye pwoblèm ak amelyore dokimantasyon yo.

Sous: www.habr.com

Add nouvo kòmantè