Apache atlas
第一章:Apache atlas简介
为寻求数据治理的开源解决方案,Hortonworks公司联合其他厂商与用户于2015年发起数据治理倡议,包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理等方面。Apache Atlas 项目就是这个倡议的结果,社区伙伴持续的为该项目提供新的功能和特性。该项目用于管理共享元数据、数据分级、审计、安全性以及数据保护等方面,努力与Apache Ranger整合,用于数据权限控制策略。目前最新版本是2.0.0.
.1apache atlas 架构介绍
1.1.1核心组件Core
Type System: Apache Atlas 允许用户为他们想要管理的元数据对象定义一个模型,该模型被叫做“类型”。类型的实例被称为“实体”,实体用来表示被管理的实际元数据对象类型系统是允许用户定义和管理类型和实体的组件。。
例如:Atlas 本身自带的hive_table类
Name:        hive_table
TypeCategory: Entity
SuperTypes:  DataSet
Attributes:
name:            string
db:              hive_db
owner:            string
createTime:      date
lastAccessTime:  date
comment:          string
retention:        int
sd:              hive_storagedesc
partitionKeys:    array<hive_column>
aliases:          array<string>
columns:          array<hive_column>
parameters:      map<string>
viewOriginalText: string
viewExpandedText: string
tableType:        string
temporary:        boolean
从上面示例中可以看出,类由名称name唯一标识
类型具有元类型。Atlas具有以下元类型:
•基本元类型:boolean, byte, short, int, long, float, double, biginteger, bigdecimal, string, date •枚举
•集合元类型:array, map
•复合元类型:Entity, Struct, Classification, Relationship
Hive_table类的一个实体
guid:    "9ba387dd-fa76-429c-b791-ffc338d3c91f"
typeName: "hive_table"
status:  "ACTIVE"
values:
name:            “customers”
db:              { "guid": "b42c6cfc-c1e7-42fd-a9e6-890e0adf33bc",
"typeName": "hive_db"
}
owner:            “admin”
createTime:      1490761686029
updateTime:      1516298102877
comment:
retention:        0
sd:              { "guid": "ff58025f-6854-4195-9f75-3a3058dd8dcf",
"typeName":
"hive_storagedesc"
}
partitionKeys:
aliases:
columns:          [ { "guid": "65e2204f-6a23-4130-934a-9679af6a211f",
"typeName": "hive_column" },
{ "guid": "d726de70-faca-46fb-9c99-cf04f6b579a6",
"typeName": "hive_column" },
...
]
parameters:      { "transient_lastDdlTime": "1466403208"}
viewOriginalText:
viewExpandedText:
tableType:        “MANAGED_TABLE”
temporary:
实体类型的每个实例都由唯一标识符GUID标识。
定义对象时,此GUID由Atlas服务器生成,并且在实体的整个生命周期内保持不变。在任何时间点,都可以使用其GUID访问此特定实体。
Ingest/Export:Ingest 组件允许将元数据添加到Atlas。类似地,Export 组件暴露由Atlas 检测到的元数据更改,以作为事件引发,消费者可以使用这些更改事件来实时响应元数据更改。
Graph Engine:在内部,Atlas保留使用Graph模型管理的元数据对象。这种方法提供了极大的灵活性,并可以有效处理元数据对象之间的丰富关系。图引擎组件负责在Atlas类型系统的类型和实体以及基础图
持久性模型之间进行转换。除了管理图形对象外,图形引擎还为元数据对象创建适当的索引,以便可以有效地搜索它们。Atlas使用JanusGraph存储元数据对象。
1.1.2 Integration
用户可以使用两种方法整合管理Atlas中的元数据:
⚫API:Atlas 的所有功能都可以通过REST API 提供给最终用户,允许创建,更新和删除类型和实体。
它也是查询和发现通过Atlas 管理的类型和实体的主要方法。
⚫Messaging:除了API 之外,用户还可以选择使用基于Kafka 的消息接口与Atlas 集成。这对于将元数据对象传输到Atlas 以及从Atlas 使用可以构建应用程序的元数据更改事件都非常有用。如果希望使用与Atlas 更松散耦合的集成,这可以允许更好的可扩展性,可靠性等,消息传递接口是特别有用的。Atlas 使用Apache Kafka 作为通知服务器用于钩子和元数据通知事件的下游消费者之间的通信。事件由钩子(hook)和Atlas 写到不同的Kafka 主题:
kafka最新版本
1.1.3 Metadata source
Atlas 支持与许多元数据源的集成,将来还会添加更多集成。目前,Atlas 支持从以下数据源获取和管理元数据:
⚫Hive:通过hive-brige,atlas可以接入Hive的元数据,包括hive_db,hive_table,hive_column,hive_process ⚫Sqoop:通过sqoop-brige,atlas可以接入关系型数据库的元数据。
⚫kafka:通过kafka-brige接入
⚫Storm:通过strom-brige可以接入流式处理的元数据
Atlas集成大数据组件的元数据源需要实现以下两点:
首先,需要基于atlas的类型系统定义能够表达大数据组件元数据对象的元数据模型(例如Hive的元数据模型实现在org.apache.del.HiveDataModelGenerator;
然后,需要提供hook组件去从大数据组件的元数据源中提取元数据对象,实时侦听元数据的变更并反馈给atlas;
1.1.4 应用领域
Atlas Admin UI:此组件是一个基于Web的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和类似SQL的查询语言,可用于查询Atlas管理的元数据类型和对象。管理员界面使
用Atlas的REST API来构建其功能。
Tag Based Policies: Apache Ranger是针对Hadoop生态系统的高级安全管理解决方案,与各种Hadoop组件广泛集成。通过与Atlas集成,Ranger使安全管理员可以定义元数据驱动的安全策略以进行有效的管理。Ranger是Atlas通知的元数据更改事件的使用者。
.2apache atlas基本功能
⚫数据分类
定义、注释和自动捕获数据集和底层之间的关系元素包括源、目标和派生过程
⚫安全审计
数据访问的日志审计
⚫搜索和血缘关系
元数据信息及数据之间的血缘关系
⚫安全与策略引擎
结合ApacheRanger来设置数据的访问权限
第二章:Atlas Admin UI 使用介绍
Atlas admin UI 包括三部分:SEARCH,CLASSIFICATION,GLOSSARY
2.1 Search
Search模块包括Base Search、Advanced Search两种Entity查询功能和Entity创建功能。
2.1.1 BASE SEARCH
⚫基本搜索使您可以使用实体的类型名,关联的分类/标签进行查询,并支持对实体属性以及分类/标签属性进行过滤。
可以使用以下JSON结构(称为!SearchParameters)来表示整个查询结构。
typeName:              the type of entity to look for
excludeDeletedEntities: should the search exclude deleted entities? (default: ) classification:        only include entities with given classification
query:                  any free text occurrence that the entity should have
(generic/wildcard queries might be slow)
offset:                starting offset of the result set (useful for pagination)
limit:                  max number of results to fetch
entityFilters:          entity attribute filter(s)
tagFilters:            classification attribute filter(s)
attributes:            attributes to include in the search result
支持的运算符过滤
⚫LT(符号:<,lt)与数字,日期属性一起使用
⚫GT(符号:>,gt)可用于数字,日期属性
⚫LTE(符号:<=,lte)可用于数字,日期属性
⚫GTE(符号:> =,gte)可与数字,日期属性一起使用
⚫EQ(符号:eq,=)可用于数值,日期,字符串属性
⚫NEQ(符号:neq,!=)可用于数字,日期,字符串属性
⚫LIKE(符号:like,LIKE)与String属性一起使用
⚫STARTS_WITH(符号:startsWith,STARTSWITH)可用于String属性
⚫ENDS_WITH(符号:endsWith,ENDSWITH)可用于字符串属性
⚫CONTAINS(符号:包含,CONTAINS)与String属性一起使用
2.1.2 Advanced search
Atlas中的高级搜索也称为基于DSL的搜索。
DSL是一种具有简单结构的语言,可以帮助用户浏览Atlas数据存储库。该语法粗略地模拟了关系数据库世界中流行的结构化查询语言(SQL)。
⚫语法介绍:
1.FROM语法example:from db,
2.Where 语法example:
a)from Table where name = 'time_dim' or name = 'customer_dim'
b)from Table where name = ["customer_dim", "time_dim"]
c)from Table where name LIKE '*_dim'
d)DB where name like "Rrt?*"