OpenMetadata是一个开源的统一元数据平台,在数据管理领域具有重要作用。OpenMetadata源自曾参与Uber元数据基础设施建设团队的经验积累。在打造Uber的Databook解决数据编目问题后,团队发现现有数据编目系统缺乏统一的元数据模型,OpenMetadata项目应运而生,旨在填补这一空白,并增加元数据的灵活性和可扩展性。
2022-2023年:项目处于活跃开发期,在短短1.5年时间里发布超过40个版本。在2023年5月达到1.0版本里程碑,这期间有超过160位贡献者提交了6200多个拉取请求。1.0版本构建了基于标准的元数据模式规范,用JSON模式定义了100多种类型来建模元数据,可用于定义40多种数据资产实体。同时建立了集中式元数据存储库,将元数据存储为元数据图,并提供丰富的API用于创建、修改和删除元数据。
2024年:不断发展完善,到2024年支持的连接器数量增加到80多个。在与其他工具对比和功能拓展等方面持续前进,与DataHub等工具形成竞争与互补关系,在数据管理领域的影响力不断扩大。用户和企业部署数量大幅增长,拥有超过7700名开源社区成员,在大量企业中得到应用,管理着超200万个数据资产。
项目地址:https://github.com/openmetadata/openmetadata
一、核心功能
1.数据发现:支持通过关键字搜索、数据关联和高级查询等策略,让用户在一个平台上查找和探索所有数据资产,可跨表、主题、仪表板、管道和服务进行搜索。
2.数据协作:提供沟通交流和合作功能,用户可获取事件通知、发送警报、添加公告、创建任务并使用对话线程,方便就数据资产与其他用户和团队协作。
3.数据质量和分析器:无需编写代码即可测量和监控数据质量,用户能定义和运行数据质量测试,将其分组到测试套件中,并在交互式仪表板中查看结果。
4.数据治理:帮助在整个组织内实施数据政策和标准,可定义数据域和数据产品,分配所有者和利益相关者,还能使用标签和术语对数据资产进行分类,并利用自动化功能自动对数据进行分类。
5.数据洞察和KPI:借助报告和平台分析让用户了解组织的数据运行情况,提供所有关键指标的单一视图,用户可定义关键绩效指标并在平台中设定目标,还能根据KPI设置警报。
6.数据沿袭:实现端到端跟踪和可视化数据资产的来源和转换,可查看列级沿袭、过滤查询,并使用无代码编辑器手动编辑沿袭。
7.数据文档:支持使用富文本、图像和链接记录数据资产和元数据实体,还可添加评论和注释并生成数据字典和数据目录。
8.数据可观测性:可监控数据资产和管道的运行状况和性能,查看数据新鲜度、数据量、数据质量和数据延迟等指标,也可针对异常或故障设置警报和通知。
9.数据安全:运用各种身份验证和授权机制保护数据和元数据,可与不同的身份提供商集成以实现单点登录,并定义访问控制的角色和策略。
二、技术架构
1.元数据模型(Metadata Model):是OpenMetadata的基础,定义了各种元数据类型和它们之间的关系,如数据资产、数据源、数据管道、用户等。通过标准化的元数据模型,能够对不同来源和类型的元数据进行统一的描述和管理,确保数据的一致性和互操作性。
2.元数据存储(Metadata Store):作为核心存储组件,通常采用图数据库(如JanusGraph)来存储元数据。图数据库能够很好地处理元数据之间复杂的关系,方便进行高效的查询和遍历操作,为元数据的管理和分析提供了强大的支持。
3.摄取框架(Ingestion Framework):负责从各种数据源中提取元数据,支持众多的连接器,可与数据库、数据仓库、数据湖、消息队列、数据管道等80多种数据服务集成。摄取框架能够定期或实时地获取元数据,并将其转换为符合OpenMetadata元数据模型的格式,然后存储到元数据存储中。
4.API 层(API Layer):为用户和其他系统提供了与OpenMetadata交互的接口,通过RESTful API,用户可以进行元数据的查询、插入、更新和删除等操作,也可以获取数据质量报告、数据沿袭信息等。API层还支持与其他数据管理工具和平台的集成,方便用户在不同的环境中使用OpenMetadata的功能。
5.用户界面(User Interface):提供了直观的可视化界面,方便用户进行数据探索、元数据管理、数据治理等操作。用户可以通过界面搜索数据资产、查看数据详情、定义数据质量规则、设置数据治理策略等,降低了用户使用OpenMetadata的门槛,提高了工作效率。
三、技术选型
1.后端技术
编程语言:主要使用Java和Python。Java用于构建核心的后端服务,利用其稳定性、可扩展性和丰富的生态系统,确保系统能够处理大量的元数据操作和高并发请求。Python则常用于数据处理、脚本编写和一些与数据科学相关的任务,如数据质量分析和机器学习模型的集成。
框架:Spring Boot框架被用于构建微服务架构,它提供了快速开发、配置管理和依赖注入等功能,使得各个微服务能够独立开发、部署和扩展。同时,结合Spring Cloud等工具,实现了服务发现、配置管理、熔断器等微服务治理功能,提高了系统的可靠性和可维护性。
2.存储技术
图数据库:JanusGraph作为元数据存储的核心,用于存储和管理元数据之间的复杂关系。它支持大规模的图数据存储和高效的图查询操作,能够很好地满足OpenMetadata对元数据关系管理的需求。
关系数据库:在某些场景下,也会使用关系数据库(如MySQL、PostgreSQL)来存储一些结构化的数据,如用户信息、系统配置等。关系数据库提供了强大的事务处理和SQL查询功能,与图数据库互补,共同满足不同类型数据的存储和查询需求。
分布式存储:对于一些大规模的元数据和数据文件,可能会使用分布式文件系统(如HDFS)或对象存储(如S3)来进行存储,以实现数据的高可用性和可扩展性。
3.数据处理与分析技术
Apache Airflow:用于数据摄取和元数据处理任务的调度和编排,能够方便地定义和管理复杂的数据处理工作流,确保元数据的及时摄取和处理。
Apache Spark:可用于大规模元数据的处理和分析,如数据质量检查、数据沿袭分析等。它提供了高效的分布式数据处理能力,能够处理海量的元数据,并支持多种数据处理和分析算法。
4.前端技术
JavaScript框架:采用Vue.js或React.js等流行的JavaScript框架构建用户界面,这些框架提供了高效的组件化开发模式和响应式设计,能够为用户提供流畅的交互体验。结合HTML和CSS技术,实现了美观、易用的界面设计。
数据可视化库:使用ECharts、D3.js等数据可视化库,将元数据以图表、图形等形式展示给用户,方便用户直观地理解和分析数据。这些库提供了丰富的可视化组件和交互功能,能够满足不同类型元数据的可视化需求。
四、应用场景
企业可利用OpenMetadata统一管理分散在各个系统和部门的数据资产,实现数据发现、治理和质量监控,提升数据管理效率和质量,为决策提供支持。在数据仓库和数据分析场景中,帮助用户快速找到所需数据,了解数据来源和质量,跟踪数据在ETL过程中的变化,确保分析结果的准确性和可靠性。可管理机器学习模型的元数据,包括数据特征、模型训练过程、评估指标等,帮助数据科学家和工程师更好地理解和管理模型资产,提高模型的可重复性和可解释性。
1.数据管理与治理
数据资产盘点:企业内数据资产繁多且分散在不同系统中,OpenMetadata可收集各数据源元数据,如数据库表结构、数据仓库维度和指标等,形成全面数据资产清单,让数据所有者和管理者清晰掌握数据分布与状态。
数据标准制定与执行:通过定义数据标准和规范,如数据格式、编码规则、业务术语等,并将其与数据资产关联,OpenMetadata能确保数据在采集、存储和使用过程中符合标准,提升数据质量和一致性。
数据安全管理:借助对元数据的分析,OpenMetadata可识别敏感数据,如客户身份证号、银行卡号等,结合访问控制策略,确定不同用户和角色对敏感数据的访问权限,防止数据泄露。
2.数据分析与洞察
数据探索与发现:数据分析师在进行数据分析时,可利用OpenMetadata的搜索和过滤功能,快速找到与分析主题相关的数据资产,如特定业务领域的数据库表、数据集中的相关字段等,提高数据探索效率。
理解数据上下文:通过查看数据资产的元数据,包括数据来源、业务含义、数据质量等信息,分析师能更好地理解数据,避免错误解读,例如了解到某字段的取值范围和业务规则,有助于正确进行数据分析和建模。
跟踪数据 lineage:在复杂的数据处理流程中,OpenMetadata能跟踪数据从原始数据源到最终分析结果的流转过程,让分析师清楚数据经过了哪些处理步骤和转换,确保分析结果的准确性和可追溯性。
3.数据开发与运维
数据集成与ETL:在数据集成和ETL过程中,开发人员可利用OpenMetadata了解数据源和目标数据仓库的结构与元数据信息,更好地设计数据抽取、转换和加载流程,确保数据准确无误地集成。
数据质量监控:结合数据质量工具,OpenMetadata可定义和监控数据质量规则,如检查数据的完整性、准确性、一致性等,当数据质量出现问题时及时告警,便于运维人员快速定位和解决。
数据管道管理:对于数据管道的运维,OpenMetadata可提供管道的元数据信息,如管道的依赖关系、执行频率、运行状态等,帮助运维人员进行调度、监控和故障排查。
4.跨部门协作与沟通
业务与技术沟通桥梁:业务人员和技术人员对数据的理解可能存在差异,OpenMetadata提供统一的元数据平台,以业务术语解释数据资产,让业务人员能理解数据含义,同时也方便技术人员了解业务需求,促进双方沟通协作。
项目协作与数据共享:在跨部门项目中,不同团队需要共享和使用数据,OpenMetadata可作为数据共享的中心平台,让各团队了解可用的数据资产,明确数据的使用规则和权限,确保数据在项目中安全、高效地共享和使用。
5.机器学习与人工智能
模型管理:对于机器学习模型的元数据,如模型结构、训练数据、超参数、评估指标等,OpenMetadata可进行集中管理,方便数据科学家和工程师查找、比较和复用模型。
数据准备与特征工程:在进行机器学习数据准备和特征工程时,OpenMetadata能帮助数据科学家了解数据的特征和质量,选择合适的特征进行模型训练,同时跟踪特征的生成和转换过程,提高模型的可解释性和稳定性。