使用 亚马逊云科技 Glue 和 亚马逊云科技 Lake Formation 构建多区域和高弹性的现代数据架构

亚马逊云科技 Lake Formation 有助于企业数据治理,对 数据网格 架构很重要。它与 亚马逊云科技 Glue 数据目录配合使用以强制执行数据访问和管理。这两项服务都提供可靠的数据存储,但有些客户出于合规性目的需要复制存储、目录和权限。

这篇文章解释了如何创建一种设计,自动备份不同区域的 亚马逊简单存储服务 (Amazon S3)、亚马逊云科技 Glue 数据目录和湖泊形成权限,并为灾难恢复提供备份和恢复选项。这些机制可以针对贵组织的流程进行自定义。用于克隆和实验的实用程序可在开源 GitHub 存储库中找到。

此解决方案仅复制数据目录中的元数据,而不复制实际的基础数据。 要在其他区域使用Lake Formation和亚马逊云科技 Glue创建冗余数据湖,我们建议使用S3复制、S3同步、aws -s3-copy-sync-使用 批处理或S3批量 复制 流程复制基于A mazon S3的存储。 这可确保在 Lake Formation 出现可用性问题时,数据湖在另一个区域仍能正常运行。还必须在备份区域中复制数据目录设置(表、数据库、资源链接)和 Lake Formation 设置(权限、设置)。

解决方案概述

这篇文章介绍如何在同一个账户中将 Lake Formation 权限和 亚马逊云科技 Glue 数据目录从一个区域创建备份到另一个区域。该解决方案不会创建或修改 亚马逊云科技 身份和访问管理 (IAM) 角色,这些角色在所有地区都可用。创建多区域数据湖有三个步骤:

  1. 迁移 Lake Formation 数据权限。
  2. 迁移 亚马逊云科技 Glue 数据库和表。
  3. 迁移亚马逊 S3 数据。

在以下部分中,我们将更详细地介绍每个迁移步骤。

湖泊形成权限

在 Lake Formation 中,有两种类型的权限:元数据访问和数据访问。

元数据访问权限允许用户创建、读取、更新和删除数据目录中的元数据数据库和表。

数据访问权限允许用户在 Amazon S3 中的特定位置读取和写入数据。数据访问权限使用数据位置权限进行管理,该权限允许用户创建和更改指向特定 Amazon S3 位置的元数据数据库和表。

将数据从一个区域迁移到另一个区域时,仅复制元数据访问权限。这意味着,如果将数据从源区域的存储桶移动到目标区域中的另一个存储桶,则需要在目标区域重新应用数据访问权限。

亚马逊云科技 Glue 数据目录

亚马逊云科技 Glue 数据目录是有关存储在数据湖中的数据的元数据的中央存储库。它包含对在 亚马逊云科技 Glue ETL(提取、转换和加载)任务中用作源和目标的数据的引用,并存储有关数据的位置、架构和运行时指标的信息。数据目录以元数据表和数据库的形式组织这些信息。数据目录中的表是表示数据湖中数据的元数据定义,数据库用于组织这些元数据表。

Lake Formation 权限只能应用于目标区域的数据目录中已经存在的对象。因此,为了应用这些权限,基础数据目录数据库和表必须已经存在于目标区域中。为了满足此要求,该实用程序将 亚马逊云科技 Glue 数据库和表从源区域迁移到目标区域。

亚马逊 S3 数据

构成 亚马逊云科技 Glue 表基础的数据可以存储在任何区域的 S3 存储桶中,因此无需复制数据本身。但是,如果数据已经复制到目标区域,则此实用程序可以选择更新表的位置,使其指向目标区域中复制的数据。如果数据位置发生变化,则该实用程序会更新 S3 存储桶名称并保持前缀层次结构的其余部分不变。

此实用程序不包括将数据从源区域迁移到目标区域。 数据迁移必须使用 S3 复制、S3 同步 、a ws-s3-copy-sync-使用批处理或 S 3 批量 复制 等方法单独执行。

该实用程序有两种复制湖泊形成和数据目录元数据的模式:按需和实时。按需模式是一种批量复制,它在特定时间点拍摄元数据的快照并使用它来同步元数据。实时模式几乎实时地复制了对湖层权限或数据目录所做的更改。

建议使用此实用程序的按需模式来创建现有的 Lake Formation 权限和数据目录,因为它会复制元数据的快照。同步湖泊形成和数据目录后,您可以使用实时模式来复制任何正在进行的更改。这将在目标区域中创建源区域的镜像,并在源区域进行更改时使其保持最新状态。这两种模式可以相互独立使用,并且运算是幂等的。

按需和实时模式的代码可在 GitHub 存储库中找到。让我们更详细地看一下每种模式。

按需模式

按需模式用于在特定时间点复制 Lake Formation 权限和数据目录。该代码使用 亚马逊云科技 云开发套件 (亚马逊云科技 CDK) 进行部署。下图显示了此模式的解决方案架构。

亚马逊云科技 CDK 部署了一个 亚马逊云科技 Glue 任务来执行复制。该任务从存储在 S3 存储桶中的文件中检索配置信息。此文件包括源和目标区域、要复制的数据库的可选列表以及将数据移动到不同 S3 存储桶的选项等详细信息。有关这些选项和部署说明的更多信息,请参阅 G itHub 存储库。

亚马逊云科技 Glue 任务从源区域检索 Lake Formation 权限和数据目录对象元数据,并将其存储在 S3 存储桶中的 JSON 文件中。然后,同一作业使用此文件在目标区域创建 Lake Formation 权限和数据目录数据库和表。

该工具可以通过运行 亚马逊云科技 Glue 任务按需运行。它将 Lake Formation 权限和数据目录对象元数据从源区域复制到目标区域。如果您在对目标区域进行更改后再次运行该工具,则所做的更改将被来自源区域的最新湖泊形成权限和数据目录所取代。

在将数据目录从源区域复制到目标区域时,此实用程序可以检测对数据目录元数据、数据库、表和列所做的任何更改。如果在源区域检测到更改,则会将最新版本的 亚马逊云科技 Glue 对象应用到目标区域。该实用程序报告其运行期间修改的对象的数量。

Lake Formation 权限从源区域复制到目标区域,因此所有新权限都会复制到目标区域。如果权限已从源区域删除,则不会将其从目标区域删除。

实时模式

实时模式定期复制 Lake Formation 权限和数据目录。默认间隔为 1 分钟,但可以在部署期间进行修改。该代码使用 亚马逊云科技 CDK 进行部署。下图显示了此模式的解决方案架构。

亚马逊云科技 CDK 部署了两个 A WS Lam bda 任务,并创建了一个用于存储 亚马逊云科技 CloudTrail 事件的亚马逊 DynamoDB 表 和一个 用于 定期运行复制的亚马逊 事件 桥规则。 Lambda 任务从存储在 S3 存储桶中的文件中检索配置信息。此文件包含诸如源和目标区域、将数据移动到不同 S3 存储桶的选项以及 CloudTrail 的回顾期(以小时为单位)等详细信息。有关这些选项和部署说明的更多信息,请参阅 G itHub 存储库。

EventBridge 规则以固定间隔触发 Lambda 作业。此作业检索配置信息并查询过去一小时内发生的与数据目录和湖泊形成相关的 CloudTrail 事件(持续时间可配置)。然后,所有相关事件都存储在 DynamoDB 表中。

将事件信息插入到 DynamoDB 表中后,将触发另一个 Lambda 作业。此作业检索配置信息并查询 DynamoDB 表。然后,它将所有更改应用到目标区域。如果在对目标区域进行更改后再次运行该工具,则所做的更改将被来自源区域的最新湖泊形成权限和数据目录所取代。与按需模式不同,此实用程序还会从目标区域移除所有从源区域移除的 Lake Formation 权限。

局限性

此实用程序旨在仅在单个账户内复制权限。按需模式会复制快照并且不删除现有权限,因此它不执行删除操作。该 API 目前不支持复制对行和列权限的更改。

结论

在这篇文章中,我们展示了如何使用此实用程序将 亚马逊云科技 Glue 数据目录和湖泊形成权限从一个区域迁移到另一个区域。如果对数据目录或 Lake Formation 权限进行了任何更改,它还可以使源区域和目标区域保持同步。如果您希望实现全球多元化数据工作负载的最大分离性和完全独立性,那么跨区域(多区域)实施它是一个不错的选择。还要考虑权衡利弊。与其他灾难恢复策略相比,实施和运营此策略,尤其是使用多区域策略,可能更加复杂和昂贵。

要开始使用,请查看 github 存储库 。有关更多资源,请参阅以下内容:

  • 亚马逊云科技 Glue
  • 亚马逊云科技 Lake Formation

作者简介

Vivek Shrivastava 是 A WS 专业服务数据湖的首席数据架构师。他是大数据爱好者,拥有 13 个 亚马逊云科技 认证。他热衷于帮助客户在云端构建可扩展的高性能数据分析解决方案。在业余时间,他喜欢阅读并寻找家庭自动化的领域

Raza Hafeez 是 亚马逊云科技 专业服务共享交付实践的高级数据架构师。他在构建和优化企业数据仓库方面拥有超过 12 年的专业经验,并热衷于让客户意识到其数据的力量。他擅长将企业数据仓库迁移到 亚马逊云科技 现代数据架构。

Nivas Shankar 是 亚马逊云科技 Lake Formation 的首席产品经理。他与全球客户合作,将业务和技术需求转化为产品,使客户能够改善管理、保护和访问数据湖的方式。还领导了 亚马逊云科技 内部的多项数据和分析计划,包括对数据网格的支持。