1. 前置条件

  1. 系统已经安装Python 3.7+
  2. 安装过程中会从GitHub拉取docker compose文件,近期从国内访问GitHub经常终端,导致命令行经常失败,所以:如有条件最好在外网的云上测试或者配置VPN

2. 安装命令

2.1 安装Docker & JQ

sudo yum -y install docker jq
sudo systemctl enable docker
sudo systemctl start docker
# 检查docker服务是否正常启动
systemctl status docker

2.2 创建docker组并将当前用户加入其中

创建docker组并将当前用户加入其中,否则当前用户无权调用docker命令,通常会报出如下错误:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

后续datahub docker quickstart命令就无法执行。

# 检查/var/run/docker.sock文件的mod
ls -al /var/run/docker.sock
# 通常docker group已经在安装docker时自动建立了
sudo groupadd docker
# 将当前用户添加到docker组中
sudo usermod -a -G docker ${USER}
# 注意:上述将用户加入到组的操作只在下次登录时才能生效
# 所以:需要退出终端重新登录
exit

再次登录,检查加入组的操作是否已生效:

# 检查当前用户是否已经在docker组中
groups
# 检查当前用户是否可以正常使用docker
docker run hello-world

参考: https://www.digitalocean.com/community/questions/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket

2.3 安装Docker Compose (V2)

mkdir -p ~/.docker/cli-plugins
curl -sSL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m) -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
# 检查安装是否正确
docker compose version

参考:https://www.rockyourcode.com/how-to-install-docker-compose-v2-on-linux-2021/

2.4 安装

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

2.5 启动

python3 -m datahub docker quickstart

2.6 访问

DataHub的默认端口是9002, 使用Http协议(可使用Firefox打开)。默认账号/密码:datahub/datahub

初始系统没有采集任何元数据,如果需要先探查一下DataHub的基本功能,可以先使用命令:

datahub docker ingest-sample-data

2.7 停止和清理

彻底清理:

# 停止datahub
python3 -m datahub docker quickstart --stop
# 清理所有数据
python3 -m datahub docker nuke

定点清除元数据:

# 删除PROD环境上的所有dataset
datahub delete --env PROD --entity_type dataset
# 删除PROD环境上的所有源自于glue平台的元数据
datahub delete --env PROD --platform glue
# 根据urn精准删除单一目标, urn可从浏览器的URL中获取
datahub delete --urn "urn:li:dataset:(urn:li:dataPlatform:glue,ods.geo_taxi_zone,PROD)" --hard

3. 集成

3.1 集成Airflow

我们以Airflow为例,演示一下DataHub集成Airflow获取作业调度元数据。

首先, 在Datahub中安装airflow的插件(使用datahub docker quickstart启动时已自动安装):

pip install acryl-datahub[airflow]

然后,在Airflow环境中安装DataHub的插件:

pip install acryl-datahub-airflow-plugin

参考: https://datahubproject.io/docs/lineage/airflow

生成一些样本数据,便于更好地了解DataHub的功能。

3.2 集成Glue

首先, 在Datahub中安装glue的插件(使用datahub docker quickstart启动时已自动安装):

pip install 'acryl-datahub[glue]'

3.3 基于元数据文件导入元数据

准备好血缘元数据文件,使用如下命令进行导入:

datahub ingest -c /path/to/lineage.yml

4. 常见错误

4.1 datahub docker quickstart启动失败
[user]$ datahub docker quickstart
No ~/.datahubenv file found, generating one for you...
Unable to run quickstart:
- Docker doesn't seem to be running. Did you start it?

使用docker ps -a检查docker服务,输出如下:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied

原因:没有赋予当前用户使用docker的权限

4.2 datahub docker quickstart报错
unknown shorthand flag: 'f' in -f

原因:没有安装Docker Compose (V2),必须是v2版本!

4.3 页面报错“Oops, an error occurred”

先登录服务器,使用curl http://localhost:9002查看是否包含同样错误,如果没有,则大概率是浏览器和VPN导致的,建议使用SSH隧道建立动态代理来解决.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐