@
目录
datahub 官网地址 https://datahubproject.io/ 最新版本v0.10.2
datahub 官网文档地址 https://datahubproject.io/docs/
datahub 源码地址 https://github.com/datahub-project/datahub
DataHub是一个面向现代数据栈的开源元数据平台,依赖于元数据管理的现代方法。其前身是LinkedIn为了提高数据团队的工作效率,开发并开源的WhereHows;DataHub的可扩展元数据平台支持数据发现、数据可观察性和联合治理,有助于控制数据生态系统的复杂性。
DataHub是一个现代数据目录,旨在实现端到端数据发现、数据可观察性和数据治理。这个可扩展的元数据平台是为开发人员构建的,以控制其快速发展的数据生态系统的复杂性,并为数据从业者利用其组织内数据的总价值。
元数据是开启数据治理的探索之路的关键环节。
在DAMA-DMBOK2中描述元数据最常见的定义是“关于数据的数据”。这个定义非常简单,但也容易引起误解。可以归类为元数据的信息范围很广,不仅包括技术和业务流程、数据规则和约束,还包括逻辑数据结构与物理数据结构等。它描述了数据本身(如数据库、数据元素、数据模型),数据表示的概念(如业务流程、应用系统、软件代码、技术基础设施),数据与概念之间的联系(关系)。元数据可以帮助组织理解其自身的数据、系统和流程,同时帮助用户评估数据质量,对数据库与其他应用程序的管理来说是不可或缺的。它有助于处理、维护、集成、保护和治理其他数据。
简而言之,元数据是“ 提供有关其他数据的信息的数据,元数据也是数据,元数据管理是为了对数据资产进行有效的组织。它使用元数据来帮助管理他们的数据。它还可以帮助数据专业人员收集、组织、访问和丰富元数据,以支持数据治理。
DataHub有巨大的生态系统,预构建集成包括Kafka, Airflow, MySQL, SQL Server, Postgres, LDAP, Snowflake, Hive, BigQuery等等;且社区正在不断添加更多的集成。
搜索和发现
现代数据治理
实时治理:action框架支持以下实时用例
管理实体所有权:快速方便地为用户和用户组分配实体所有权。
使用标签、术语表和域进行管理:授权数据所有者通过以下方式管理其数据实体
DataHub管理
创建用户、组和访问策略:DataHub管理员可以创建policy来定义谁可以对哪些资源执行哪些操作。当您创建一个新的策略时,您将能够定义以下内容
从UI中摄取元数据:使用DataHub用户界面创建、配置、调度和执行批处理元数据摄取。通过最小化操作定制集成管道所需的开销,这使得将元数据放入DataHub变得更加容易。
元数据管理的现代方法
通用概念
元数据模型
元数据管理一般具备如下功能:
Apache Atlas 官网地址 https://atlas.apache.org/ 最新版本2.3.0
Apache Atlas 源码地址 https://github.com/apache/atlas
Apache Atlas是一套可扩展的核心基础治理服务,使企业能够有效地满足Hadoop中的合规要求,并允许与整个企业数据生态系统集成;Apache Atlas为组织提供开放的元数据管理和治理功能,以构建数据资产的目录,对这些资产进行分类和治理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作功能。有官方文档,部署比较重
Amundsen 官网地址 https://www.amundsen.io/amundsen/ 最新版本4.1.1
Amundsen 源码地址 https://github.com/amundsen-io/amundsen
Amundsen是一个开源数据发现和元数据引擎,用于提高数据分析师、数据科学家和工程师在与数据交互时的生产力。今天,它通过索引数据资源(表、仪表板、流等)和基于使用模式的页面级搜索来实现这一点(例如,查询次数多的表比查询次数少的表显示得早)。可以把它想象成谷歌数据搜索;有官方文档
Marquez 官网地址 https://marquezproject.ai/ 最新版本0.33.0
Marquez 源码地址 https://github.com/MarquezProject/marquez
Marquez是一个开源元数据服务,用于收集、聚合和可视化数据生态系统的元数据。它维护数据集如何被消费和产生的来源,提供作业运行时和数据集访问频率的全局可见性,数据集生命周期管理的集中化等;Marquez是由WeWork发布并开源的。有官方文档
Metacat 源码地址 https://github.com/Netflix/metacat 最新版本1.2.2
Metacat是一个统一的元数据探索API服务。可以探索Hive, RDS, Teradata, Redshift, S3和Cassandra。Metacat提供有哪些数据、数据位于何处以及如何处理这些数据的信息。没有官方文档,且2019年后没有发布新的release版本
DataHub是第三代元数据平台,支持为现代数据栈构建的数据发现、协作、治理和端到端可观察性。DataHub采用模型优先的理念,专注于解锁不同工具和系统之间的互操作性。
DataHub的架构有三个主要亮点
DataHub平台由如下图所示的组件组成
DataHub支持极其灵活的摄取架构,可以支持推、拉、异步和同步模型。
DataHub服务层的高级系统关系图如下:
主组件称为元数据服务,它公开了一个REST API和一个GraphQL API,用于对元数据执行CRUD操作。该服务还公开了搜索和图形查询api,以支持二级索引样式的查询、全文搜索查询以及血缘等关系查询。此外数据中心前端服务在元数据图之上公开GraphQL API。DataHub服务层组件:
Docker
Docker Compose v2
Python 3.7+
python3 -m pip install --upgrade pip wheel setuptools
python3 -m pip install --upgrade acryl-datahub
datahub version
# 本地部署DataHub实例,使用docker-compose部署一个DataHub实例
datahub docker quickstart
成功启动后则可以直接访问DataHub UI (http://hadoop2:9002),登录用户名和密码为datahub/datahub,登录后主页如下
# 也可以直接下载https://raw.githubusercontent.com/datahub-project/datahub/master/docker/quickstart/docker-compose-without-neo4j-m1.quickstart.yml这个文件,也可以下载指定版本的https://github.com/datahub-project/datahub/archive/refs/tags/v0.10.2.tar.gz,最后找到相应docker-compose文件然后通过docker-compose启动
docker-compose -f docker-compose-without-neo4j-m1.quickstart.yml up -d
# 如要停止DataHub的快速启动,可以发出以下命令。
datahub docker quickstart --stop
# 重置DataHub,要清除DataHub的所有状态(例如,在摄取自己的状态之前),可以使用CLI的nuke命令
datahub docker nuke
# 摄取样例元数据可以使用下面命令,执行命令后可以查看摄取数据
datahub docker ingest-sample-data
查看具体元数据信息
还支持查看谱系或者沿袭,也即是常说血缘关系
DataHub支持基于推和基于拉的元数据集成。
基于推送的集成允许在元数据更改时直接从数据系统发出元数据,而基于拉的集成允许通过连接到数据系统并以批处理或增量批处理的方式提取元数据,从而从数据系统“抓取”或“摄取”元数据。支持这两种机制意味着可以以最灵活的方式与所有系统集成。
内置在DataHub中的基于拉的元数据摄取系统,该系统可以轻松地与数据堆栈中的各种数据源集成。
数据源:从中提取元数据的数据系统称为数据源。摄取元数据的所有源例如BigQuery、Looker、Tableau等其他许多数据源,目前官方上有55个。
接收器:是元数据的目的地。在为DataHub配置摄取时,可能会通过REST (DataHub -sink)或Kafka (DataHub - Kafka)接收器将元数据发送到DataHub。在某些情况下,文件接收器还有助于在调试期间存储元数据的持久脱机副本。大多数摄取系统和指南假设的默认接收器是数据中心休息接收器,但是您也应该能够为其他接收器调整所有接收器!
食谱:配方是将所有这些组合在一起的主要配置文件。它告诉我们的摄取脚本从哪里提取数据(源),在哪里放置数据(接收)。
处理食谱中的敏感信息:自动扩展配置中的环境变量(例如${MSSQL_PASSWORD}),类似于GNU bash或docker-compose文件中的变量替换。应该使用这种环境变量替换来掩盖配方文件中的敏感信息。只要您可以安全地将环境变量获取到摄取过程中,就不需要在配方中存储敏感信息。
转换:如果希望在数据到达摄取接收器之前对其进行修改——例如添加额外的所有者或标记——可以使用转换器编写自己的模块,并将其与DataHub集成。
在获取数据源的时候,只需要编写简单的yml文件就可以完成元数据的获取。这里采集MySQL数据库名为nacos_config
先检查是否有datahub的mysql和datahub-rest插件
# 安装datahub mysql插件
pip install 'acryl-datahub[mysql]'
# 查看datahub 插件列表
python3 -m datahub check plugins
编写摄取文件,vim mysql_to_datahub_rest.yml
source:
type: mysql
config:
# Coordinates
host_port: 192.168.50.95:3306
database: nacos_config
# Credentials
username: root
password: 123456
sink:
type: "datahub-rest"
config:
server: "http://localhost:8080"
通过命令执行摄取
datahub ingest -c mysql_to_datahub_rest.yml
通过UI页面也可以查看摄取记录
查看刚刚添加数据库集
这里建立ClickHouse的测试数据库名为test
# 安装clickhouse驱动
pip install 'acryl-datahub[clickhouse]'
编写摄取文件,vim clickhouse_to_datahub_rest.yml
source:
type: clickhouse
config:
host_port: clickhouse-server:8123
protocol: http
# Credentials
username: default
password: 123456
# Options,在datahub UI采集元数据显示的名称
platform_instance: test
include_views: True # whether to include views, defaults to True
include_tables: True # whether to include views, defaults to True
sink:
type: "datahub-rest"
config:
server: "http://localhost:8080"
通过命令执行摄取
datahub ingest -c clickhouse_to_datahub_rest.yml
手机扫一扫
移动阅读更方便
你可能感兴趣的文章