元数据管理与数据治理平台:Apache Atlas 导出 Export API HDFS Path Audits Incremental

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

Apache Atlas
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 指定 fetchTypeFULLmatchType 选项将获取 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 指定 fetchTypeconnectedmatchType 选项将获取数据库中的 accountsReceivableaccountsPayable 等实体。

{
    "itemsToExport": [
       { "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "accounts" } }
    ],
    "options": {
        "fetchType": "CONNECTED",
        "matchType": "startsWith"
    }
}

以下为导出 QuickStartSales 数据库时的 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/financeEntity type: hdfs_path
Name: Finance
QualifiedName:FinanceAll
/apps/warehouse/finance/accounts-receivableEntity type: hdfs_path
Name: FinanceReceivable
QualifiedName:FinanceReceivable
Path: /apps/warehouse/finance
/apps/warehouse/finance/accounts-payableEntity type: hdfs_path
Name: Finance-Payable
QualifiedName:FinancePayable
Path: /apps/warehouse/finance/accounts-payable
/apps/warehouse/finance/billingEntity 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 一起使用。当 fetchTypeincremental 时,必须指定 changeMarker 选项,否则将执行完整导出。

{
 "itemsToExport": [
 { "typeName": "hive_db", "uniqueAttributes": { "qualifiedName": "stocks@cl1" } }
 ],
"options": {
 "fetchType": "incremental",
 "changeMarker": 10000
 }
}

获取变更标记

首次调用导出并将 fetchType 设置为 incremental 时,应将 changeMarker 设为 0。这将执行一次完整导出。AtlasExportResult 将包含一个 changeMarker 值。该值应在后续对导出的调用中使用。

跳过血缘选项

导出时可跳过血缘信息,避免所有血缘信息进入导出文件。

增量导出的优势

当导出时设置 skipLineage 选项为 true 时,增量导出的真正优势才会显现。这在获取自上次导出以来已变更的实体时显著提升了性能。

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

船长Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值