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 依賴。
- 上游數據源(如
風險提示與免責聲明
本文內容基于公開信息研究整理,不構成任何形式的投資建議。歷史表現不應作為未來收益保證,市場存在不可預見的波動風險。投資者需結合自身財務狀況及風險承受能力獨立決策,并自行承擔交易結果。作者及發布方不對任何依據本文操作導致的損失承擔法律責任。市場有風險,投資須謹慎。