Apache Atlas的起源(1)
我是日立制作所研究开发集团数据管理研究部的角井。
我們將分兩部分介紹Apache Atlas,它是一個開源的數據目錄。在第一篇文章中,我們將介紹Apache Atlas作為數據目錄的背景和功能;在第二篇文章中,我們將解釋它的構建和安裝步驟。
1. Apache Atlas 是什么?
Apache Atlas是一个开源的”数据目录1″。
数据目录是一种软件,用于检索和参考存储在DBMS或数据湖等中的数据资源。然而,它并不存储数据本身,而是提取有关数据资源的有用信息,即所谓的元数据,用于利用和管理数据资源。数据目录帮助数据用户和数据管理员从众多数据资源中找到所需的数据。
Apache Atlas是在Apache Software Foundation (ASF)的管理下开发的,其许可证为Apache License 2.0。虽然除了Apache Atlas之外还存在其他开源数据目录,但是它在像ASF这样的开源支持组织的支持下开发,具有广泛适用性,不仅限于特定的用例,并且具有一定的实践经验,几乎是唯一的选择。
之后,有时候会将Apache Atlas简称为Atlas。
2. Atlas的背景以及其历史
Apache Atlas是一款源自于Apache Hadoop为核心的一系列开源软件的数据平台,即Hadoop生态系统中的软件。
最初的Hadoop是基于MapReduce模型的并行分布式处理框架而引起关注的,同时也具备分布式文件系统(HDFS)的功能。随着Apache Hive的出现,Hadoop还可以被用作可以通过SQL类似的查询语言来访问的数据仓库,而且随着资源管理功能YARN的实现和分布处理框架的通用性的提高,Hadoop被视为构建能够一揽子地积累、加工和分析组织内多样化数据的数据湖的平台。当各种数据来源的数据资源被大量积累到数据湖中后,了解其中有什么样的数据以及如何使用变得困难。数据资源成为组织决策的”数据资产”,随着其重要性的增加,对于全面了解和管理它们的数据治理(data governance)解决方案也变得越来越需要。
还有一个趋势不容忽视,那就是数据民主化。随着数据资源成为支撑组织运营的核心资产,数据开始跨越组织内部部门的壁垒得以广泛应用,数据湖也成为这一平台的一面。因此,数据湖的用户也希望了解存储在其中的数据。
基于Hadoop构建的数据湖用于管理数据资产(数据治理),以及促进用户数据利用的两个需求背景下,开始了开发开源数据目录的项目。该项目由曾负责Hadoop相关服务和分发开发的Hortonworks牵头。开发于2014年底启动,2015年5月被命名为”Atlas”并进入ASF的孵化器,在同年7月发布了首个版本0.5.0。2017年6月,项目毕业于孵化阶段,并被认定为ASF的顶级项目,名为”Apache Atlas”。
随着ASF旗下开源项目的发展,Hortonworks的Hadoop发行版——Hortonworks Data Platform(HDP)也将从2015年7月发布的HDP 2.3版本开始,集成了Atlas作为数据目录。
一方面,作为Hadoop发行商中的另一个巨头,Cloudera在其Hadoop发行版Cloudera’s Distribution including Apache Hadoop (CDH)上捆绑了自家开发的工具Cloudera Navigator,提供了数据目录的功能(该工具属于专有软件)。这样,在Hadoop生态系统中,CDH的Cloudera Navigator、Apache Atlas以及第三方数据目录产品群共同存在于数据目录的位置上。
随着Hadoop生态系统在2018年达到成熟阶段,Hortonworks和Cloudera宣布合并,诞生了新的Cloudera公司5。在此之后,HDP和CDH将被整合到新的Hadoop发行版Cloudera Data Platform (CDP)中。CDP采用Atlas作为数据目录6,使得Atlas成为Hadoop生态系统中标准的数据目录。
1. 在2018年,Hadoop生态系统逐渐成熟,Hortonworks和Cloudera宣布合并,诞生了新的Cloudera公司5。随后,HDP和CDH合并为新的Hadoop发行版Cloudera Data Platform (CDP)。CDP选择了Atlas作为数据目录6,使得Atlas成为Hadoop生态系统中的标准数据目录。
作为一个开源项目,Apache Atlas 一直持续发展至今。它在2018年5月发布了1.0.0版本,2019年5月发布了2.0.0版本,而在2020年7月则发布了最新的2.1.0版本作为正式版。目前该项目仍在推进功能增强。
3. Atlas处理的元数据。
3.1 元数据是什么
数据目录的核心功能是采集和存储元数据,并使用户能够查阅。在数据治理的背景下,元数据指的是与利用和管理数据资源有关的有用信息。第二版《DAMA-DMBOK: Data Management Body of Knowledge》这本书对元数据进行了定义,将数据管理的最佳实践系统化整理如下(第21页)。
用于管理和使用数据的数据被称为元数据。由于数据无法被持有或触摸,要理解数据是什么以及如何使用它,需要以元数据的形式进行定义和了解。
此外,元数据可分为两种类型:业务元数据用于描述数据资源在商业上的意义,而技术元数据用于描述数据资源在IT系统中的存储位置和格式等上下文信息。通常,技术元数据可以通过软件自动收集,而业务元数据需要数据管理员或用户进行注册。
元数据采用键值对的形式表示为”属性”。例如,数据的名称可以是name: testdata,创建时间可以是createTime: 2021-01-01T12:34:56+09:00。在Atlas中,将数据库和表等受管理的数据资源称为”实体”,通过给注册的实体添加这些属性来存储元数据。
3.2 元数据的元模型设计
数据目录的主要作用是存储元数据,但通常存储数据的软件需要定义数据容器的结构模型。例如,关系数据库管理系统(RDBMS)通过定义数据模型来设计数据库结构,这个数据模型是基于关系模型的,并且根据具体应用程序的要求进行设计。另一个例子是统一建模语言(UML),它是一种用于建模软件的语言,使用类、属性和方法等组件,而UML的组件和它们之间的关系也是通过UML本身定义为模型。
在设计“用于设计模型的模型”的情况下,称之为“元模型”。关于用于建模元数据的元模型,目前在开源界中并没有被广泛采用的标准,而Atlas则开发并使用了自己独特的类型系统作为元模型。
为了将Atlas作为数据目录使用,需要根据该类型系统定义存储元数据的模型。但是,Atlas已经捆绑了一个已定义了Hadoop生态系统的代表实体和属性的模型,因此可以直接利用它。此外,用户也可以注册和使用自己设计的模型。由于有类型系统作为元模型,所以具备了支持Hadoop生态系统以外的数据存储的灵活性。
4. Atlas的功能
关于Atlas的功能,基本功能包括元数据的收集、登记和搜索,以及附加功能如分类和标签、术语表和链接的解释。
4.1 收集和注册元数据
在Atlas开发的背景和历史中,为了从组成Hadoop生态系统的数据库(如Apache Hive和Apache HBase)中收集和注册元数据,提前准备了”桥接器”和”钩子”。”桥接器”是一种从数据库批量收集实体及其属性的机制,而”钩子”是作为插件安装在数据库中,当实体被添加(例如添加新表)时作为契机来收集和注册元数据的机制。其中,技术元数据是可以通过软件自动收集的元数据之一。
同时,Atlas提供了用于元数据注册的接口,包括同步通信的RESTful API和异步通信的Apache Kafka主题。通过使用这些接口,您可以自行开发程序来从没有准备好桥接或挂钩的元数据源收集元数据。
在另一方面,对于业务元数据的注册,已经默认在模型中定义了属性11,如描述(实体描述)、注释、所有者等,数据管理员可以通过手动写入这些属性的值的方式进行注册。然而,这种方法的不便之处在于只能注册已经事先在模型中定义的属性。因此,从Atlas 2.1.0版本开始,新增了用户可以额外注册任意属性并附加到实体上的功能(业务元数据和自定义属性),使得更加方便。
4.2 元数据的搜索
收集和注册的元数据可以通过Web界面进行搜索和查阅。Atlas内置了Apache Solr或Elasticsearch作为搜索引擎,因此可以对整个元数据进行全文搜索。此外,可以使用类似SQL的DSL编写查询语句,以指定关于实体类型和属性的详细条件进行搜索。

此外,无论是全文搜索还是DSL搜索方式,都可以通过RESTful API从外部程序中进行使用。
4.3分类和标签。
在模型预定义的属性之外,还有“分类”(classification)和“标签”(label)作为一种功能,用于为实体提供附加说明。这两个功能都可以为实体附加一个任意字符串的标签。例如,在存储个人信息的表中,可以附加一个名为”PII”(Personally Identifiable Information)的标签。
分类可以通过为标签添加更多的键值属性来更详细地描述内容,或者限制具有标签添加权限的用户等方式,从而比标签更强大。典型情况下,分类是由数据管理员设计和定义的“官方”标签,而标签则是用户自由添加的非正式标签,可以根据需要进行使用区分。

在分类中,有一个独特的功能叫做传播。这表示给予一个实体的分类根据其后续传播规则也会自动应用于其他实体。
4.4 杂货店
「グロッサリー」とは、用語集を指します。一般的に、企業や組織内では、業務で使用される独自の言葉(一般的な意味でも、業務上の特定の意味を持つものを含む)が存在します。業務用語が統一されていない状況や、同じ用語が異なった意味で使用されると、部門間のコミュニケーションに支障が生じます。
因此,将业务术语系统化并在组织内定义和管理共同的意义,即创建业务术语集(Business Glossary),在信息治理的角度上,成为数据治理的重要概念。
尽管商务杂货和数据目录似乎没有直接关联(事实上,有些供应商甚至将数据目录和杂货管理的功能提供在不同的产品中),然而若要作为系统性地分类数据资源的依据,设计独特的分类体系反而可能促进业务术语的不一致。将商务杂货用作数据资源的分类体系是个自然的想法。
Atlas的货品库功能是按层次结构注册术语,并通过给实体添加术语标签的方式,可以搜索与特定术语相关联的实体。在将业务术语作为具有层次结构的体系进行创建和操作的组织中,可以利用这一功能。
4.5 复合修行
リニエージ(或称数据起源),或称数据来源16,是关于数据历史信息的概念。数据资源经过复制和加工,最终以适合用户利用的内容和格式存储在数据存储中。从数据起源到中间数据再到最终存储位置的这段历史信息,可以用于例如在发现数据错误时进行原因查明,以及分析数据起源和加工的内容发生变化时影响范围的分析(影响分析)等,在数据管理中非常有用的信息。
Atlas的桥接器和钩子具备收集和注册实体的功能。例如,在Apache Hive中执行CREATE TABLE … AS SELECT语句时,会创建一个新表,并且钩子会检测到此操作并注册与该表对应的新实体,并在原始表和所选表之间添加连线。这些添加的连线会以图形方式在Web界面上显示出来,因此可以直观地理解。

利用LINQ的功能,可以自動將已經標記在某個實體上的分類,傳遞到由該實體生成的其他實體上。例如,如果在一個被標記為”PII”(個人信息)的表格上生成了另一個表格,那麼”PII”的分類將自動應用到這個新生成的表格上,這就是一個可能的用例。
5. 与其他软件的互联互通
Atlas作为单独使用已经作为数据目录非常有用,而且通过向其他软件提供存储在Atlas中的元数据,进一步扩大了其应用范围。
一个例子是与Apache Ranger的整合。Apache Ranger是一个针对Hadoop生态系统的数据安全管理框架,它使得数据管理人员能够控制用户对数据资源的访问权限。
通过设置“访问控制策略”,这种访问控制将定义用户在数据资源上可以执行的操作规则。作为其中一种设置方式,有一种称为“基于标签的策略”的方法,它通过为特定的访问控制策略添加标签名称来简化设置过程。当Atlas与Ranger协同工作时,数据管理员在Atlas上为实体添加的分类会通知Ranger,并将该分类视为标签,并为实体设置访问控制策略,从而实现一系列工作流程。
作为另一个例子,有一些第三方数据目录产品可以与Atlas进行元数据交换。同时,您还可以通过使用Atlas的RESTful API,将其与自己编写的程序进行集成。正如前面提到的类型系统一样,这表明开源软件的灵活性得以发挥。
下一篇文章将介绍Apache Atlas的构建和安装步骤。
关于他们公司的商品名称
-
- Apache,Apache Hadoop,Apache HBase,Apache Hive,Apache Kafka,Apache Solr,Hadoop,HBase,Kafkaは,Apache Software Foundationの米国およびその他の国における登録商標もしくは商標です。
-
- Clouderaは,Cloudera, Inc.の米国およびその他の国における登録商標もしくは商標です。
-
- UML,Unified Modeling Languageは,Object Management Group Inc.の米国およびその他の国における登録商標もしくは商標です。
-
- Elasticsearchは,Elasticsearch B.V.の米国およびその他の国における登録商標もしくは商標です。
-
- その他記載の会社名,製品名,サービス名,その他固有名詞は,それぞれの会社の登録商標もしくは商標です。
- 本文中では™,®マークは表記しておりません。
公式称之为“Hadoop数据治理和元数据框架”,总结起来就是数据目录。另外,它并不仅限于Apache Hadoop。
在元数据管理方面,它有与元数据注册表(在ISO/IEC 11179中称为)或元数据仓库(在DAMA-DMBOK中称为)重叠的功能。近年来,更常使用更易懂的数据目录一词作为营销术语。
其他数据目录的例子包括LF AI & Data Foundation的孵化阶段的Amundsen项目和Marquez项目。
例如,诸如Alation,Waterline Data和Zaloni等供应商为Hadoop提供了数据目录产品。
合并于2019年1月完成。
针对使用Cloudera Navigator的用户,提供了从Navigator迁移到Atlas的迁移脚本。
此外,还有更细分的流派,如过程元数据和操作元数据等,但在这里我们不追求元数据类型学。
Atlas的Web界面上标有”Properties”。
顺便提一下,在UML的情况下,还定义了更高级的元模型,即元-元模型,称为Meta-Object Facility (MOF)。
作为数字统一语言标准,有ISO/IEC 11179-3,但似乎只有一些开源软件采用了。
在Atlas中捆绑的模型中,所有继承Asset类型的模型都默认具有description和owner属性。
需要在构建时选择使用Apache Solr还是Elasticsearch。
虽然在模型定义上可以是任意的,但实际上对可用于分类标签的字符有限制。
在Web界面中,“分类”最初被称为“标签”,但从版本1.0.0开始改变。
从层次结构的实体分类的意义上说,它也可以被视为实现分类法的功能。实际上,以前曾以分类法功能名称作为技术预览实现,但从版本1.0.0开始作为分类实现。
翻译为“数据来历”、“数据系谱”、“数据系统”等词汇的译语也可能使用,但最近多数情况下不翻译而使用片假名表示。
这类查询常被简称为“CTAS语句”。