文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。
Apache Atlas 框架是一套可扩展的核心基础治理服务,使企业能够有效、高效地满足 Hadoop 中的合规性要求,并支持与整个企业数据生态系统集成。这将通过使用规范和取证模型,以及技术和运营审计以及由业务分类元数据丰富的沿袭,在 Hadoop 中提供真正的可视性。它还使任何元数据使用者能够互操作,而无需彼此独立的接口——元数据存储是通用的。通过利用 Apache Ranger 来维护元数据的准确性,以防止在运行时对数据进行未经授权的访问。安全性基于角色 (RBAC) 和属性 (ABAC)。
导出 API
Export API
总览:
- 调用方需指定要导出的数据范围(详见下文)。
- 若调用成功,API 将以指定格式返回数据流。
- 若调用失败,将返回错误信息。
有关导出 hdfs_path 实体的详细信息,请参见此处。
标题 | 导出 API |
---|---|
Example 示例 | 见下方示例章节。 |
URL 地址 | api/atlas/admin/export |
Method 方法 | POST |
URL Parameters 参数 | 无 |
Data Parameters 数据参数 | 使用 AtlasExportRequest 类指定要导出的项。AtlasObjectId 列表允许在一次会话中指定多个导出项。AtlasObjectId 是一个包含实体类型、唯一属性名称、唯一属性值的元组,可指定多项。详见下方示例。 |
Success Response 成功响应 | 以 application/zip 格式返回文件流。 |
Error Response 失败响应 | 系统内部处理的错误将以 AtlasBaseException 形式返回。 |
Notes 说明 | 调用方可通过 java.io.ByteOutputStream 以编程方式消费 API 输出,或手动将流内容保存到磁盘文件。 |
方法签名
@POST
@Path("/export")
@Consumes("application/json;charset=UTF-8")
其他选项
可为 Export 操作指定额外参数。
当前实现提供 2 个选项,均为可选:
-
matchType 此选项配置获取起始实体时所采用的匹配方式,可选值如下:
- startsWith 查找以指定条件为前缀的实体。
- endsWith 查找以指定条件为后缀的实体。
- contains 查找包含指定条件子串的实体。
- matches 查找与指定条件正则表达式匹配的实体。
-
fetchType 此选项配置获取实体时所采用的方式,可选值如下:
- FULL: 获取与起始实体直接及间接关联的所有实体。例如,若起始实体为表,则此选项将获取该表、数据库以及数据库内的所有其他表。
- CONNECTED: 仅获取与起始实体直接关联的实体。例如,若起始实体为表,则此选项仅获取该表及其数据库实体。
- INCREMENTAL: 详情请参见此处。
若未指定 matchType,则使用精确匹配,即整个字符串作为搜索条件。
通过 matchType 进行搜索适用于所有实体类型,尤其对匹配 hdfs_path 类型实体(见此处)非常有用。
fetchType 选项默认值为 FULL。
完整示例见下方章节。
导出 ZIP 文件的内容
导出的 ZIP 文件包含以下条目:
- atlas-export-result.json:
- 输入过滤器:导出范围。
- 文件格式:导出操作所选格式。
- 指标:导出的实体定义、分类及实体数量。
- atlas-typesdef.json: 导出实体的类型定义。
- atlas-export-order.json: 实体应被导出的顺序。
- {guid}.json: 各个实体以对应 ID 命名的文件导出。
示例
以下 AtlasExportRequest 展示了尝试导出集群 cl1 中的 2 个数据库的过滤器:
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts@cl1" } },
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "hr@cl1" } }
]
}
以下 AtlasExportRequest 指定 fetchType 为 FULL。matchType 选项将获取 accounts@cl1。
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts@" } }
],
"options": {
"fetchType": "FULL",
"matchType": "startsWith"
}
}
以下 AtlasExportRequest 通过 guid 而非 uniqueAttributes 获取 accounts@cl1。
{
"itemsToExport": [
{ "typeName": "hive_db", "guid": "846c5e9c-3ac6-40ju-8289-fb0cebm64783" }
],
"options": {
"fetchType": "FULL",
}
}
以下 AtlasExportRequest 指定 fetchType 为 connected。matchType 选项将获取数据库中的 accountsReceivable、accountsPayable 等实体。
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts" } }
],
"options": {
"fetchType": "CONNECTED",
"matchType": "startsWith"
}
}
以下为导出 QuickStart 中 Sales 数据库时的 AtlasExportResult JSON。
metrics 包含本次操作中导出的类型及实体数量。
{
"clientIpAddress": "10.0.2.15",
"hostName": "10.0.2.2",
"metrics": {
"duration": 1415,
"entitiesWithExtInfo": 12,
"entity:DB_v1": 2,
"entity:LoadProcess_v1": 2,
"entity:Table_v1": 6,
"entity:View_v1": 2,
"typedef:Column_v1": 1,
"typedef:DB_v1": 1,
"typedef:LoadProcess_v1": 1,
"typedef:StorageDesc_v1": 1,
"typedef:Table_v1": 1,
"typedef:View_v1": 1,
"typedef:classification": 6
},
"operationStatus": "SUCCESS",
"request": {
"itemsToExport": [
{
"typeName": "DB_v1",
"uniqueAttributes": {
"name": "Sales"
}
}
],
"options": {
"fetchType": "full"
}
},
"userName": "admin"
}
CURL 调用
以下为演示导出 QuickStart 数据库的示例 CURL 调用。
curl -X POST -u adminuser:password -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
"itemsToExport": [
{ "typeName": "DB", "uniqueAttributes": { "name": "Sales" }},
{ "typeName": "DB", "uniqueAttributes": { "name": "Reporting" }},
{ "typeName": "DB", "uniqueAttributes": { "name": "Logging" }}
],
"options": { "fetchType": "full" }
}' "http://localhost:21000/api/atlas/admin/export" > quickStartDB.zip
用于 HDFS 路径的导出与导入 API
Export & Import APIs for HDFS Path
简介
使用 HDFS 路径的导入-导出 API 的总体方法保持不变。由于 Atlas 内部对 HDFS 路径的处理方式,存在一些细微差异。
与 HIVE 实体不同,Atlas 中的 HDFS 实体是通过 Atlas Web UI 中的 Create Entity 链接手动创建的。
此外,HDFS 路径具有层次结构,这意味着用户倾向于在 Atlas 中建模相同的 HDFS 存储结构。
示例 HDFS 设置
HDFS 路径 | Atlas 实体 |
---|---|
/apps/warehouse/finance | Entity type: hdfs_path Name: Finance QualifiedName:FinanceAll |
/apps/warehouse/finance/accounts-receivable | Entity type: hdfs_path Name: FinanceReceivable QualifiedName:FinanceReceivable Path: /apps/warehouse/finance |
/apps/warehouse/finance/accounts-payable | Entity type: hdfs_path Name: Finance-Payable QualifiedName:FinancePayable Path: /apps/warehouse/finance/accounts-payable |
/apps/warehouse/finance/billing | Entity type: hdfs_path Name: FinanceBilling QualifiedName:FinanceBilling Path: /apps/warehouse/finance/billing |
使用 matchType 的导出 API
要导出表示 HDFS 路径的实体,请使用带有 matchType 选项的导出 API。详细信息可参见此处。
使用 CURL 调用的示例
以下示例 CURL 调用对上述 示例 HDFS 设置 执行导出操作。
curl -X POST -u adminuser:password -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
"itemsToExport": [
{ "typeName": "hdfs_path", "uniqueAttributes": { "qualifiedName": "FinanceAll" } }
],
"options": {
"fetchType": "full",
"matchType": "startsWith"
}
}' "http://localhost:21000/api/atlas/admin/export" > financeAll.zip
HDFS 实体的自动创建
鉴于 HDFS 实体的创建是一个手动过程,导出 API 提供了一种机制来创建请求的 HDFS 实体。
导出与导入审计
Export & Import Audits
背景
新的导出和导入操作的审计功能也提供了相应的 REST API,以便以编程方式获取审计条目。
REST API
标题 | 集群的复制审计 |
---|---|
Example 示例 | 见下文。 |
URL 地址 | api/atlas/admin/expimp/audit |
Method 方法 | GET |
URL Parameters 参数 | sourceClusterName: 源集群的名称。 |
targetClusterName: 目标集群的名称。 | |
userName: 发起该操作的用户名称。 | |
operation: 操作类型,EXPORT 或 IMPORT。 | |
startTime: 操作开始的时间,单位为毫秒。 | |
endTime: 操作结束的时间,单位为毫秒。 | |
limit: 要返回的结果数量 | |
offset: 偏移量 | |
Data Parameters 数据参数 | 无 |
Success Response 成功响应 | ExportImportAuditEntry 列表 |
Error Response 错误响应 | 以 AtlasBaseException 形式返回的错误 |
Notes 备注 | 无 |
CURL
curl -X GET -u admin:admin -H "Content-Type: application/json" -H "Cache-Control: no-cache"
http://localhost:port/api/atlas/admin/expimp/audit?sourceClusterName=cl2
响应
{
"queryType": "BASIC",
"searchParameters": {
"typeName": "ReplicationAuditEntry",
"excludeDeletedEntities": false,
"includeClassificationAttributes": false,
"includeSubTypes": true,
"includeSubClassifications": true,
"limit": 100,
"offset": 0,
"entityFilters": {
"attributeName": "name",
"operator": "eq",
"attributeValue": "cl2",
"criterion": []
}
},
"entities": [{
"typeName": "ReplicationAuditEntry",
"attributes": {
"owner": null,
"uniqueName": "cl2:EXPORT:1533037289411",
"createTime": null,
"name": "cl2",
"description": null
},
"guid": "04844141-af72-498a-9d26-f70f91e8adf8",
"status": "ACTIVE",
"displayText": "cl2",
"classificationNames": []
}, {
"typeName": "ReplicationAuditEntry",
"attributes": {
"owner": null,
"uniqueName": "cl2:EXPORT:1533037368407",
"createTime": null,
"name": "cl2",
"description": null
},
"guid": "837abe66-20c8-4296-8678-e715498bf8fb",
"status": "ACTIVE",
"displayText": "cl2",
"classificationNames": []
}]
}
增量导出
Incremental Export
背景
增量导出允许导出指定时间戳之后的实体。这使得可以构建同步能力,因为有效载荷更轻。
导出选项
新增 fetchType 用于指示增量导出。该选项可与任何 matchType 一起使用。当 fetchType 为 incremental 时,必须指定 changeMarker 选项,否则将执行完整导出。
{
"itemsToExport": [
{ "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "stocks@cl1" } }
],
"options": {
"fetchType": "incremental",
"changeMarker": 10000
}
}
获取变更标记
首次调用导出并将 fetchType 设置为 incremental 时,应将 changeMarker 设为 0。这将执行一次完整导出。AtlasExportResult 将包含一个 changeMarker 值。该值应在后续对导出的调用中使用。
跳过血缘选项
导出时可跳过血缘信息,避免所有血缘信息进入导出文件。
增量导出的优势
当导出时设置 skipLineage 选项为 true 时,增量导出的真正优势才会显现。这在获取自上次导出以来已变更的实体时显著提升了性能。
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。