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
部署流程解析
-
基础设施启动:
- Zookeeper → Kafka → Schema Registry
- MySQL
- Elasticsearch
-
初始化阶段:
- mysql-setup:创建数据库表结构
- elasticsearch-setup:配置Elasticsearch索引
- kafka-setup:创建Kafka主题
-
核心服务启动:
- datahub-upgrade:执行系统升级
- datahub-gms:启动元数据服务
- datahub-frontend-react:启动前端
- datahub-actions:启动事件处理服务
自定义配置建议
-
端口映射:
- 可通过环境变量修改各服务端口:
export DATAHUB_MAPPED_FRONTEND_PORT=8080 export DATAHUB_MAPPED_GMS_PORT=8081
- 可通过环境变量修改各服务端口:
-
内存调整:
- 修改JVM参数以适应不同环境:
JAVA_OPTS=-Xms1g -Xmx2g
- 修改JVM参数以适应不同环境:
-
认证配置:
- 启用元数据服务认证:
METADATA_SERVICE_AUTH_ENABLED=true
- 启用元数据服务认证:
常见问题解决方案
-
启动顺序问题:
- 使用
depends_on
确保服务依赖关系 - 结合
condition
参数控制启动条件
- 使用
-
资源不足:
- 调整Elasticsearch内存限制
- 增加JVM堆内存参数
-
数据持久化:
- 确保Docker卷正确挂载
- 定期备份关键卷数据
总结
本文介绍的Docker Compose部署方案为DataHub提供了一个轻量级的、适合开发环境的部署方式,特别针对M1芯片设备进行了优化。通过移除Neo4j依赖,简化了架构,同时保持了核心功能完整。这种部署方式适合快速搭建开发测试环境,为DataHub的二次开发和功能验证提供了便利的基础平台。