DataHub:通用的元数据搜索和发现工具

DataHub:通用的元数据搜索和发现工具。



作为全球最大的专业网络和经济图形运营商,LinkedIn的数据团队正在不断努力扩展其基础架构,以满足我们不断增长的大数据生态系统的需求。随着数据量和种类的增长,数据科学家和工程师越来越难以发现可用的数据资产,了解其来源并根据数据采取适当的措施。为了帮助我们继续扩展性能并创新数据库,我们创建了一个全面的元数据搜索和发现工具DataHub。



编者注:自从发布此博客文章以来,团队已于2020年2月使用源代码打开了DataHub此处了解有关如何开源平台的更多信息



扩展元数据



为了提高LinkedIn数据组的工作效率,我们先前开发并开放了源代码Howhow,这是一个中央元数据存储库和数据集门户。存储的元数据类型包括技术元数据(例如,位置,架构,部分,所有权)和过程元数据(例如,来源,工作完成)。WhereHows还有一个搜索引擎,可以帮助您找到感兴趣的数据集。



自2016年首次发布WhereHows以来,业界对通过元数据提高数据科学家的生产力的兴趣日益浓厚。例如,在此领域开发的工具包括Dataportal AirBnbDatabook UberMetacat NetflixAmundsen Lyft和最近的Google数据目录。在领英,我们还一直在忙于扩展新用例的元数据集合,同时保持隐私。但是,我们得出的结论是,WhoHows具有根本的局限性,使我们无法满足不断增长的元数据需求。这是我们在使用WhereHows缩放时学到的知识:



  1. 推送比推送更好:尽管直接从源获取元数据似乎是收集元数据的最简单方法。更具可扩展性的是使用单独的元数据提供程序通过API或消息将信息推送到中央存储库。这种基于推送的方法还可以更及时地显示新的和更新的元数据。
  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, , .



我们通过向产品添加更多有趣的用户案例和相关算法来继续改进DataHub。我们还计划添加内置的GraphQL支持,并在不久的将来使用Pegasus域特定语言(PDL)来自动生成代码。同时,我们正在积极努力与开源社区共享“ WhereHows”的发展,我们将在DataHub公开发布后发布公告。




All Articles