元数据摄取架构

MCE

DataHub 支持极其灵活的摄取架构,可以支持推送、拉取、异步和同步模型。
2. DataHub: 快速上手 - 图1
摄取的中心部分是元数据更改事件(Metadata Change Event,MCE),它表示上游系统正在传达的元数据更改。MCE-s可以通过Kafka发送,用于从源系统进行高度可扩展的异步发布。它们还可以直接发送到DataHub服务层公开的HTTP端点,以获得同步的成功/失败响应。

基于Pull

DataHub 附带一个基于 Python 的元数据摄取系统,该系统可以连接到不同的源以从中提取元数据。然后,此元数据通过 Kafka 或 HTTP 推送到 DataHub 存储层。元数据摄取管道可以与 Airflow 集成,以设置计划摄取或捕获沿袭。如果您没有找到已支持的源,则很容易编写自己的.

基于Push

只要您可以向 Kafka 发出元数据更改事件 (MCE)事件或通过 HTTP 进行 REST 调用,您就可以将任何系统与 DataHub 集成。为方便起见,DataHub 还提供了简单的Python 发射器,供您集成到您的系统中,以便在源点发出元数据更改 (MCE-s)。

内部组件

DataHub 附带一个基于 Kafka Streams 的作业 mce-consumer-job,它使用 MCE-s 并将它们转换为等效的 Pegasus 格式,并使用/ingest端点将其发送到 DataHub 服务层 (datahub-gms) 。

快速开始

环境准备

  • 2 CPUs, 8GB RAM, 2GB Swap area, and 10GB disk space
  • docker & docker-compose
  • jq
  • Python 3.6+ & pip(sudo easy_install pip)
    1. # 如果是新系统,一些系统底包必须要安装
    2. sudo yum groupinstall -y 'Development Tools'
    3. sudo yum install -y gcc gcc-c++ kernel-devel librdkafka-dev python-devel.x86_64 cyrus-sasl-devel.x86_64 python3-ldap libldap2-dev libsasl2-dev libsasl2-modules ldap-utils libxslt-devel libffi-devel openssl-devel python-devel python3-devel
    4. # 安装docker(使用的是AWS的Linux2)
    5. sudo amazon-linux-extras install docker
    6. # docker服务,启动|状态|停止
    7. sudo service docker start|status|stop
    8. # 给当前用户加入docker用户组
    9. sudo usermod -aG docker ${USER}
    10. # 修改docker默认配置
    11. sudo vim /etc/docker/daemon.json
    12. {
    13. "registry-mirrors": [
    14. "https://registry.docker-cn.com",
    15. "http://hub-mirror.c.163.com",
    16. "https://docker.mirrors.ustc.edu.cn"
    17. ],
    18. "data-root": "/data/docker"
    19. }
    20. # 安装docker-compose
    21. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    22. sudo chmod +x /usr/local/bin/docker-compose

    快速上手

  1. 安装 DataHub CLI

    python3 -m pip install --upgrade pip wheel setuptools
    # sanity check - ok if it fails
    python3 -m pip uninstall datahub acryl-datahub || true 
    python3 -m pip install --upgrade acryl-datahub
    python3 -m datahub version
    
  2. 部署 DataHub

    python3 -m datahub docker quickstart
    

    至此,DataHub搭建完成,登录DataHub UI:http://localhost:9002, username & password: datahub

    元数据摄取

  3. 定义食谱(Recipes)

    # A sample recipe that pulls metadata from Mysql and puts it into DataHub
    # using the Rest API.
    source:
    type: mysql
    config:
     username: sa
     password: ${MSSQL_PASSWORD}
     database: DemoData
    transformers:
    - type: "fully-qualified-class-name-of-transformer"
     config:
       some_property: "some.value"
    sink:
    type: "datahub-rest"
    config:
     server: "http://localhost:8080"
    
  4. 通过CLI摄取元数据

    #安装所需插件
    python3 -m pip install 'acryl-datahub[datahub-rest]'
    python3 -m pip install 'acryl-datahub[mysql]'
    python3 -m datahub ingest -c ./examples/recipes/mysql_to_datahub.yml
    

    重置

    python3 -m datahub docker nuke
    

    更新

    python3 -m datahub docker nuke --keep-data
    python3 -m datahub docker quickstart
    

    参考

    DataHub官网
    一站式元数据治理平台——Datahub入门宝典
    DataHub:流行的元数据架构介绍