Amundsen 是一个数据发现和元数据引擎,旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前,它通过索引数据资源(表格、仪表板、数据流等)并基于使用模式(例如,查询频率高的表格会优先于查询频率低的表格)提供页面排名式的搜索功能来实现这一目标。您可以将其视为数据版的 Google 搜索。该项目以挪威探险家罗尔德·阿蒙森 (Roald Amundsen) 的名字命名,他是第一个发现南极的人。
2.1 准备工作
2.1.1 系统要求
操作系统支持
- Linux(Ubuntu 22.04+/CentOS Stream 9+)
- macOS(Monterey 12+)
- Windows(需启用WSL 2)
硬件最低配置
资源类型 | 最低要求 | 说明 |
---|---|---|
CPU | 4核 | 需支持虚拟化 |
内存 | 16GB | 建议预留4GB给Docker |
磁盘空间 | 30GB | 用于存储镜像和元数据 |
验证命令(Linux/macOS)
# 查看CPU核心数
nproc# 查看可用内存(GB)
free -g
2.1.2 工具安装指南
Docker 引擎安装
# Ubuntu 22.04 安装命令
sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker# 验证安装(需显示Docker版本)
docker --version # 预期 >=28.0.0
Docker Compose 安装
# Docker Compose 2.x 已内置于 Docker CLI,无需单独下载
# 验证安装
docker compose version # 预期 >=2.29.0
2.1.3 环境兼容性验证
步骤1:检测虚拟化支持
# Linux 检查内核模块
lsmod | grep kvm# macOS 检查HyperKit
hyperkit -h
步骤2:测试Docker运行
# 运行测试容器
docker run hello-world# 预期输出:
# Hello from Docker!
# This message shows your installation appears to be working correctly.
步骤3:资源分配检查
# 确认Docker资源限制(需满足最低要求)
docker info | grep -E "Total Memory|CPUs"
2.1.4 获取 Amundsen
# 运行以下命令克隆该 repo 及其子模块
git clone --recursive https://github.com/amundsen-io/amundsen.git
cd amundsen
2.2 本地环境搭建
2.2.1 启动Amundsen服务栈
执行启动命令
# For Neo4j Backend
docker compose -f docker-amundsen.yml up -d
重要:macOS (Apple Silicon M1/M2/M3)
- 安装 Rosetta 2
sudo softwareupdate --install-rosetta --agree-to-license
- 修改 docker-compose.yml
services:neo4j:image: neo4j:3.5.26
+ platform: linux/amd64amundsensearch:image: amundsendev/amundsen-search:4.0.2
+ platform: linux/amd64 amundsenmetadata:image: amundsendev/amundsen-metadata:3.11.0
+ platform: linux/amd64amundsenfrontend:image: amundsendev/amundsen-frontend:4.2.0
+ platform: linux/amd64ports:
- - 5000:5000
+ - 5003:5000
macOS 自带的「控制中心」(Control Center) 进程 ControlCe
系统启动后会自动监听 5000 端口
预期输出
[+] Running 8/8✔ Network amundsen_amundsennet Created✔ Volume "amundsen_neo4j_data" Created✔ Volume "amundsen_es_data" Created✔ Container es_amundsen Started✔ Container neo4j_amundsen Started✔ Container amundsenmetadata Started✔ Container amundsensearch Started✔ Container amundsenfrontend Started
2.2.2 验证容器状态
检查容器运行状态
# docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
docker compose -f docker-amundsen.yml ps --format \"table {{.Service}}\t{{.Status}}\t{{.Ports}}"NAMES STATUS PORTS
amundsenfrontend Up 8 minutes 0.0.0.0:5000->5000/tcp, [::]:5003->5000/tcp
amundsensearch Up 8 minutes 0.0.0.0:5001->5000/tcp, [::]:5001->5000/tcp
amundsenmetadata Up 8 minutes 0.0.0.0:5002->5000/tcp, [::]:5002->5000/tcp
es_amundsen Up 8 minutes 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp
neo4j_amundsen Up 8 minutes 0.0.0.0:7474->7474/tcp, [::]:7474->7474/tcp, 0.0.0.0:7687->7687/tcp, [::]:7687->7687/tcp
健康检查:所有容器需显示 (Up) 状态。若出现 starting 或 unhealthy 超过 3 分钟,请查看 2.2.3 节诊断。
2.2.3 日志监控与问题诊断
查看实时日志
# 监控所有容器日志(Ctrl+C退出)
docker compose -f docker-amundsen.yml logs -f
关键启动成功标记
frontend | INFO:waitress:Serving on http://0.0.0.0:5000
metadata | INFO:uvicorn.error:Application startup complete
search | INFO:amundsen_search:Connected to ES 8.x
neo4j | INFO Started Neo4j 3.x (port 7474 & 7687 ready)
常见错误处理
# 端口冲突(如5000被占用)
ERROR: for frontend Cannot start service...: driver failed programming external connectivity# 解决方案:
# 1. 停止占用端口的进程
# 2. 或修改docker-amundsen.yml端口映射
# ports: - "新端口:5000"
2.2.4 服务端口验证
手动访问关键端点
服务 | 测试URL | 预期响应 |
---|---|---|
Frontend | http://localhost:5000 | Amundsen登录页面 |
Search | http://localhost:5001/healthcheck | JSON格式节点信息 |
Metadata | http://localhost:5002/healthcheck | JSON格式节点信息 |
Elasticsearch | http://localhost:9200 | JSON格式节点信息 |
Neo4j | http://localhost:7474 | 数据库管理界面 |
自动化验证脚本
#!/usr/bin/env bash
set -eecho "Search health:"
curl -s http://localhost:5001/healthcheck | jq -r '.status' | grep -q ok && echo OK || exit 1echo "Metadata health:"
curl -s http://localhost:5002/healthcheck | jq -r '.status' | grep -q ok && echo OK || exit 1echo "Elasticsearch cluster:"
curl -s http://localhost:9200/_cluster/health | jq -r '.status' | grep -q green && echo OK || exit 1echo "Neo4j ready:"
docker exec neo4j_amundsen cypher-shell -u neo4j -p test "RETURN 1;" >/dev/null && echo OK || exit 1echo "All services healthy!"
重要提示:首次启动需等待2-3分钟完成初始化(Elasticsearch索引创建/Neo4j约束设置)。Apple Silicon Mac 用户首次拉取镜像可能额外耗时。
2.2.5 环境重置操作
停止并清理环境
# 1. 优雅停止所有容器并自动移除网络
docker compose -f docker-amundsen.yml down# 2. 彻底删除数据卷(重置到初始状态)
docker compose -f docker-amundsen.yml down --volumes
如需保留数据,仅执行 docker compose -f docker-amundsen.yml down 即可,卷将保留在本地。
2.3 初始访问与界面导览
2.3.1 登录Amundsen实例
默认免登录
2.3.2 核心功能区解析
主页布局
1. 全局搜索栏
- 位置:页面顶部中央
- 功能:
- 输入关键词实时检索表/列/仪表板(如
test
) - 支持过滤器(数据库类型/标签/所有者/域)
- 输入关键词实时检索表/列/仪表板(如
2. 导航菜单
菜单项 | 功能描述 |
---|---|
Browse | 按数据库分层浏览表(默认展示Neo4j中的表) |
Announcements | 系统公告(测试环境为空) |
My Profile | 用户个人数据资产(书签/拥有表/关注资源) |
左侧菜单已支持可折叠及键盘快捷键导航。
3. 表详情页功能区
访问路径:搜索 → 点击表名 → 进入详情页
已支持列级数据质量评分(Great Expectations 集成)。
2.3.3 关键交互操作
添加表描述
- 在表详情页点击 “Description” 旁的编辑图标
注:支持 Markdown 语法。
- 输入文本:
This is a test table
- 点击 “Update”
- 验证:刷新页面后描述持久化显示
添加书签
- 在表详情页点击 “Bookmark” 星标图标
- 验证:
- 星标变为实心
- “My Profile” → “Bookmarks” 出现该表
查看血缘关系
- 在表详情页点击 “Lineage” 标签
- 界面显示:
- 上游数据源(如
source_db.raw_table
) - 下游依赖(如
analytics.report_table
)
注:支持列级血缘与 OpenLineage 标准集成,默认展示 Airflow DAG 依赖。
- 上游数据源(如
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。