简介
- Datahub 由 4 个主要组件组成:
- GMS
- Frontend
- MAE Consumer(可选)
- MCE Consumer(可选)
- 主要组件由 4 个外部依赖项提供支持:
- Kafka
- Local db(MySQL、Postgres、MariaDB)
- 搜索索引(Elasticsearch)
- 图索引(支持 Neo4j 或 Elasticsearch)
Docker Images
- linkedin/datahub-ingestion - This contains the Python CLI. If you are looking for docker image for every minor CLI release you can find them under acryldata/datahub-ingestion.
- linkedin/datahub-gms.
- linkedin/datahub-frontend-react
- linkedin/datahub-mae-consumer
- linkedin/datahub-mce-consumer
- acryldata/datahub-upgrade
- linkedin/datahub-kafka-setup
- linkedin/datahub-elasticsearch-setup
- acryldata/datahub-mysql-setup
- acryldata/datahub-postgres-setup
- acryldata/datahub-actions. Do not use acryldata/acryl-datahub-actions as that is deprecated and no longer used.
Dependencies:
部署以及升级
快捷部署
确保为 Docker 引擎分配足够的硬件资源。
测试和确认的配置:2个CPU,8GB RAM,2GB交换区域和10GB磁盘空间。
docker-compose.quickstart.yml
# (可选)修改版本 建议不使用特定于版本的标签head
vim /root/.datahub/quickstart/quickstart_version_mapping.yaml
# 开启容器
python3.7 -m datahub docker quickstart --quickstart-compose-file /opt/datahub/docker-compose.quickstart.yml
多容器部署
- 将Datahub部署到多个容器中需要管理容器之间的通信和协作,以确保整个系统的正确性和可靠性。
- github代码
数据存储层容器
Datahub需要一个持久化的存储层来存储元数据。因此,可以使用一个独立的容器来运行数据库,如MySQL或PostgreSQL。
mariadb
用来存储数据相关的元数据信息、数据血缘关系、数据集的 schema 信息以及 DataHub 用户、团队和权限信息等等。
- 测试
- 数据库连接客户端工具 连接测试。
- 常见问题
- /docker-entrypoint-initdb.d/init.sql: Permission denied:改为在容器内执行。
- init.sql未执行:docker-entrypoint-initdb.d 文件夹只会在创建(实例化)容器时运行一次,因此实际上必须执行 docker-compose up -d --force-recreate
- 备注
- 创建容器时init.sql可不执行,因为在setup中会执行。
mysql-setup
配置 MySQL 数据库的数据库连接、访问凭证、数据库名称等参数,以便 DataHub 在此基础上构建自身的数据管理功能。
Attaching to mysql-setup
mysql-setup | 2023/05/17 07:04:28 Waiting for: tcp://mariadb:3306
mysql-setup | 2023/05/17 07:04:28 Connected to tcp://mariadb:3306
mysql-setup | -- create datahub database
mysql-setup | CREATE DATABASE IF NOT EXISTS datahub CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
mysql-setup | USE datahub;
mysql-setup |
mysql-setup | -- create metadata aspect table
mysql-setup | create table if not exists metadata_aspect_v2 (
mysql-setup | urn varchar(500) not null,
mysql-setup | aspect varchar(200) not null,
mysql-setup | version bigint(20) not null,
mysql-setup | metadata longtext not null,
mysql-setup | systemmetadata longtext,
mysql-setup | createdon datetime(6) not null,
mysql-setup | createdby varchar(255) not null,
mysql-setup | createdfor varchar(255),
mysql-setup | constraint pk_metadata_aspect_v2 primary key (urn,aspect,version),
mysql-setup | INDEX timeIndex (createdon)
mysql-setup | );
mysql-setup |
mysql-setup | -- create default records for datahub user if not exists
mysql-setup | DROP TABLE if exists temp_metadata_aspect_v2;
mysql-setup | CREATE TABLE temp_metadata_aspect_v2 LIKE metadata_aspect_v2;
mysql-setup | INSERT INTO temp_metadata_aspect_v2 (urn, aspect, version, metadata, createdon, createdby) VALUES(
mysql-setup | 'urn:li:corpuser:datahub',
mysql-setup | 'corpUserInfo',
mysql-setup | 0,
mysql-setup | '{"displayName":"Data Hub","active":true,"fullName":"Data Hub","email":"datahub@linkedin.com"}',
mysql-setup | now(),
mysql-setup | 'urn:li:corpuser:__datahub_system'
mysql-setup | ), (
mysql-setup | 'urn:li:corpuser:datahub',
mysql-setup | 'corpUserEditableInfo',
mysql-setup | 0,
mysql-setup | '{"skills":[],"teams":[],"pictureLink":"https://raw.githubusercontent.com/datahub-project/datahub/master/datahub-web-react/src/images/default_avatar.png"}',
mysql-setup | now(),
mysql-setup | 'urn:li:corpuser:__datahub_system'
mysql-setup | );
mysql-setup | -- only add default records if metadata_aspect is empty
mysql-setup | INSERT INTO metadata_aspect_v2
mysql-setup | SELECT * FROM temp_metadata_aspect_v2
mysql-setup | WHERE NOT EXISTS (SELECT * from metadata_aspect_v2);
mysql-setup | DROP TABLE temp_metadata_aspect_v2;
mysql-setup |
mysql-setup | -- create metadata index table
mysql-setup | CREATE TABLE IF NOT EXISTS metadata_index (
mysql-setup | `id` BIGINT NOT NULL AUTO_INCREMENT,
mysql-setup | `urn` VARCHAR(200) NOT NULL,
mysql-setup | `aspect` VARCHAR(150) NOT NULL,
mysql-setup | `path` VARCHAR(150) NOT NULL,
mysql-setup | `longVal` BIGINT,
mysql-setup | `stringVal` VARCHAR(200),
mysql-setup | `doubleVal` DOUBLE,
mysql-setup | CONSTRAINT id_pk PRIMARY KEY (id),
mysql-setup | INDEX longIndex (`urn`,`aspect`,`path`,`longVal`),
mysql-setup | INDEX stringIndex (