元数据管理
一、大数据中为什么要元数据管理
元数据(Metadata),通常的定义为"描述数据的数据"。元数据打通了源数据、数据仓库、数据应用,记录了数据从产生到消费的全过程。元数据管理是数据治理的核心。
数据的真正价值在于数据驱动决策,通过数据指导运营。通过数据驱动的方法判断趋势,帮住我们发现问题,继而推动创新或产生新的解决方案。随着企业数据爆发式增长,数据体量越来越难以估量,我们很难说清楚我们到底拥有哪些数据,这些数据从哪里来,到哪里去,发生了什么变化,应该如何使用它们。因此数据治理中的元数据管理成为企业级不可或缺的重要组成部分。元数据治理可以提供数据源管理、分析数据血缘关系、分析数据影响等,实现对复杂的数据环境监控管理,为企业提供安全可信的数据,为数据仓库的运行与维护提供有效支撑。
简单来说,数据是公司中非常有价值的资产,这些数据包含各种数据源,各种业务,各种处理层次,对于这些资产需要有序、高效、统一的管理,这就需要一个元数据管理系统,元数据管理是数据治理中非常重要的一个核心,元数据的一致性、可追溯性是实现数据治理非常重要的一个环节。
二、元数据管理工具-Atlas
在大数据时代,目前最成熟的与Hadoop体系兼容比较好的元数据治理平台就是Apache Atlas。为寻求数据治理的开源解决方案,2015年,Hortonworks公司联合其他厂商与用户于发起数据治理倡议,然后,包含数据分类(资产目录及数据字典)、集中策略引擎、数据血缘、安全和生命周期管理功能的Atlas应运而生。
Apache Atlas是一个可伸缩和可扩展的核心基础治理服务集合,使企业能够有效地和高效地满足 Hadoop 中的合规性要求,并允许与整个企业数据生态系统的集成。为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据科学家,数据分析师和数据治理团队提供围绕这些数据资产的协作功能。
Atlas官网地址:Apache Atlas – Data Governance and Metadata framework for Hadoop
三、Atlas架构原理
关于Atlas的架构原理,我们只需要了解由哪些部分组成即可,Atlas的架构核心组件如下:
- Metadata Sources:
- Atlas支持与许多元数据源的集成,将来还会添加更多集成。目前,Atlas 支持从Hive、Sqoop、Storm、HBase获取和管理元数据。
- Integration:
- 用户可以使用两种方法管理 Atlas 中的元数据:
- API:Atlas 的所有功能都可以通过 REST API 提供给最终用户,允许创建,更新和删除类型和实体。它也是查询和发现通过 Atlas 管理的类型和实体的主要方法。
- Messaging:除了 API 之外,用户还可以选择使用基于 Kafka 的消息接口与 Atlas 集成。这对于将元数据对象传输到 Atlas 以及从 Atlas 使用可以构建应用程序的元数据更改事件都非常有用。如果希望使用与 Atlas 更松散耦合的集成,这可以允许更好的可扩展性,可靠性等,消息传递接口是特别有用的。
- Apps:
- Ranger Tag Based Policies: Apache Ranger 是针对 Hadoop 生态系统的高级安全管理解决方案,与各种 Hadoop 组件具有广泛的集成。通过与 Atlas 集成,Ranger 允许安全管理员定义元数据驱动的安全策略,以实现有效的治理。
- Atlas Admin UI: 该组件是一个基于 Web 的应用程序,允许我们发现和注释元数据。Admin UI提供了搜索界面和 类SQL的查询语言,可以用来查询由 Atlas 管理的元数据类型和对象。Admin UI 使用 Atlas 的 REST API 来构建其功能。
- Business Taxonomy:从元数据源获取到 Atlas 的元数据对象主要是一种技术形式的元数据。为了增强可发现性和治理能力,Atlas 提供了一个业务分类界面,允许用户首先定义一组代表其业务域的业务术语,并将其与 Atlas 管理的元数据实体相关联。业务分类法是一种 Web 应用程序,目前是 Atlas Admin UI 的一部分,并且使用 REST API 与 Atlas 集成。
- Core:
- Atlas Core包含以下几个部分:
- Ingest/Export:Ingest 组件允许将元数据添加到 Atlas。类似地,Export 组件暴露由Atlas检测到的元数据更改,以作为事件引发,消费者可以使用这些更改事件来实时响应元数据更改。
- Type System: Atlas 允许用户为他们想要管理的元数据对象定义一个模型。该模型由称为 "Type" 的定义组成。"类型" 的 实例被称为 "实体" 表示被管理的实际元数据对象。类型系统是一个组件,允许用户定义和管理类型和实体。由 Atlas 管理的所有元数据对象(例如Hive表)都使用类型进行建模,并表示为实体。
- Graph Engine:在内部,Atlas通过使用图模型管理元数据对象。以实现元数据对象之间的巨大灵活性和丰富的关系。图引擎是负责在类型系统的类型和实体之间进行转换的组件,以及基础图形模型。除了管理图对象之外,图引擎还为元数据对象创建适当的索引,以便有效地搜索它们。
- JanusGraph:目前,Atlas 使用 JanusGraph图数据库来存储元数据对象。 JanusGraph使用两个存储:默认情况下元数据存储配置为 HBase ,索引存储配置为 Solr
四、Atlas特性
1、元数据类型 & 实例
- 各种Hadoop和非Hadoop元数据的预定义类型。
- 能够为要管理的元数据定义新类型。
- 类型可以具有原始属性,复杂属性,对象引用;可以继承其他类型。
- 类型(type)实例(称为实体entities)捕获元数据对象详细信息及其关系。
- 可以更轻松地进行集成用于处理类型和实例的REST API。
2、分类
- 能够动态创建分类 - 如PII,EXPIRES_ON,DATA_QUALITY,SENSITIVE。
- 分类可以包含属性 - 例如EXPIRES_ON分类中的expiry_date属性。
- 实体(entities)可以与多个分类(classifications)相关联,从而实现更轻松的发现和安全实施。
- 通过血缘传播分类 - 自动确保分类在进行各种处理时遵循数据。
3、血缘
- 直观的UI,用于在数据流转时,通过各种流程时查看数据。
- 用于访问和更新血缘的REST API。
4、搜索/发现
- 直观的UI,按类型(type),分类(classification),属性值(attribute)或自由文本搜索实体。
- 丰富的REST API,可按复杂条件进行搜索。
- SQL搜索实体的查询语言 - 域特定语言(DSL)。
5、安全和数据屏蔽
- 用于元数据访问的细粒度安全性,实现对实体实例的访问控制以及添加/更新/删除分类等操作。
- 与Apache Ranger集成可根据与Apache Atlas中的实体相关的分类对数据访问进行授权/数据屏蔽。例如:
- 谁可以访问分类为PII,SENSITIVE的数据。
- 客户服务用户只能看到分类为NATIONAL_ID的列的最后4位数字。