Amundsen数据发现平台架构解析:从元数据管理到搜索服务
amundsen 项目地址: https://gitcode.com/gh_mirrors/amu/amundsen
概述
Amundsen是一个企业级数据发现和元数据引擎平台,由Lyft开发并开源。它帮助数据工程师、分析师和科学家快速发现、理解和信任组织中的数据。本文将深入解析Amundsen的架构设计,帮助读者理解其核心组件和工作原理。
整体架构概览
Amundsen采用微服务架构设计,主要由四个核心组件构成:
- 前端服务(Frontend Service)
- 搜索服务(Search Service)
- 元数据服务(Metadata Service)
- 数据构建器(Databuilder)
这些组件协同工作,形成一个完整的数据发现和管理解决方案。架构设计遵循了松耦合原则,各组件通过定义良好的API进行通信。
前端服务:用户交互门户
前端服务是用户与Amundsen交互的主要界面,具有以下技术特点:
- 基于Flask框架构建的Web应用
- 表示层采用React+Redux组合
- 使用Bootstrap实现响应式设计
- 通过Webpack进行资源打包
- 使用Babel进行JavaScript转译
前端服务负责展示数据资产信息,包括表结构、列描述、使用情况、所有者信息等。它通过调用搜索服务和元数据服务的API获取数据,并以直观的方式呈现给用户。
搜索服务:高效数据检索
搜索服务是Amundsen的查询引擎,主要功能包括:
- 提供RESTful API供前端服务调用
- 底层可集成Elasticsearch或Apache Atlas作为搜索引擎
- 支持OpenAPI(Swagger)规范的API文档
- 当前主要索引表(table)资源
搜索服务的核心价值在于提供快速、准确的数据资产检索能力。用户可以通过关键词搜索找到相关的数据表,系统会根据相关性对结果进行排序。
元数据服务:图数据库驱动
元数据服务是Amundsen的核心,负责管理和提供所有元数据信息:
- 使用Neo4j图数据库存储元数据
- 采用图模型表示数据资产及其关系
- 提供丰富的元数据查询接口
元数据模型是Amundsen设计的精髓,它将数据资产(如表、列、用户等)建模为图中的节点,将关系(如属于、使用、拥有等)建模为边。这种设计使得复杂的元数据关系能够被高效地表示和查询。
数据构建器:元数据ETL工具
数据构建器是Amundsen的元数据采集和处理引擎:
- 提供数据摄取库,支持从多种数据源提取元数据
- 设计为可扩展的框架,支持自定义提取器
- 通常通过Airflow等调度工具定期执行元数据构建
- 提供示例数据用于快速体验系统功能
数据构建器的工作流程通常包括:
- 从源系统(如Hive、MySQL等)提取元数据
- 转换和丰富元数据(如添加业务描述)
- 将处理后的元数据发布到搜索索引和图数据库
典型工作流程示例
当用户在Amundsen中执行搜索时,系统内部的处理流程如下:
- 用户在前端界面输入搜索关键词
- 前端服务调用搜索服务的API
- 搜索服务查询底层搜索引擎(如Elasticsearch)
- 返回搜索结果给前端服务
- 用户点击特定结果查看详情
- 前端服务调用元数据服务获取详细元数据
- 元数据服务查询Neo4j数据库并返回结果
- 前端服务展示完整的元数据信息
扩展与定制
Amundsen的架构设计考虑了可扩展性:
- 可以替换底层组件(如使用不同的搜索引擎)
- 支持添加自定义的元数据提取器
- 前端界面可以根据组织需求进行定制
- 元数据模型可以扩展以适应特定需求
这种灵活性使得Amundsen能够适应不同组织的技术栈和业务流程。
总结
Amundsen通过其精心设计的架构,解决了企业数据发现和管理中的关键挑战。它将现代Web技术、图数据库和搜索引擎有机结合,构建了一个高效、易用的数据治理平台。理解其架构设计有助于更好地部署、使用和扩展这一系统。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考