DataHub 是由领英的数据团队开源的一款提供元数据搜索与发现的工具。现在的 DataHub 是由 WhereHows 演变过来的。
WhereHows 为什么会失败呢?领英给出的解释是:
For example, tools developed in this space include AirBnb’s Dataportal, Uber’s Databook, Netflix’s Metacat, Lyft’s Amundsen, and most recently Google’s Data Catalog. At LinkedIn, we have also been busy expanding our scope of metadata collection to power new use cases while preserving fairness, privacy, and transparency. However, we came to realize WhereHows had fundamental limitations that prevented it from meeting our evolving metadata needs.
总的来说就是,做数据治理的框架的竞争者越来越多,也越来越优秀;WhereHows 虽然在 2016 年就发布了,但是使用者很少,也无法满足领英自身的需要,所以我们重新开发了一个框架 DataHub。
在 2018 年的时候,腾讯合作运营中心开始做大数据平台时,关于数据管理方向的框架选型的调研名单上就有了 WhereHows,同期上了调研名单的还有 Apache Atlas。但是这两个框架部署麻烦,而且部署成功后,非常难用,有很高的上手门槛,再加之使用的编程语言又小众,直接被排除了。同时也基本预想到了这两个框架的结局,大概率红不了。
2019 年率先开源的 Amundsen 和 Datahub 就避免了这个问题。毕竟作为数据管理工具,技术的花里胡哨不是最重要的,最重要的是服务的数据科学家、数据工程师、分析师要满意,要非常容易上手。
所以 Amundsen 和 DataHub 都提供了一个类似百度搜索框的页面,用户只要输入关键词就能找到所需的所有内容,上手难度接近于零。
另外在后续的发展中,Amundsen 和 Datahub 都认识到了数据管理,不仅仅包括了数据存储的元数据,而应该包含整个数据生态系统(数据集、代码、模型、看板、调度系统等等),时髦点来说,就是现代技术栈(Modern Data Stack)
We realized that it is not enough to simply model metadata centered around a single entity (a dataset). There is an entire ecosystem of data, code, and human entities (datasets, data scientists, teams, code, microservice APIs, metrics, AI features, AI models, dashboards, notebooks, etc.) that need to be integrated and connected through a single metadata graph.
从底层架构来说,因为引入了多样的数据生态系统,push 元数据的方式就要比之前设计的 pull 好多了。让数据管理平台自己通过 pull 的方式处理不同数据组件或者框架,那难度值和复杂度就无限上升了,不如采用 push 的方式,将能力下沉,数据管理平台只需要处理统一格式后的元数据。
Push is better than pull: While pulling metadata directly from the source seems like the most straightforward way to gather metadata, developing and maintaining a centralized fleet of domain-specific crawlers quickly becomes a nightmare.
其实这也意味着需要设计一个可扩展性和通用性极高的元数据模型。典型的反例就是 WhereHows,元数据格式的一点点改变就导致上下游全部发生改变,
General is better than specific: WhereHows is strongly opinionated about how the metadata for a dataset or a job should look like. This results in an opinionated API, data model, and storage format. A small change to the metadata model will lead to a cascade of changes required up and down the stack. It would have been more scalable had we designed a general architecture that is agnostic to the metadata model it stores and serves. This in turn would have allowed us to focus on onboarding and evolving strongly opinionated metadata models without worrying about the lower layers of the stack.
具体的设计可以参考领英发布的两篇文章,详细的介绍了 DataHub 的理念。