WhereHows 数据治理平台 Docker 快速部署指南
2025-07-06 05:48:20作者:盛欣凯Ernestine
概述
WhereHows 是一个开源的企业级元数据管理和数据发现平台,由 LinkedIn 开发。本文将通过 Docker Compose 方式详细介绍 WhereHows 的快速部署方案,帮助用户快速搭建完整的 WhereHows 环境。
核心组件架构
WhereHows 的 Docker 快速部署方案包含以下核心服务组件:
-
数据存储层:
- MySQL:存储元数据实体和关系
- Elasticsearch:提供搜索和索引功能
- Neo4j:存储图关系数据
-
消息中间件:
- Zookeeper:Kafka 的协调服务
- Kafka:消息队列系统
- Schema Registry:管理 Avro 模式
-
应用服务层:
- DataHub GMS:元数据服务核心
- DataHub Frontend:用户界面
- DataHub Actions:事件处理服务
详细配置解析
1. 消息中间件配置
Kafka 集群配置了以下关键参数:
- 监听器配置了内部(29092)和外部(9092)两个端口
- 消息最大字节数设置为 5MB(5242880 bytes)
- 内存限制为 256MB
Zookeeper 作为 Kafka 的依赖服务,配置了标准端口 2181 和健康检查机制。
2. 数据存储服务
MySQL:
- 使用 utf8mb4 字符集以支持完整 Unicode
- 预配置了 datahub 用户和数据库
- 数据卷挂载确保数据持久化
Elasticsearch:
- 单节点模式运行
- 内存限制为 512MB
- 禁用了 X-Pack 安全功能
Neo4j:
- 社区版 4.4.9
- 预装了 APOC 插件
- 配置了 Bolt 和 HTTP 端口
3. 核心应用服务
DataHub GMS:
- 连接所有存储服务(MySQL, ES, Neo4j)
- 配置了 1GB 的 JVM 内存
- 启用了元数据审计(MCE)和元数据变更日志(MCL)消费者
DataHub Frontend:
- React 实现的用户界面
- 512MB 的 JVM 内存配置
- 默认端口 9002
DataHub Actions:
- 事件处理服务
- 连接 Kafka 和 GMS 服务
- 可配置额外的 Python 包
部署流程说明
-
基础设施准备:
- Zookeeper 和 Kafka 最先启动
- 数据库服务(MySQL, Neo4j, ES)随后启动
-
初始化阶段:
- Kafka-setup 创建所需主题
- MySQL-setup 初始化数据库结构
- ES-setup 创建索引和映射
-
应用启动:
- DataHub Upgrade 服务执行系统升级
- GMS 核心服务启动
- 前端服务最后启动
健康检查机制
每个服务都配置了健康检查策略,例如:
- MySQL 使用
mysqladmin ping
命令 - Elasticsearch 检查集群健康状态
- GMS 服务通过 HTTP 健康端点检查
- Kafka 使用 netcat 检查端口可用性
自定义配置建议
-
内存调整:
- 生产环境建议增加 GMS 和 ES 的内存限制
- Kafka 可根据消息量调整内存
-
安全加固:
- 启用 Elasticsearch 的安全功能
- 配置 MySQL 和 Neo4j 的更复杂密码
-
持久化存储:
- 所有数据卷应映射到宿主机的持久化目录
- 考虑使用外部存储方案
常见问题排查
-
服务启动顺序问题:
- 依赖服务未就绪会导致启动失败
- 查看日志确认具体错误
-
资源不足:
- 内存不足会导致容器异常退出
- 调整各服务的资源限制
-
端口冲突:
- 确保宿主机端口未被占用
- 可修改映射端口配置
通过这份 Docker Compose 配置,用户可以快速搭建一个功能完整的 WhereHows 环境,用于元数据管理和数据发现。生产环境部署时,建议根据实际需求调整资源配置和安全设置。