当前位置: 首页 > news >正文

开源数据发现平台:Amundsen 第1部分:基础入门与本地环境设置

在这里插入图片描述

Amundsen 是一个数据发现和元数据引擎,旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前,它通过索引数据资源(表格、仪表板、数据流等)并基于使用模式(例如,查询频率高的表格会优先于查询频率低的表格)提供页面排名式的搜索功能来实现这一目标。您可以将其视为数据版的 Google 搜索。该项目以挪威探险家罗尔德·阿蒙森 (Roald Amundsen) 的名字命名,他是第一个发现南极的人。

2.1 准备工作

2.1.1 系统要求

操作系统支持

  • Linux(Ubuntu 22.04+/CentOS Stream 9+)
  • macOS(Monterey 12+)
  • Windows(需启用WSL 2)

硬件最低配置

资源类型最低要求说明
CPU4核需支持虚拟化
内存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)

  1. 安装 Rosetta 2
sudo softwareupdate --install-rosetta --agree-to-license
  1. 修改 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预期响应
Frontendhttp://localhost:5000Amundsen登录页面
Searchhttp://localhost:5001/healthcheckJSON格式节点信息
Metadatahttp://localhost:5002/healthcheckJSON格式节点信息
Elasticsearchhttp://localhost:9200JSON格式节点信息
Neo4jhttp://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. 表详情页功能区

访问路径:搜索 → 点击表名 → 进入详情页
在这里插入图片描述
在这里插入图片描述

表标题
描述编辑
所有者管理
列信息
类型/描述/统计信息
血缘标签
上游表
下游表
协作区
添加书签
撰写评论
查询使用示例
SQL示例/使用频率

已支持列级数据质量评分(Great Expectations 集成)。

2.3.3 关键交互操作

添加表描述

  1. 在表详情页点击 “Description” 旁的编辑图标

    注:支持 Markdown 语法。

  2. 输入文本:This is a test table
  3. 点击 “Update”
  4. 验证:刷新页面后描述持久化显示

添加书签

  1. 在表详情页点击 “Bookmark” 星标图标
  2. 验证:
    • 星标变为实心
    • “My Profile” → “Bookmarks” 出现该表

查看血缘关系

  1. 在表详情页点击 “Lineage” 标签
  2. 界面显示:
    • 上游数据源(如 source_db.raw_table
    • 下游依赖(如 analytics.report_table

    注:支持列级血缘与 OpenLineage 标准集成,默认展示 Airflow DAG 依赖。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

http://www.dtcms.com/a/331624.html

相关文章:

  • 数据结构:用两个栈模拟队列(Queue Using 2 Stacks)
  • 2025年商协会新运营模式,正在破局
  • NokoPrint:安卓平台上的全能打印解决方案
  • 软件测试之接口测试,接口自动化测试, request
  • 【FreeRTOS】刨根问底4: 优先级反转是啥?咋解决?
  • 系统升级部署中的常见问题与解决方案
  • 京东比价项目开发实录:京东API接口(2025)
  • AI Agent 为什么需要记忆?
  • 我的 LeetCode 日记:Day 37 - 解锁动态规划:完全背包问题
  • 深度解析 Vue 高阶技巧:提升工程化能力的实用方案
  • 使用EvalScope对GPT-OSS-20B进行推理性能压测实战
  • Flink中的水位线
  • STL容器详解:Vector高效使用指南
  • 高效Unicode字符表示:一种创新的词表构建策略分析
  • MCP智能化问答系统实现方案
  • K8S企业级应用与DaemonSet实战解析
  • 【车联网kafka】用钟表齿轮理解 Kafka 时间轮​(第七篇)
  • Java应用快速部署Tomcat指南
  • # 2025全球AI游戏市场研究报告:行业洞察与未来趋势
  • OpenAI 的浏览器将使用 ChatGPT Agent 来控制浏览器
  • 亚马逊FCF计划:破解高单价产品转化困局的金融杠杆
  • RH134 管理基本存储知识点
  • 考研408《计算机组成原理》复习笔记,第四章(1)——指令系统概念(指令字长、N地址指令、定长和变长操作码)
  • H.264编码格式详解:Annex-B vs AVCC
  • 14、Docker Compose 安装 Redis 集群(三主三从)
  • 嵌入式学习笔记--MCU阶段--DAY12实时操作系统rt_thread1
  • Cypher注入详解:原理、类型与测试方法
  • 使用免费API开发口播数字人
  • 数智化与全球化,双轮驱动艾芬达持续引领行业变革
  • 嵌入式 - Linux软件编程:进程