首页
/ DataHub项目快速部署指南:基于Docker Compose的无Neo4j M1架构方案

DataHub项目快速部署指南:基于Docker Compose的无Neo4j M1架构方案

2025-07-06 05:50:39作者:管翌锬

概述

DataHub是一个现代化的元数据管理平台,本文详细介绍如何使用Docker Compose快速部署DataHub的轻量级版本,该版本特别针对M1芯片的Mac设备进行了优化,移除了对Neo4j的依赖,转而使用Elasticsearch作为图数据库后端。

架构组件解析

1. 核心服务组件

数据存储层

  • MySQL:作为主数据存储,保存DataHub的核心元数据
  • Elasticsearch:用于搜索和索引,同时替代Neo4j作为图数据库后端

消息处理层

  • Zookeeper + Kafka + Schema Registry:构成完整的事件流处理系统
    • Zookeeper:分布式协调服务
    • Kafka:消息队列系统
    • Schema Registry:管理Avro schema

应用服务层

  • datahub-gms:核心元数据服务
  • datahub-frontend-react:React前端界面
  • datahub-actions:事件处理服务

2. 初始化服务组件

  • mysql-setup:MySQL数据库初始化
  • elasticsearch-setup:Elasticsearch索引配置
  • kafka-setup:Kafka主题创建
  • datahub-upgrade:DataHub系统升级

关键配置详解

网络配置

networks:
  default:
    name: datahub_network

所有服务共享同一个网络datahub_network,确保容器间可以通过服务名直接通信。

资源限制

Elasticsearch服务设置了内存限制:

deploy:
  resources:
    limits:
      memory: 1G

健康检查机制

每个服务都配置了健康检查,例如Kafka Broker的健康检查:

healthcheck:
  interval: 1s
  retries: 5
  start_period: 60s
  test: nc -z broker $${DATAHUB_KAFKA_BROKER_PORT:-9092}
  timeout: 5s

数据持久化

关键数据通过Docker卷实现持久化:

volumes:
  broker: null  # Kafka数据
  esdata: null  # Elasticsearch数据
  mysqldata: null  # MySQL数据
  zkdata: null  # Zookeeper数据
  zklogs: null  # Zookeeper日志

环境变量配置

数据库连接配置

environment:
  - EBEAN_DATASOURCE_DRIVER=com.mysql.jdbc.Driver
  - EBEAN_DATASOURCE_HOST=mysql:3306
  - EBEAN_DATASOURCE_PASSWORD=datahub
  - EBEAN_DATASOURCE_URL=jdbc:mysql://mysql:3306/datahub?verifyServerCertificate=false&useSSL=true&useUnicode=yes&characterEncoding=UTF-8
  - EBEAN_DATASOURCE_USERNAME=datahub

Elasticsearch配置

environment:
  - discovery.type=single-node
  - xpack.security.enabled=false
  - ES_JAVA_OPTS=-Xms256m -Xmx512m -Dlog4j2.formatMsgNoLookups=true

Kafka配置

environment:
  - KAFKA_BROKER_ID=1
  - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
  - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
  - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092

部署流程解析

  1. 基础设施启动

    • Zookeeper → Kafka → Schema Registry
    • MySQL
    • Elasticsearch
  2. 初始化阶段

    • mysql-setup:创建数据库表结构
    • elasticsearch-setup:配置Elasticsearch索引
    • kafka-setup:创建Kafka主题
  3. 核心服务启动

    • datahub-upgrade:执行系统升级
    • datahub-gms:启动元数据服务
    • datahub-frontend-react:启动前端
    • datahub-actions:启动事件处理服务

自定义配置建议

  1. 端口映射

    • 可通过环境变量修改各服务端口:
      export DATAHUB_MAPPED_FRONTEND_PORT=8080
      export DATAHUB_MAPPED_GMS_PORT=8081
      
  2. 内存调整

    • 修改JVM参数以适应不同环境:
      JAVA_OPTS=-Xms1g -Xmx2g
      
  3. 认证配置

    • 启用元数据服务认证:
      METADATA_SERVICE_AUTH_ENABLED=true
      

常见问题解决方案

  1. 启动顺序问题

    • 使用depends_on确保服务依赖关系
    • 结合condition参数控制启动条件
  2. 资源不足

    • 调整Elasticsearch内存限制
    • 增加JVM堆内存参数
  3. 数据持久化

    • 确保Docker卷正确挂载
    • 定期备份关键卷数据

总结

本文介绍的Docker Compose部署方案为DataHub提供了一个轻量级的、适合开发环境的部署方式,特别针对M1芯片设备进行了优化。通过移除Neo4j依赖,简化了架构,同时保持了核心功能完整。这种部署方式适合快速搭建开发测试环境,为DataHub的二次开发和功能验证提供了便利的基础平台。