产品介绍
前身为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)
各元数据管理系统实现功能对比:
使用场景
- 元数据收集、发现,结构变更通知;
- 数据血缘,开源版暂时不支持字段级血缘关系,不支持自动发现,需自己写脚本解析执行计划收集表字段关系;脚本样例:https://datahubproject.io/docs/lineage/sample_code
- API接口获取元数据
- 标签管理
- 业务域划分
- 权限控制
部署方案
环境要求
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)
安装依赖包
1 2 3 4 5 6
| 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
|
安装必要插件时使用
1 2
| yum groupinstall "Development tools" yum install openldap-devel python-devel
|
python 安装好后安装
1 2 3 4 5 6
| 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的忽略)
1 2 3 4 5 6 7 8 9
| 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指令会有提示权限问题,忽略即可,也可以进入虚拟环境运行)
1 2 3
| python -m venv /usr/bin/venv source usr/bin/activate pip install great_expectations
|
下载安装docker-compose、jq
1 2 3 4 5 6
| 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
|
部署
复制后台安装包
1
| git clone git://github.com/linkedin/datahub.git
|
有时会连接失败,可以用上面网盘下载下来的安装包使用sftp上传至根目录
1 2 3
| mkdir -p /opt/datahub #解压至指定文件夹 tar -zxvf datahub-0.8.34.tar.gz -C /opt/datahub
|
后台初始化运行/shell 运行
1 2 3 4 5
| cd /opt/datahub/docker mkdir logs touch logs/quickstart.log nohup ./quickstart.sh > logs/quickstart.log 2>&1 & tail -200f logs/quickstart.log
|
安装前台
1 2 3 4 5
| pip install --upgrade pip wheel setuptools pip uninstall datahub acryl-datahub || true pip install --upgrade acryl-datahub
datahub version
|
检查前台运行情况
docker方式启动(上面是shell运行方式,两者不能同时跑) 后面可以指定启动配置文件,默认没有图数据库组件,即没血缘关系
1
| datahub docker quickstart --quickstart-compose-file /opt/datahub/docker/quickstart/docker-compose.quickstart.yml
|
检查各组件运行情况
1
| 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)
#检查插件
安装数据源插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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]'
|
目标端插件
1 2
| pip install 'acryl-datahub[datahub-rest]' pip install 'acryl-datahub[datahub-kafka]'
|
airflow组件(暂时用不到,crontab可实现定时更新元数据)
1
| pip install acryl-datahub[airflow]
|
降级great_expectations
python 包great_expectation升级至最新版本后datahub未适配,必需降级至0.14.0
1
| pip install --upgrade great-expectations==0.14.0
|
血缘关系开启(未成功)
1 2 3 4
| # 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 '{}'
|
添加配置文件
1
| vim ./airflow/airflow.cfg
|
1 2 3 4 5 6 7 8 9
| [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元数据
1
| vim /opt/datahub/docker/ingestion/mysql_datahub.yml
|
1 2 3 4 5 6 7 8 9 10 11
| 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'
|
导入操作
1
| datahub ingest -c /opt/datahub/docker/ingestion/mysql_datahub.yml
|
使用linux定时任务定时导入数据源,crontab 计算器https://www.matools.com/crontab
1 2 3 4 5 6
| #编辑定时器 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容器 (保留数据)
1
| datahub docker nuke --keep-data
|
docker关闭、删除所有容器
1 2
| docker stop $(docker ps -a -q) docker rm $(docker ps -aq)
|
查看docker运行中项目日志
1 2
| docker logs -f 容器ID docker logs -f -t --tail 100 容器ID
|
查看docker-compose运行日志
1 2
| docker-compose logs -f docker-compose logs
|
使用指南&FAQ
待补充