• 【DataHub】LinkedIn DataHub学习笔记


    前言

    随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程。作为新一代的元数据管理平台, Datahub在近一年的时间里发展迅猛,大有取代老牌元数据管理工具Atlas之势。

    数据治理与元数据管理

    在大数据研发中,原始数据就有着非常多的数据库,数据表。而经过数据的聚合以后,又会有很多的维度表。我们缺乏对数据资产的管理。事实上,有很多公司都提供了开源的解决方案来解决上述问题,这也就是数据发现与元数据管理工具。

    元数据管理:

    元数据一般来说是数据的数据。具体来说,就是对动态数据的一种静态信息描述。元数据管理是为了对数据资产进行有效的组织。它使用元数据来帮助管理他们的数据。它还可以帮助数据专业人员收集、组织、访问和丰富元数据,以支持数据治理。
    常用的元数据:
    在数据流处理中,我们首先需要定义不同阶段的数据实体,所以有了模式元数据。接着我们需要定义数据实体之间的处理逻辑,叫做etl数据处理,接着有了数据实体的关系元数据。对于这些数据处理的逻辑形式,需要调度器来物理化执行,所以有了调度元数据。数据处理完成之后,需要发布报表,就有了报表元数据。对于整体系统中,会涉及不同的用户实体,就有了用户元数据
    当然,这些是企业数据平台最常见的元数据类型,其它的大大小小的信息还是有很多。所以,元数据系统的建立,是企业级的信息化建设过程。
    数据分类模型之“元数据、引用数据、主数据、业务数据…

    数据资产:

    可能是 Oracle 数据库中的一张表。在现代企业中,我们拥有一系列令人眼花缭乱的不同类型的数据资产。可能是关系数据库或 NoSQL 存储中的表、实时流数据、 AI 系统中的功能、指标平台中的指标,数据可视化工具中的仪表板。

    元数据管理应具备的功能:
    • 搜索和发现:数据表、字段、标签、使用信息
    • 访问控制:访问控制组、用户、策略
    • 数据血缘:管道执行、查询
    • 合规性:数据隐私/合规性注释类型的分类
    • 数据管理:数据源配置、摄取配置、保留配置、数据清除策略
    • AI 可解释性、再现性:特征定义、模型定义、训练运行执行、问题陈述
    • 数据操作:管道执行、处理的数据分区、数据统计
    • 数据质量:数据质量规则定义、规则执行结果、数据统计
    DataHub 的技术栈:

    DataHub包括了四块,metadata, gms, etl, datahub。整个系统构建采用了gradle。
    medata定义模型。metadata这里面使用了两种数据格式。一种是外部接入格式avro,非常实用。另一种是内部改进的pdsc格式,外面用得很少。
    gms基于模型生成服务。gms使用了内部的rest.li,又是内部搞的一套restful框架,也还比较好用,但是应用面比较窄。
    etl进行模型数据加工。etl则是采用了linkedin家最擅长的kafka schema registry及kafka streams。
    datahub提供基于gms的元数据应用展现。datahub包括了应用后台服务以及前台展示,后台服务采用的是play framework,前台服务采用的是ember.js + typescript。

    DataHub安装过程(服务器上安装):

    安装参考:
    官网 DataHub Quickstart Guide
    DataHub安装配置详细过程
    一站式元数据治理平台——Datahub入门宝典
    Datahub安装配置—————附带详细步骤

    yum -y install gcc
    
    • 1

    在这里插入图片描述

    yum -y install docker
    
    • 1

    在这里插入图片描述

    # 启动docker
    sudo systemctl start docker
    # 测试是否正确安装
    sudo docker run hello-world
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    #dockerCompose【docker的服务编排工具,主要是用来构建多个服务】
    curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    chmod +x /usr/local/bin/docker-compose
    
    • 1
    • 2
    • 3
    • 4
    # 然后启动docker
    # 守护进程重启
    sudo systemctl daemon-reload
    # 重启docker服务
    sudo systemctl restart docker
    # 然后检查启动
    docker container ls
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    yum install libffi-devel -y
    yum install zlib* -y
    
    • 1
    • 2

    因为我原来有python环境,跳过了安装python:
    在这里插入图片描述

    pip3 install toml
    
    • 1

    Docker 镜像加速

    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    
    • 1
    • 2
    • 3
    cd /opt
    yum -y install git
    git --version
    git clone git://github.com/linkedin/datahub.git
    cd /opt/datahub/docker
    source ./quickstart.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在执行上面命令的时候,我是自己下载完把项目放到服务器上的,git clone失败了。在执行最后一条命令时,因为太慢了,所以可以提前配置docker加速。

    python3 -m pip install --upgrade pip wheel setuptools -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
    python3 -m pip uninstall datahub acryl-datahub || true  # sanity check - ok if it fails
    python3 -m pip install --upgrade acryl-datahub -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
    python3 -m datahub version
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在上面安装过程中还发现我本地原来好像mysql端口冲突了,所以我把服务先停了,后来修改了端口号为3307,不会和docker 中的冲突。

    Docker push 报错:received unexpected HTTP status: 500 Internal Server Error :(我这样解决):

    setenforce 0
    sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 
    egrep '^SELINUX=' /etc/selinux/config 
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    如果source ./quickstart.sh执行成功,就可以访问datahub了,是 ip:9002
    检查安装的插件情况,Datahub是插件式的安装方式。可以检查数据源获取插件Source,转换插件transformer,获取插件Sink。

     python3 -m datahub check plugins
    
    • 1

    本人自己摄入数据源的yml成功的:(命令行执行成功,界面执行均失败)
    我遇到了oracle摄入失败的解决方法:
    在这里插入图片描述

    oracle:

    source:
      type: "oracle"
      config:
        username: "system"
        password: "Admin134"
        database: "prod"
        host_port: "172.16.5.90"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    mysql:

    source:
      type: "mysql"
      config:
        username: "root"
        password: "123456"
        database: "mysql"
        host_port: "localhost:3307"
    sink:
      type: "datahub-rest"
      config:
        server: 'http://localhost:8080'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    未完待续

  • 相关阅读:
    技术问题整理04
    Selenium web自动化测试环境搭建
    superset运维中遇到的问题
    列表以及字典的练习
    IDEA打开一个项目时,idea左侧project模式下,不显示项目工程目录的解决方法
    一文讲清楚webpack和vite原理
    【springboot】10、处理请求参数
    深信服超融合HCI初级笔试题目(三套)
    详细介绍:国产操作系统银行麒麟V10的下载和安装
    音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10)
  • 原文地址:https://blog.csdn.net/qq_44033208/article/details/125329536