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)

安装依赖包

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

检查前台运行情况

1
pip show acryl_datahub

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
datahub check plugins

安装数据源插件

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

待补充


DataHub安装
https://blog.wongcw.cn/2022/05/25/DataHub安装/
作者
wangcw
发布于
2022年5月25日
许可协议