跳至主要内容

数据编排指南

在 AWS 上实施数据编排的指南

在 AWS 上实施数据编排的指南

数据编排是协调大型分布式系统中的数据捕获、移动、转换和其他管线操作的自动化过程。数据编排还包括调度、错误处理和重试。数据编排有助于扩展和集成数据管线,减少瓶颈,提高运营效率。本指南重点介绍了 AWS 上的数据编排工具,如何构建正确的解决方案、管线集成和监控。

简介

在使用大规模的分布式架构时,将手动流程应用于数据管理很快就会变得不可持续。集中式编排通常在规模大时更有效,有助于减少诸如静默故障被忽视和数据质量下降等问题。

数据编排与提取、转换、加载(ETL)

数据编排有所不同,但与传统的提取、转换、加载(ETL)流程有关。虽然 ETL 工具侧重于移动和转换数据的机制,但编排协调这些 ETL 流程的运行时间和方式。例如,它确保只有在收集数据并且系统验证了原始数据之后才开始繁重的转换作业。

编排充当数据管线的控制面板。集中式控制面板有助于提高操作的可靠性和可重复性。

AWS 提供各种编排解决方案以满足不同的架构需求。其中包括开源框架的完全托管环境,例如 Amazon Managed Workflows for Apache Airflow(Amazon MWAA),以及可扩展的 AWS 原生无服务器选项,例如 AWS Step Functions。

数据编排中的核心概念

在选择要使用的服务之前,有必要了解编排数据工作流程的基本组成部分。

有向无环图(DAG)

有向无环图(DAG)是数据管线中任务的有组织的定向流程图,其中任务是节点,依赖项是边。DAG 旨在帮助防止循环逻辑,例如任务意外地等待自己完成才继续操作。

管线触发器

触发器启动编排的数据流。它们可以是:

  • 基于计划(例如,每晚午夜运行批处理作业)
  • 基于事件(例如,当新文件放入 Amazon S3 存储桶时触发管线)
  • 基于手动触发器(例如,通过 API 发出的请求)

幂等性和重试逻辑

幂等性是数据管线的一个属性,这意味着多次运行任务会产生相同的结果,而不会产生任何意想不到的影响。幂等性是拥有可靠重试逻辑的必要属性。如果任务由于网络超时而失败,则编排服务必须能够在不损坏下游数据集的情况下重新启动该任务。

血统和可审计性

数据血统是您对从数据源到最终目标的数据进行的跟踪。在编排中,可审计性是指能够准确观测数据在流经管线时是如何转换的。

在 AWS 上选择正确的数据编排平台

AWS 提供各种服务帮助您实现数据策略的现代化。您现有的基础设施、内部专业知识和商业案例都会影响哪些服务适合您。AWS Analytics 决策指南为评估这些要求提供了一个有用的框架。

以下是主要的 AWS 数据编排服务的比较:

AWS Step Functions

AWS Step Functions 是一项无服务器编排服务,可让您使用 AWS Lambda 函数和其他 220 多项 AWS 服务来构建分布式应用程序。该服务通过将工作流程组织成状态机来协调工作流程,这些状态机本质上是用于数据移动或程序状态变化的逻辑编码流程图。数据管线需要可预测且具有韧性。每个步骤都是一个不同的“状态”,会以可预测的方式运行某项任务。

AWS Step Functions 可以为需要运行长达一年的数据编排流程构建 Standard Workflows。专为同步或异步高事件率工作负载设计的 Express Workflows 最多可运行五分钟。AWS Step Functions 可自动横向扩展,并提供内置的容错能力和重试逻辑。

何时使用 AWS Step Functions:它非常适合事件驱动型工作流程、无服务器架构、流式传输管线,以及需要在不编写自定义编排代码的情况下集成 AWS 服务时。

使用 AWS Step Functions 的数据管线示意图

AWS Glue Workflows

AWS Glue Workflows 在 AWS Glue 数据集成服务中执行数据编排。它允许您为 AWS Glue 实体构建 DAG,特别是连接爬网程序、作业和触发器。该服务提供了一个可视化界面,您可以在其中监控您的 ETL 管线并对其进行故障排除。您可以自动执行计划和触发的工作流程,以及按需工作流程。

何时使用 AWS Glue Workflows:当您的管线主要以 AWS Glue 为中心时,请使用此服务。它适用于更简单的 ETL 数据流程,在这些流程中,您需要将 AWS Glue 作业和爬网程序紧密结合在一起。

Amazon EventBridge Pipes 和调度器

Amazon EventBridge Pipes 减少了构建事件驱动型应用程序时需要编写和维护的集成代码量。您可以使用该服务,利用可选的转换、筛选和丰富步骤,在事件产生器和使用器之间创建点对点集成。EventBridge 调度器可帮助您配置计划模式、设置交付窗口和定义重试策略。

何时使用 Amazon EventBridge Pipes 和调度器:此服务最适合执行事件驱动型触发器、解耦微服务管线或管理不需要对完整 DAG 进行复杂依赖项管理的计划调用。

Amazon Managed Workflows for Apache Airflow(Amazon MWAA)

Amazon MWAA 是 Apache Airflow 的托管编排服务,Apache Airflow 是一个用于以编程方式构建和监控复杂管线的开源平台。该服务针对协调分析和 ETL 作业进行了优化。

Amazon MWAA 使用 Python DAG 编排和调度数据流。它具有自动扩缩机制,可帮助减少开销。该服务会根据排队的任务自动增加正在使用的 Apache Airflow 工作程序的数量。

何时使用 Amazon MWAA:当您需要管理复杂的 DAG、已对 Apache Airflow 进行投资或需要 Python 原生管线时,它很有效。

Amazon MWAA 架构示例示意图

如何在 AWS 上实施数据编排

有效而可靠的数据编排需要仔细的规划。以下是七步流程,可帮助您设计和部署工作流程。

1.映射您的数据依赖项

您的第一个目标是映射出完整的数据血统。清点数据来源、目标以及它们之间的必要转换步骤。那是您的基础。在此基础上,映射出所有上游或下游依赖项。完成后,您的映射应显示正确的事件顺序,以便您了解允许管线可靠运行的依赖项顺序。

在此阶段,您还应为相关数据管线的利益相关者定义相关的服务水平协议(SLA)。设置基准性能和可用性指标。

2.设计您的 DAG 或工作流程结构

单一的工作流程可能难以管理,也不易进行故障排除。通过可单独管理的小型任务构建 DAG 或工作流程,可以更轻松地查明故障点。确保在逻辑上将摄取、转换和加载阶段分开,使其独立运行。此外,还要构建故障分支和重试逻辑,以便管线可以正常处理错误。

3.设置您的编排服务

配置您选择的编排服务来管理工作流程:

Amazon MWAA:设置您的环境并指定一个 Amazon S3 存储桶来存储您的 DAG 和支持文件。您可以使用 requirements.txt 文件管理依赖项。查看 Amazon Managed Workflows for Apache Airflow 入门指南,了解先决条件。

AWS Step Functions:使用基于 JSON 的 Amazon States Language(ASL)定义您的工作流程来创建状态机。将您的身份和访问管理(IAM)角色的范围限定为每项特定任务所需的权限。

AWS Glue 工作流程:配置您的 AWS Glue 工作流程触发器并设置爬网程序到任务的链接,以便在成功编目架构后自动处理数据。

4.与数据服务集成

将您选择的数据编排服务连接到您的底层数据卷和计算层。您可以将 Amazon S3、Amazon Redshift、Amazon RDS 和 Amazon DynamoDB 配置为直接源或使用器。对于繁重的转换任务,请在编排的管线中使用 AWS Glue。

在适用的情况下,充分利用零 ETL 集成。例如,您可以将 Amazon Aurora 至 Amazon Redshift 零 ETL 的数据移动设置为自动化,从而减少手动提取作业的总量。

5.实现错误处理和警报

分布式系统的故障是不可避免的。重要的是记录这些故障。一种有效的日志记录方法是使用 Amazon SQS 配置死信队列(DLQ),以捕获失败的事件,您可以稍后检查。您还可以配置 Amazon SNS,以便在复杂的工作流程中发生故障时发送实时通知。当任务运行时间长或失败率飙升时,Amazon CloudWatch 警报会触发。

6.监控数据管线运行状况

Amazon CloudWatch 日志和指标可以帮助您跟踪管线运行状况,并监控 MWAA 环境和 Step Functions 状态机的资源利用率和执行历史记录。对于 Glue 工作流程,您可以监控原生 AWS Glue 作业指标。

7.使用基础设施即代码实现自动化

使用 AWS CloudFormation 或 AWS 云开发工具包(CDK)定义您的所有资源,包括 IAM 角色和联网配置。在与应用程序代码相同的存储库中对 DAG 和状态机定义进行版本控制,以帮助保持管线部署的一致性。

处理常见的数据编排难题

当您扩展编排环境时,运营挑战是不可避免的。以下是解决 AWS 上最常见挑战的方法:

迟到的数据

在分布式系统中,数据并不总是按计划到达。如果管线期望在午夜收到文件,但文件在凌晨 1:00 到达,那么,严格的时间表可能会导致管线故障。

解决方案:在管线中构建容错能力,而不是依赖严格的时间表。在 Amazon MWAA 中,使用传感器操作员主动等待 Amazon S3 中出现特定文件,然后触发任何下游任务。在事件驱动型架构中,Amazon EventBridge 可以在高质量数据到达时动态触发工作流程。

管线蔓延

如果您有多个数据工程师在构建工作流程,您可能会开始看到没有记录的冗余管线。

解决方案:通过对所有编排资源强制执行严格的命名约定和强制性标记,对抗管线蔓延。这样您就可以集中监控并轻松确定哪个数据团队拥有哪个管线。您可以定期审计您的环境,以便修剪过时或重复的 DAG。

跨账户管线

为了确保数据安全,企业架构通常将数据存储、处理和使用分散到多个 AWS 账户中。编排跨越这些边界的管线需要仔细的管理,这样就不会造成数据孤岛。

解决方案:使用 IAM 角色链接允许一个账户中的编排服务安全地担任某个角色,并在另一个账户中运行任务。要实现跨账户的精细数据访问控制和更好的数据治理,请将您的管线与 AWS Lake Formation 集成。

成本管理

如果过量配置或利用效率低下,编排服务可能会变得昂贵。

解决方案:您可以通过监控工作程序利用率来优化您的 Amazon MWAA 环境。如果您的工作程序经常处于空闲状态,则可以缩减环境规模。对于每周运行几次的低频工作流程,避免使用不间断的基础设施。取而代之的是使用无服务器 AWS Step Functions,您需要为所使用的特定状态转换付费。

监控和持续改进

一旦您的编排管线投入生产运行,您的工作重点就可以转移到持续的维护和优化。建立持续监控性能、成本和安全的例行机制。

跟踪管线 SLA

使用 CloudWatch 等 AWS 数据分析工具,根据其服务水平协议(SLA)监控您的管线,了解目标被错过的频率。通过跟踪这一频率,您可以在性能退化或反复故障真正干扰下游业务用户之前,提前发现问题。

归因计算成本

使用 AWS Cost Explorer 成本管理服务将编排和计算成本直接归因于特定的管线所有者。这可以促进财务问责制,也可以凸显您可能需要重构的低效工作流程。

审计 DAG 的复杂性

定期评估 DAG 的性能和复杂性。随着时间的推移,管线通常会积累不再需要的临时修复,但仍会影响性能。随着业务需求的变化,其他更改或整个管线将过时。修剪这些陈旧的管线,减少开销并简化整体技术环境。

保持安全可见性

使用 AWS CloudTrail 监控访问模式,使用 Amazon GuardDuty 跟踪工作流程中的威胁信号。持续监控有助于确保您保持最低权限的访问权限,并且数据移动符合您的安全策略。

结语

数据编排是组织的关键基础设施解决方案。设计功能强大、可扩展的解决方案将有助于整个企业的数据运营。AWS 提供一系列用于编排、组织数据和构建可扩展数据管线的服务,并配有监控工具为您提供指导。

根据您现在和将来的数据消耗使用案例选择数据编排解决方案。开始探索 AWS 上的数据和分析解决方案。

Browse all cloud computing concepts

Browse all cloud computing concepts content here:

正在加载
正在加载
正在加载
正在加载
正在加载

Did you find what you were looking for today?

Let us know so we can improve the quality of the content on our pages