Get Started With DataHub | DataHub
作为世界上最大的专业网络和Economic Graph的运营商,LinkedIn 的数据团队一直致力于扩展其基础架构,以满足我们不断增长的大数据生态系统的需求。随着数据量和丰富度的增长,数据科学家和工程师越来越难以发现可用的数据资产、了解其来源并根据洞察力采取适当的行动。为了帮助我们在这种增长的同时继续提高数据的生产力和创新,我们创建了一个通用的元数据搜索和发现工具 DataHub。
缩放元数据
为了提高 LinkedIn 数据团队的生产力,我们之前开发并开源了WhereHows,这是一个中央元数据存储库和数据集门户。存储的元数据类型包括技术元数据(例如,位置、模式、分区、所有权)和过程元数据(例如,沿袭、作业执行、生命周期信息)。WhereHows 还提供了一个搜索引擎来帮助定位感兴趣的数据集。
自从我们在 2016 年首次发布 WhereHows 以来,业界对通过使用元数据提高数据科学家的生产力的兴趣与日俱增。例如,在该领域开发的工具包括AirBnb 的 Dataportal、Uber 的 Databook、Netflix 的 Metacat、Lyft 的 Amundsen以及最近的 Google数据目录。在 LinkedIn,我们还一直忙于扩大我们的元数据收集范围,以支持新的用例,同时保持公平、隐私和透明。然而,我们开始意识到 WhereHows 存在根本性的局限性,无法满足我们不断变化的元数据需求。以下是我们从扩展 WhereHows 中吸取的经验教训的总结:
- 推送优于拉取:虽然直接从源中提取元数据似乎是收集元数据的最直接方式,但开发和维护集中的特定领域爬虫群很快就会变成一场噩梦。让各个元数据提供者通过 API 或消息将信息推送到中央存储库更具可扩展性。这种基于推送的方法还确保更及时地反映新的和更新的元数据。
- 概括优于具体: WhereHows 对数据集或作业的元数据应该是什么样子有强烈的看法。这导致了固定的 API、数据模型和存储格式。对元数据模型的一个小改动将导致堆栈上下游所需的级联更改。如果我们设计了一个与其存储和服务的元数据模型无关的通用架构,它的可扩展性会更高。这反过来又可以让我们专注于入职和发展强烈自以为是的元数据模型,而不必担心堆栈的较低层。
- 在线与离线一样重要:收集元数据后,很自然地想要分析该元数据以获取价值。一种简单的解决方案是将所有元数据转储到离线系统,例如 Hadoop,可以在其中执行任意分析。然而,我们很快发现仅仅支持离线分析是不够的。有许多用例,例如访问控制和数据隐私处理,必须在线查询最新的元数据。
- 关系真的很重要:元数据通常传达重要的关系(例如,沿袭、所有权和依赖关系),这些关系可以实现强大的功能,如影响分析、数据汇总、更好的搜索相关性等。将所有这些关系建模为一等公民和支持对它们进行高效的分析查询。
- 多中心宇宙:我们意识到仅仅围绕单个实体(数据集)对元数据进行建模是不够的。有一个完整的数据、代码和人类实体(数据集、数据科学家、团队、代码、微服务 API、指标、AI 功能、AI 模型、仪表板、笔记本等)生态系统需要通过一个集成和连接单个元数据图。
认识数据中心
大约一年前,我们回到绘图板并根据这些知识从头开始重新构建 WhereHows。与此同时,我们意识到 LinkedIn 对跨各种数据实体的一致搜索和发现体验以及将它们连接在一起的元数据图的需求不断增长。因此,我们决定扩大该项目的范围,以构建一个完全通用的元数据搜索和发现工具 DataHub,并怀着雄心勃勃的愿景:将 LinkedIn 员工与对他们重要的数据联系起来。
我们将单一的 WhereHows 堆栈分解为两个不同的堆栈:模块化 UI 前端和通用元数据架构后端。新架构使我们能够迅速扩展我们的元数据收集范围,而不仅仅是数据集和作业。在撰写本文时,DataHub 已经存储并索引了数千万条元数据记录,这些记录包含 19 个不同的实体,包括数据集、指标、作业、图表、AI 功能、人员和组。我们还计划在不久的将来为机器学习模型和标签、实验、仪表板、微服务 API 和代码添加元数据。
模块化用户界面
DataHub 网络应用程序是大多数用户与元数据交互的方式。该应用程序使用Ember Framework编写,并在Play中间层之上运行。为了使开发具有可扩展性,我们利用了各种现代网络技术,包括ES9、ES.Next、TypeScript、带有Yarn Workspaces的 Yarn 以及Prettier和ESLint等代码质量工具。表示层、控制层和数据层被模块化到包中,因此应用程序中的特定视图是根据相关包的组合构建的。
组件服务框架
在应用模块化 UI 基础架构时,我们将 DataHub Web 应用程序构建为一系列内聚的功能对齐组件,这些组件被分组到可安装的包中。该包架构在基础上采用了 Yarn Workspaces 和 Ember 附加组件,并使用 Ember 的组件和服务进行了组件化。您可以将其视为使用小构建块(即组件和服务)构建的 UI,以创建更大的构建块(即 Ember 附加组件和 npm / Yarn 包),当这些构建块组合在一起时,最终构成 DataHub 网络应用程序.
以组件和服务为应用程序的核心,这个框架允许我们将不同的方面分开并将应用程序中的其他功能组合在一起。此外,每一层的分段提供了一个高度可定制的架构,允许消费者扩展或简化他们的应用程序,以仅利用与其领域相关的功能或载入新的元数据模型。
与 DataHub 交互
在最高级别,前端提供三种类型的交互:(1) 搜索,(2) 浏览,以及 (3) 查看/编辑元数据。以下是实际应用程序的一些示例屏幕截图: