• Linux安装DataHub (开源元数据管理工具)


    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

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

    后续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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

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

    参考: 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    参考: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
    
    • 1
    • 2
    • 3
    • 4

    2.5 启动

    python3 -m datahub docker quickstart
    
    • 1

    2.6 访问

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

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

    datahub docker ingest-sample-data
    
    • 1

    2.7 停止和清理

    彻底清理:

    # 停止datahub
    python3 -m datahub docker quickstart --stop
    # 清理所有数据
    python3 -m datahub docker nuke
    
    • 1
    • 2
    • 3
    • 4

    定点清除元数据:

    # 删除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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 集成

    3.1 集成Airflow

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

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

    pip install acryl-datahub[airflow]
    
    • 1

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

    pip install acryl-datahub-airflow-plugin
    
    • 1

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

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

    3.2 集成Glue

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

    pip install 'acryl-datahub[glue]'
    
    • 1

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

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

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

    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?
    
    • 1
    • 2
    • 3
    • 4

    使用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
    
    • 1

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

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

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

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

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

  • 相关阅读:
    控制Servlet启动优先级-10
    Flutter 使用Screen保持屏幕常亮不息屏
    分治法思考题
    Ubuntu2004字体不清晰,排查流程
    密码学在 Web3 钱包中的应用:私钥是什么?bitget钱包为例
    【VCS NLP】PA 仿真上电后信号恒为 X 的问题
    RabbitMQ 消息的可靠性
    性能测试LoadRunner02
    用这个方法简直开挂!精密空调轻松拿捏
    kali download+安装teamviewer
  • 原文地址:https://blog.csdn.net/bluishglc/article/details/127558808