亚马逊AWS官方博客
引入作业队列,扩展您的 Amazon Glue 工作负载
数据是业务的关键驱动力。随着时间的推移,数据量可能会显著增加,而这些数据通常需要同时消耗大量计算资源。随着越来越多的应用程序需要同时访问数据,数据集成工作负载的并发量也将越来越高。在亚马逊,成千上万的客户使用无服务器数据集成服务 Amazon Glue 大规模集成多个数据来源的数据。Amazon Glue 作业可以通过计划或事件异步触发,也可以按需同步启动。
您的亚马逊账户有配额(也称为限额),即亚马逊账户服务资源的最大数量。Amazon Glue 配额有助于保证 Amazon Glue 资源的可用性,并防止意外过度预配置资源。但是,对于大型或突增的工作负载,可能难以管理作业运行并发量或数据处理单元(DPU),将它们维持在服务配额的范围内。以往,当达到并发 Glue 作业运行配额时,您的作业会立即失败。
今天,我们很高兴地宣布,Amazon Glue 作业队列现已正式上线。作业队列提高了可扩展性,改善了客户管理 Amazon Glue 作业的体验。有了这项新功能,您不再需要管理 Amazon Glue 作业运行并发量,也不必为了避免高并发量导致的作业失败而尝试重试。您只需启动作业,当作业运行处于等待状态时,Amazon Glue 作业队列功能会尽可能地自动错开作业。这将提高作业的成功率,并改进大型并发工作负载的体验。
本文章将演示作业队列帮助您扩展 Glue 工作负载的方式,以及作业队列的工作原理。
作业队列的使用场景和优势
以下是需要运行许多并发作业的常见数据集成使用场景:
- 多个不同的数据来源需要并行读取
- 多个大型数据集需要并发处理
- 数据以事件驱动的方式处理,且许多事件同时发生
Amazon Glue 为每个区域和账户设置了以下与并发使用相关的服务配额:
- 每个账户的最大并发作业运行数
- 每个作业的最大并发作业运行数
- 每个账户的最大任务 DPU
您还可以为单个作业配置最大并发量。
在上述典型使用场景中,当通过 StartJobRun
API 或 Amazon Glue 控制台运行作业时,可能会达到在上述任何地方定义的上限。如果发生这种情况,您的作业将因 Amazon Glue API 端点返回的 ConcurrentRunsExceededException
等错误而立即失败。
作业队列可在这些典型的使用场景中起到帮助作用,无需您管理所有作业运行之间的并发量。当遇到 ConcurrentRunsExceededException
时,您不再需要手动重试。达到限制时,作业队列会将作业运行放入队列,并在资源释放时,自动重新尝试运行作业。它简化了您的日常操作,并减少了重试的延迟。它还使您能够使用 Amazon Glue 作业进行进一步的扩展。
在下一节中,我们将介绍如何配置作业队列。
为 Glue 作业配置作业队列
要在 Amazon Glue Studio 控制台中启用作业队列,请完成以下步骤:
- 打开 Amazon Glue 控制台。
- 选择作业。
- 选择您的作业。
- 选择作业详细信息选项卡。
- 在作业运行队列中,选择启用作业运行排队,以便在由于服务配额限制而无法立即运行作业时,稍后运行它们
- 选择保存。
在下一节中,我们将介绍作业队列的工作原理。
Amazon Glue 作业如何与作业队列配合使用
在当前作业运行生命周期中,当作业启动时,会检查作业级别和账户级别的限制,如果达到这些限制,作业会进入失败状态。使用作业队列后,作业运行状态将进入等待状态,以便重新尝试,而不是失败状态。等待状态表示,在超出限制后或资源不可用时,作业运行将排队重试。作业队列是除客户指定最大重试次数之外的另一项重试机制。
Amazon Glue 作业队列将提高作业运行的成功率,并减少因限制而导致的失败,但它不能保证作业运行的成功。在开始重新尝试运行时,限制可能仍然存在,资源可能仍然不可用。
以下截图显示两个作业运行处于等待状态:
作业队列将覆盖以下限制:
- 超过每个账户的最大并发作业运行数
- 超过每个作业的最大并发任务运行数(包括账户级别的服务配额以及作业上的配置参数)
- 超过最大并发 DPU
- 由于 VPC 中 IP 地址耗尽导致资源不可用
重试机制配置为最多重试 15 分钟或 10 次(以先到者为准)。
下面是启用作业队列时,作业运行的状态转换图。
注意事项
请记住以下注意事项:
- 不支持 Amazon Glue Flex 作业
- 启用作业队列后,无法配置同一作业的参数 MaxRetries
总结
在这篇文章中,我们介绍了新的作业队列功能如何帮助您扩展 Amazon Glue 作业工作负载。您现在就可以开始使用作业队列来处理新作业或现有作业。我们期待听到您的反馈。