DataHub: un outil polyvalent de recherche et de découverte de métadonnées

DataHub: un outil polyvalent de recherche et de découverte de métadonnées.



En tant qu'opérateur du plus grand réseau professionnel et graphique économique au monde , l'équipe de données de LinkedIn travaille constamment à faire évoluer son infrastructure pour répondre aux exigences de notre écosystème de Big Data en constante croissance. À mesure que le volume et la diversité des données augmentent, il devient plus difficile pour les scientifiques et les ingénieurs des données de découvrir les actifs de données disponibles, de comprendre leurs origines et de prendre les mesures appropriées en fonction des données. Pour nous aider à continuer à faire évoluer les performances et à innover dans la base de données, nous avons créé un outil complet de recherche et de découverte de métadonnées, DataHub.



Note de l'éditeur: depuis la publication de cet article de blog, l'équipe a ouvert le DataHub avec le code source en février 2020 . En savoir plus sur l'open source pour la plate-forme ici .



Mise à l'échelle des métadonnées



Pour améliorer la productivité du groupe de données LinkedIn, nous avons précédemment développé et ouvert WhereHows, un référentiel central de métadonnées et un portail pour les ensembles de données. Le type de métadonnées stockées comprend à la fois les métadonnées techniques (par exemple, emplacement, schémas, sections, propriété) et les métadonnées de processus (par exemple, origine, achèvement des travaux). WhereHows dispose également d'un moteur de recherche qui vous aide à trouver des ensembles de données intéressants.



WhereHows 2016 , . , , , Dataportal AirBnb, Databook Uber, Metacat Netflix, Amundsen Lyft Data Catalog Google. LinkedIn . , WhereHows , . , WhereHows:



  1. Push , pull: . API . push .
  2. , : WhereHows , . API, . . , , , . , , , .
  3. , . , , , . — , Hadoop, . , . , , .
  4. . (, , ), , , , . .
  5. : , , ( ). , ( , , , , API , , , , , . .), .


DataHub



WhereHows , . LinkedIn , , . , , DataHub, : LinkedIn , .



WhereHows : . , . DataHub , 19 , , , , , , . , , , API .





- DataHub — , . Ember Framework Play. , -, ES9, ES.Next, TypeScript, Yarn with Yarn Workspaces, , Prettier ESLint. , , .





, - DataHub , , . Yarn Workspaces Ember Ember. , (, ) (, Ember npm / Yarn), - DataHub .



, . , , , , .



DataHub



: (1) , (2) (3) / . :















, , . , . , OR, NOT , .



DataHub , . , , . , « », .



— / — . « », . , , , , . , , , , , , , . . , , .





DataHub, , . :



  1. : .
  2. : API, .
  3. : , .
  4. : , .




, — «, ». , :



  1. — : , , , .
  2. : , . , , (ACL) , , , . , , .


, , Pegasus, , LinkedIn. Pegasus . , Pegasus , .



, Pegasus , , - (ERD).





— , — . , OwnedBy, HasMember HasAdmin. , , , , .



ERD, , . , « ». , , . : , . . , , . .



, , , , , firstName , firstName . , « » .



Pegasus, , Pegasus (PDSC). . -, PDSC User:



{
  "type": "record",
  "name": "User",
  "fields": [
    {
      "name": "urn",
      "type": "com.linkedin.common.UserUrn",
    },
    {
      "name": "firstName",
      "type": "string",
      "optional": true
    },
    {
      "name": "lastName",
      "type": "string",
      "optional": true
    },
    {
      "name": "ldap",
      "type": "com.linkedin.common.LDAP",
      "optional": true
    }
  ]
}


URN, GUID. User , , LDAP, .



PDSC OwnedBy:



{
  "type": "record",
  "name": "OwnedBy",
  "fields": [
    {
      "name": "source",
      "type": "com.linkedin.common.Urn",
    },
    {
      "name": "destination",
      "type": "com.linkedin.common.Urn",
    },
    {
      "name": "type",
      "type": "com.linkedin.common.OwnershipType",
    }
  ],
  "pairings": [
    {
      "source": "com.linkedin.common.urn.DatasetUrn",
      "destination": "com.linkedin.common.urn.UserUrn"
    }
  ]
}


, , «» « », URN. , , «». , «», URN. OwnedBy .



, . , type ldap. , PDSC. « — », .



{
  "type": "record",
  "name": "Ownership",
  "fields": [
    {
      "name": "owners",
      "type": {
        "type": "array",
        "items": {
          "name": "owner",
          "type": "record",
          "fields": [
            {
              "name": "type",
              "type": "com.linkedin.common.OwnershipType"
            },
            {
              "name": "ldap",
              "type": "string"
            }
          ]
        }
      }
    }
  ]
}


, , : , ERD. « » .





DataHub : API, Kafka. , , , .



API DataHub Rest.li, RESTful, LinkedIn. Rest.li Pegasus , , , . , API — API .



, Kafka (MCE), , URN . MCE Apache Avro, Pegasus.



API Kafka . , , , . .



LinkedIn Kafka - , . MCE , , , . , Apache Samza . Samza , . Avro Pegasus API Rest.li .







, , . DataHub :



  1. -
  2. ,


DataHub , . , Espresso — NoSQL LinkedIn, - CRUD. Galene . , , , . , , .



DataHub (DAO), DAO -, DAO DAO. DAO , - - DataHub. DataHub , LinkedIn.





DAO — (CDC). , DAO «-» (MAE). MAE URN , . -, MAE , . MCE, MAE .





— . , . - Samza, MAE. MAE. , .



, URN MAE .







DataHub, LinkedIn. .



DataHub LinkedIn . 1500 , , . LinkedIn , 23 , 25 , 500 , , LinkedIn, , .



Nous continuons à améliorer DataHub en ajoutant des user stories et des algorithmes de pertinence plus intéressants au produit. Nous prévoyons également d'ajouter la prise en charge intégrée de GraphQL et d'utiliser Pegasus Domain Specific Language (PDL) pour automatiser la génération de code dans un proche avenir. En attendant, nous travaillons activement pour partager cette évolution de WhereHows avec la communauté open source, et nous ferons une annonce après la sortie publique du DataHub.




All Articles