编辑
2022-05-25
数据治理
00
请注意,本文编写于 486 天前,最后修改于 371 天前,其中某些信息可能已经过时。

目录

产品介绍
使用场景
部署方案
环境要求
安装依赖包
部署
查看
销毁容器等
使用指南&FAQ

国外数据治理开源项目,DataHub的安装,应用探索。

产品介绍

前身为LinkedIn 的数据团队开发的 WhereHow,WhereHow 围绕着任何一个大数据系统中最重要的组成部分数据本身构建了一整套关于数据处理流程、使用人员和相关洞见的集中式平台和相应网页。

官网地址:https://datahubproject.io/

Demo地址:https://demo.datahubproject.io/

github开源地址:https://github.com/datahub-project/datahub

CSDN介绍链接:https://blog.csdn.net/ZYC88888/article/details/119213446

CSDN专栏介绍:https://cloud.189.cn/t/YZ3Ejyn6nUzq(访问码:9uhx)

各元数据管理系统实现功能对比:

img

使用场景

  1. 元数据收集、发现,结构变更通知;
  2. 数据血缘,开源版暂时不支持字段级血缘关系,不支持自动发现,需自己写脚本解析执行计划收集表字段关系;脚本样例:https://datahubproject.io/docs/lineage/sample_code
  3. API接口获取元数据
  4. 标签管理
  5. 业务域划分
  6. 权限控制

部署方案

环境要求

uname -a #CENTOS 7.9&8.5 安装成功,没特殊要求,其他发行版指令、依赖包不一样 python3 -V #0.8以后要求python版本大于3.6 java version #1.8 docker version #Docker version 20.10.16

部署附件:

https://cloud.189.cn/t/6RNFNbYVzM3y(访问码:uqk6)

下面这仨先不用下载

https://cloud.189.cn/t/Fb6jIrZbEFzq(访问码:oar2)

https://cloud.189.cn/t/yuuQZfryiUNf(访问码:qym5)

https://cloud.189.cn/t/FR7v2mbee2y2(访问码:mv0m)

安装依赖包

yum -y install libffi-devel yum -y install zlib* yum -y install gcc yum -y install git yum -y install python3-devel yum -y install cyrus-sasl-devel

安装必要插件时使用

shell
yum groupinstall "Development tools" yum install openldap-devel python-devel

python 安装好后安装

shell
pip install pyopenssl ndg-httpsclient pyasn1 pip install -U urllib3 pip install -U channels pip install requests[security] pip3 install toml pip --cert /user/local/cacert.pem install -U channels

python编译安装 (python3 -V 大于3.6的忽略)

shell
cd /opt/module/Python-3.8.0 #编译安装 ./configure --prefix=/usr/local/python3 sudo make && sudo make install #创建软连接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3 #查看版本 python3 -V

great_expectations 插件安装 (root环境执行pip指令会有提示权限问题,忽略即可,也可以进入虚拟环境运行)

shell
python -m venv /usr/bin/venv source usr/bin/activate pip install great_expectations

下载安装docker-compose、jq

shell
wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose mv jq-linux64 /usr/local/bin/jq chmod +x /usr/local/bin/docker-compose chmod +x /usr/local/bin/jq

部署

复制后台安装包

shell
git clone git://github.com/linkedin/datahub.git

有时会连接失败,可以用上面网盘下载下来的安装包使用sftp上传至根目录

shell
mkdir -p /opt/datahub #解压至指定文件夹 tar -zxvf datahub-0.8.34.tar.gz -C /opt/datahub

后台初始化运行/shell 运行

shell
cd /opt/datahub/docker mkdir logs touch logs/quickstart.log nohup ./quickstart.sh > logs/quickstart.log 2>&1 & tail -200f logs/quickstart.log

安装前台

shell
pip install --upgrade pip wheel setuptools pip uninstall datahub acryl-datahub || true pip install --upgrade acryl-datahub datahub version

检查前台运行情况

shell
pip show acryl_datahub

docker方式启动(上面是shell运行方式,两者不能同时跑) 后面可以指定启动配置文件,默认没有图数据库组件,即没血缘关系

shell
datahub docker quickstart --quickstart-compose-file /opt/datahub/docker/quickstart/docker-compose.quickstart.yml

检查各组件运行情况

shell
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}"

CONTAINER ID NAMES PORTS STATUS feccca9dc28d datahub-frontend-react 0.0.0.0:9002->9002/tcp, :::9002->9002/tcp Up 2 hours (healthy) cb58e6dd06c9 datahub-datahub-actions-1 Up 2 hours fdc533e04c62 schema-registry 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp Up 2 hours 3d6985bdb797 broker 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp, 0.0.0.0:29092->29092/tcp, :::29092->29092/tcp Up 2 hours e8552b179b85 datahub-gms 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp Up 2 hours (healthy) dd45ab58216d mysql 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp Up 2 hours 8ce0c1069530 zookeeper 2888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 3888/tcp Up 2 hours 0c54c0cea09c neo4j 0.0.0.0:7474->7474/tcp, :::7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp, :::7687->7687/tcp Up 2 hours 87c2617c36da elasticsearch 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp Up 2 hours (healthy)

#检查插件

shell
datahub check plugins

安装数据源插件

shell
pip install 'acryl-datahub[mysql]' pip install 'acryl-datahub[bigquery]' pip install 'acryl-datahub[bigquery-usage]' pip install 'acryl-datahub[druid]' pip install 'acryl-datahub[hive]' pip install 'acryl-datahub[kafka]' pip install 'acryl-datahub[kafka-connect]' pip install 'acryl-datahub[metabase]' pip install 'acryl-datahub[mongodb]' pip install 'acryl-datahub[mssql]' pip install 'acryl-datahub[mariadb]' pip install 'acryl-datahub[openapi]' pip install 'acryl-datahub[oracle]' pip install 'acryl-datahub[postgres]' pip install 'acryl-datahub[sqlalchemy]'

目标端插件

shell
pip install 'acryl-datahub[datahub-rest]' pip install 'acryl-datahub[datahub-kafka]'

airflow组件(暂时用不到,crontab可实现定时更新元数据)

shell
pip install acryl-datahub[airflow]

降级great_expectations

python 包great_expectation升级至最新版本后datahub未适配,必需降级至0.14.0

shell
pip install --upgrade great-expectations==0.14.0

血缘关系开启(未成功)

SHELL
# For REST-based: airflow connections add --conn-type 'datahub_rest' 'datahub_rest_default' --conn-host 'http://localhost:8080' # For Kafka-based (standard Kafka sink config can be passed via extras): airflow connections add --conn-type 'datahub_kafka' 'datahub_kafka_default' --conn-host 'broker:9092' --conn-extra '{}'

添加配置文件

shell
vim ./airflow/airflow.cfg
cfg
[lineage] backend = datahub_provider.lineage.datahub.DatahubLineageBackend datahub_kwargs = { "datahub_conn_id": "datahub_rest_default", "cluster": "prod", "capture_ownership_info": true, "capture_tags_info": true, "graceful_exceptions": true } # The above indentation is important!

导入MySQL元数据

shell
vim /opt/datahub/docker/ingestion/mysql_datahub.yml
yaml
source: type: "mysql" config: username: "user_xxx" password: "xxxxx" database: "yourdatabase" host_port: "10.10.1.10:3306" sink: type: "datahub-rest" config: server: 'http://localhost:8080'

导入操作

shell
datahub ingest -c /opt/datahub/docker/ingestion/mysql_datahub.yml

使用linux定时任务定时导入数据源,crontab 计算器https://www.matools.com/crontab

shell
#编辑定时器 crontab -e #按 i 进入编辑模式 添加每3小时执行一次任务 后保存退出 0 0 0-3 * * ? datahub ingest -c /opt/datahub/docker/ingestion/mysql_datahub.yml #查看任务列表 crontab -l

查看

http://ip:9002 (机器必需开启9002端口外网访问)

销毁容器等

关闭后台各docker容器 (保留数据)

shell
datahub docker nuke --keep-data

docker关闭、删除所有容器

shell
docker stop $(docker ps -a -q) docker rm $(docker ps -aq)

查看docker运行中项目日志

css
docker logs -f 容器ID docker logs -f -t --tail 100 容器ID

查看docker-compose运行日志

r
docker-compose logs -f docker-compose logs

使用指南&FAQ

待补充

本文作者:wangcw

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!