将工作负载迁移到 AWS 数据管道 大数据博客
从 AWS 数据管道迁移工作负载
由 Noritaka Sekiyama、Matt Su、Vaibhav Porwal 和 Sriram Ramarathnam 于 2024 年 7 月 25 日发布在 Amazon Managed Workflows for Apache Airflow (Amazon MWAA), Analytics, AWS 数据管道, AWS Glue 和 AWS Step Functions,永久链接 评论 分享
在经过仔细考虑后,我们决定于 2024 年 7 月 25 日停止新客户访问 AWS 数据管道。现有 AWS 数据管道客户可以继续正常使用该服务。AWS 将继续投资于 AWS 数据管道的安全性、可用性和性能的提升,但我们没有计划引入新功能。
关键要点
我们建议客户根据现有的工作负载选择以下 AWS 服务之一进行迁移:
AWS Glue:适合需要无服务器数据集成服务的工作负载,具有丰富的数据质量和敏感数据检测的功能。AWS Step Functions:用于构建和管理跨多个 AWS 服务的工作流,适合需要高可用性和低代码解决方案的场景。Amazon MWAA:用于 Apache Airflow 的托管服务,适合需要处理复杂数据管道的业务。AWS 数据管道 帮助客户自动化数据的移动和转化。借助数据管道,客户可以定义数据驱动的工作流,以便任务依赖于上一个任务的成功完成。自 2012 年推出以来,数据管道在多个流行的 Amazon Web Services (AWS) 服务之前就已经服务于提取、转换和加载ETL以及基础设施配置用例。一些客户希望获得比数据管道更深层次的控制和特定功能。随着数据行业的最新发展,客户正寻求一个更具功能的平台,以实现其数据管道的现代化,为数据和机器学习ML创新做好准备。本文将解释如何将数据管道迁移到其他 AWS 服务,以满足数据从业者日益增长的需求。您选择的选项取决于您当前在数据管道上的工作负载。您可以将数据管道的典型用例迁移到 AWS Glue、Step Functions 或 Amazon MWAA。
请注意,您需要根据您的需求修改本文提供的示例中的配置和代码。在迁移后开始任何生产工作负载之前,您需要测试新的工作流,以确保不会干扰生产系统。
将工作负载迁移到 AWS Glue
AWS Glue 是一项无服务器的数据集成服务,帮助分析师发现、准备、移动和集成来自多个来源的数据。它包含用于创建、运行作业和协调工作流的工具。借助 AWS Glue,您可以发现并连接到数百种不同的数据源,并在集中式数据目录中管理数据。您可以直观地创建、运行和监控 ETL 管道,将数据加载到数据湖中。此外,您可以立即使用 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 查询和搜索目录中的数据。
快鸭加速器苹果版本我们建议您在以下情况下将数据管道工作负载迁移到 AWS Glue:
您在寻找一项支持各种数据源的无服务器数据集成服务,具有视觉编辑器和笔记本等创建接口,以及数据质量和敏感数据检测等高级数据管理功能。您的工作负载可以迁移到 AWS Glue 工作流、作业使用 Python 或 Apache Spark和爬虫例如,您现有的管道是建立在 Apache Spark 之上的。您需要一个可以处理数据管道各个方面的平台,包括数据摄取、处理、传输、完整性测试和质量检查。您现有的管道是从 AWS 管理控制台中为数据管道创建的预定义模板例如 将 DynamoDB 表导出到 Amazon S3,您希望使用相同的模板。您的工作负载不依赖于特定的 Hadoop 生态系统应用程序,例如 Apache Hive。您的工作负载不需要协调本地服务器、用户管理的 Amazon Elastic Compute Cloud (Amazon EC2) 实例或用户管理的 Amazon EMR 集群。示例:将 EmrActivity 迁移到 EmrCluster 以导出 DynamoDB 表到 S3
在数据管道上,一个最常见的工作负载是将 Amazon DynamoDB 表备份到 Amazon Simple Storage Service (Amazon S3)。数据管道具有一个 名为“导出 DynamoDB 表到 S3”的预定义模板,用于将 DynamoDB 表数据导出到指定的 S3 存储桶。
该模板使用 EmrActivity名为 TableBackupActivity在 EmrCluster名为 EmrClusterForBackup上运行,将数据从 DynamoDBDataNode 备份到 S3DataNode。
您可以将这些管道迁移到 AWS Glue,因为它本机支持从 DynamoDB 读取。
要为上述用例定义一个 AWS Glue 作业,请按照以下步骤操作:
打开 AWS Glue 控制台。选择 ETL 作业。选择 可视化 ETL。在 来源 中选择 Amazon DynamoDB。在节点 数据源 DynamoDB 上,对于 DynamoDB 源,选择 直接选择 DynamoDB 表 ,然后从菜单中选择您的源 DynamoDB 表。对于 连接选项,输入 s3bucket 和 dynamodbs3prefix。单击 加号以添加新节点。在 目标 中选择 Amazon S3。在节点 数据目标 S3 存储桶 上,对于 格式,选择您首选的格式,例如 Parquet。对于 S3 目标位置,输入您的目标 S3 路径。在 作业详细信息 标签上,选择 IAM 角色。如果您没有 IAM 角色,请参阅 为 AWS Glue 配置 IAM 权限。选择 保存 和 运行。您的 AWS Glue 作业已成功创建并启动。
您可能会注意到没有管理读取 I/O 速率的属性。这是因为 Glue Studio 中使用的默认 DynamoDB 读取器不扫描源 DynamoDB 表。相反,它使用 DynamoDB 导出。
示例:将 EmrActivity 迁移到 EmrCluster 以从 S3 导入 DynamoDB
在数据管道上,另一个常见的工作负载是使用备份数据从 Amazon S3 恢复 DynamoDB 表。数据管道具有一个 名为“从 S3 导入 DynamoDB 备份数据”的预定义模板 用于从指定的 S3 存储桶中导入 DynamoDB 表数据。
该模板使用 EmrActivity名为 TableLoadActivity,它在 EmrCluster名为 EmrClusterForLoad上运行,并将数据从 S3DataNode 加载到 DynamoDBDataNode。
您可以将这些管道迁移到 AWS Glue,因为它本机支持写入 DynamoDB。
先决条件是创建一个目标 DynamoDB 表,并使用 Glue 爬虫、Glue 控制台或 API 将其编入 Glue 数据目录。
打开 AWS Glue 控制台。选择 ETL 作业。选择 可视化 ETL。在 来源 中选择 Amazon S3。在节点 数据源 S3 存储桶 上,对于 S3 URL,输入您的 S3 路径。单击 加号以添加新节点。在 目标 中选择 AWS Glue 数据目录。在节点 数据目标 数据目录 上,对于 数据库,选择您在数据目录中的目标数据库。对于 表,选择您在数据目录中的目标表。在 作业详细信息 标签上,选择 IAM 角色。如果您没有 IAM 角色,请参阅 为 AWS Glue 配置 IAM 权限。选择 保存 和 运行。您的 AWS Glue 作业已成功创建并启动。
将工作负载迁移到 Step Functions
AWS Step Functions 是一项无服务器的编排服务,允许您为业务关键应用程序构建工作流。通过 Step Functions,您可以使用可视化编辑器构建工作流,并直接与超过 250 种 AWS 服务以及超过 11000 种操作集成,包括 AWS Lambda、Amazon EMR、DynamoDB 等。您可以使用 Step Functions 编排数据处理管道、处理错误,并处理底层 AWS 服务的限流限制。您可以创建处理和发布机器学习模型的工作流,编排微服务,以及控制 AWS 服务例如 AWS Glue以生成 ETL 工作流。您还可以创建长时间运行、自动化的工作流,以满足需要人工交互的应用程序。
我们建议您在以下情况下将数据管道工作负载迁移到 Step Functions:
如果您在寻找无服务器、高可用性的工作流编排服务。如果您在寻找一种按单个任务进行计费的经济高效的解决方案。如果您的工作负载正在编排多个 AWS 服务的任务,例如 Amazon EMR、AWS Lambda、AWS Glue 或 DynamoDB。如果您在寻找一种低代码解决方案,带有用于工作流创建的拖放可视化设计器,并且不需要学习新的编程概念。如果您希望获得提供超过 250 种服务集成且涵盖 11000 种操作的服务,还允许与自定义非 AWS 服务和活动集成。数据管道和 Step Functions 都使用 JSON 格式定义工作流。这样可以将工作流存储在源代码管理中,管理版本、控制访问和实现持续集成和开发CI/CD。Step Functions 使用名为 Amazon State Language 的语法,该语法完全基于 JSON,可以无缝地在工作流的文本和可视化表示形式之间切换。如果您的工作负载要求协调本地服务器、用户管理的 EC2 实例或用户管理的 EMR 集群。使用 Step Functions,您可以选择与数据管道中当前使用的相同版本的 Amazon EMR。
对于迁移数据管道托管资源上的活动,您可以在 Step Functions 中使用 AWS SDK 服务集成 来自动化资源的配置和清理。对于在本地服务器、用户管理的 EC2 实例或用户管理的 EMR 集群上迁移活动,您可以在实例上安装 SSM 代理。您可以通过 AWS Systems Manager 运行命令 从 Step Functions 启动该命令。您还可以从定义在 Amazon EventBridge 中的计划启动状态机。
示例:将 HadoopActivity 迁移到 EmrCluster
要将数据管道中的 HadoopActivity 在 EmrCluster 上迁移到 Step Functions,请执行以下步骤:
打开 AWS Step Functions 控制台。选择 状态机。选择 创建状态机。在 选择模板 向导中,搜索 emr,选择 管理 EMR 作业 ,然后选择 选择。
在 选择如何使用此模板 中,选择 在此基础上创建。
选择 使用模板。

对于 创建 EMR 集群 状态,根据 EMR 版本标签、EMR 容量、IAM 角色等配置 API 参数,这些参数基于数据管道中现有的 EmrCluster 节点配置。
对于 运行第一步 状态,基于现有的 HadoopActivity 节点配置,配置 API 参数。
如果您在现有的 HadoopActivity 上配置了其他活动,则重复第 8 步。选择 创建。您的状态机已成功配置。了解更多内容,请查看 管理 Amazon EMR 作业。
将工作负载迁移到 Amazon MWAA
Amazon MWAA 是一项托管的 Apache Airflow 编排服务,允许您使用 Apache Airflow 平台在云中设置和操作端到端的数据管道。Apache Airflow 是一种开源工具,旨在以编程方式编写、调度和监控一系列称为 工作流 的进程和任务的序列。Apache Airflow 引入了执行者、池和服务水平协议SLA等新概念,为您提供了卓越的数据编排能力。借助 Amazon MWAA,您可以使用 Airflow 和 Python 编程语言创建工作流,而无需管理底层基础设施以实现可扩展性、可用性和安全性。Amazon MWAA 会自动扩展其工作流运行时容量以满足您的需求,并与 AWS 安全服务集成,帮助您快速安全地访问数据。
我们建议您在以下情况下将数据管道工作负载迁移到 Amazon MWAA:
如果您在寻找一种管理型、高可用的服务,用于编排用 Python 编写的工作流。如果您希望过渡到一种完全托管、广泛采用的开源技术Apache Airflow,以获得最大的可移植性。如果您需要处理数据管道各个方面的单一平台,包括数据摄取、处理、传输、完整性测试和质量检查。如果您在寻求一项针对数据管道编排的服务,具有可观察性的丰富 UI