元数据摄取架构
MCE
DataHub 支持极其灵活的摄取架构,可以支持推送、拉取、异步和同步模型。
摄取的中心部分是元数据更改事件(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)
# 如果是新系统,一些系统底包必须要安装
sudo yum groupinstall -y 'Development Tools'
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
# 安装docker(使用的是AWS的Linux2)
sudo amazon-linux-extras install docker
# docker服务,启动|状态|停止
sudo service docker start|status|stop
# 给当前用户加入docker用户组
sudo usermod -aG docker ${USER}
# 修改docker默认配置
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"data-root": "/data/docker"
}
# 安装docker-compose
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
sudo chmod +x /usr/local/bin/docker-compose
快速上手
安装 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
部署 DataHub
python3 -m datahub docker quickstart
至此,DataHub搭建完成,登录DataHub UI:
http://localhost:9002
, username & password:datahub
元数据摄取
定义食谱(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"
通过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
参考