DataHub:用途の広いメタデータ検索および検出ツール。
LinkedInのデータチームは、世界最大のプロフェッショナルネットワークと経済的なグラフィックスの運営者として、成長を続けるビッグデータエコシステムの需要を満たすためにインフラストラクチャの拡張に絶えず取り組んでいます。データの量と種類が増えるにつれ、データ科学者やエンジニアが利用可能なデータ資産を見つけ、その出所を理解し、データに基づいて適切な行動を取ることが難しくなります。パフォーマンスの拡張とデータベースの革新を継続できるように、包括的なメタデータ検索および検出ツールであるDataHubを作成しました。
編集者注:このブログ投稿が公開されて以来、チームは2020年2月にソースコードを使用してDataHubを開きました。プラットフォームをオープンソース化する方法について詳しくは、こちらをご覧ください。
メタデータのスケーリング
LinkedInデータグループの生産性を向上させるために、以前に、データセットの中央メタデータリポジトリおよびポータルであるWhereHowsを開発してオープンソースにしました。保存されるメタデータのタイプには、技術メタデータ(場所、スキーマ、セクション、所有権など)とプロセスメタデータ(オリジン、ジョブ完了など)の両方が含まれます。WhereHowsには、関心のあるデータセットを見つけるのに役立つ検索エンジンもあります。
2016年にWhereHowsを最初にリリースして以来、メタデータを使用してデータサイエンティストの生産性を向上させるという業界への関心が高まっています。たとえば、この分野で開発されたツールには、Dataportal AirBnb、Databook Uber、Metacat Netflix、Amundsen Lyft、そして最近ではGoogleのデータカタログが含まれます。 LinkedInでは、プライバシーを維持しながら、新しいユースケースのメタデータのコレクションを拡張することにも忙しくしています。ただし、WhereHowsには基本的な制限があり、増大するメタデータのニーズを満たすことができないと結論付けました。 WhereHowsスケーリングでの作業中に学んだことは次のとおりです。
- Push , pull: . API . push .
- , : WhereHows , . API, . . , , , . , , , .
- , . , , , . — , Hadoop, . , . , , .
- . (, , ), , , , . .
- : , , ( ). , ( , , , , 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, , . :
- : .
- : API, .
- : , .
- : , .
, — «, ». , :
- — : , , , .
- : , . , , (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.
LinkedIn Kafka - , . MCE , , , . , Apache Samza . Samza , . Avro Pegasus API Rest.li .
, , . DataHub :
- -
- ,
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 Domain Specific Language(PDL)を使用して、近い将来、コード生成を自動化する予定です。当面は、このWhereHowsの進化をオープンソースコミュニティと共有するために積極的に取り組んでおり、DataHubの公開後に発表する予定です。