使用 Amazon Redshift 扩展读写工作负载

Amazon Redshift 是一个快速、完全托管的 PB 级云数据仓库,使您能够使用标准 SQL 分析大型数据集。Amazon Redshift 中的并 发扩展 功能通过增加并发扩展来自动增加和删除容量,以处理数千名并发用户的需求,从而为 BI 报告、控制面板和其他分析工作负载等不可预测和高峰的工作负载提供一致的 SLA。

到目前为止,并发扩展仅支持读取查询的自动扩展;写入查询必须在主集群上运行。现在,我们正在扩展并发扩展以支持常见写入查询(包括复制、插入、更新和删除)的自动扩展。这在支持并发扩展的区域的 Amazon Redshift RA3 预配置实例类型上可用。 Amazon Redshift 无服务器 内置动态自动扩展功能,用于扩展读取工作负载。

在这篇文章中,我们将讨论如何启用并发扩展,以便在减少排队时间的情况下为数据加载、ETL(提取、转换和加载)和数据处理等并发工作负载提供一致的 SLA。

并发扩展概述

通过并发扩展,Amazon Redshift 可自动弹性地扩展查询处理能力,为数百个并发查询提供持续的快速性能。随着并发性的增加,并发扩展资源会在几秒钟内透明地添加到您的 Amazon Redshift 集群中,从而在无需等待时间的情况下以快速性能处理突然激增的并发请求。当工作负载需求减弱时,Amazon Redshift 会自动关闭并发扩展资源以节省成本。

下图显示了并发扩展在高层次上的工作原理。

该工作流程包含以下步骤:

  1. 所有查询都转到主集群。
  2. 当指定工作负载管理 (WLM) 队列中的查询开始排队时,Amazon Redshift 会自动将符合条件的查询路由到新集群,从而实现并发扩展。
  3. Amazon Redshift 会自动启动新集群,处理等待的查询,并在不再需要时关闭并发扩展集群。

启用亚马逊 Redshift 并发扩展

您可以在 WLM 队列级别管理并发扩展,在其中可以为特定队列设置并发扩展策略。为队列启用并发扩展后,符合条件的写入和读取查询将发送到并发扩展集群,而不必等待 Amazon Redshift 主集群上的资源腾出。Amazon Redshift 负责启动并发扩展集群、将查询路由到临时集群以及放弃并发集群。

您可以在 自动 手动 WLM 上启用 并发扩展。

您首先需要确定您的集群是哪个参数组。为此,请完成以下步骤:

  1. 在 Amazon Redshift 控制台上, 在导航窗格中选择 集群
  2. 选择您的集群。
  3. 属性 选项卡上,记下与集群关联的参数组。
    现在,您可以配置您的 WLM 参数。
  4. 在导航窗格 中的 配置 下,选择 工作负载管理
  5. 选择与集群关联的参数组。如果您使用的是默认参数组 default.redshift-1.0,则需要创建自定义参数组并将其分配给集群。 默认参数组的每个参数都有预设值,并且无法修改。
  6. 参数 选项卡上,您可以在 1—10 个 max_concurrency_scaling_clusters 之间进行选择。 这是 您可以同时运行的最大并发 Amazon Redshift 集群数量。十是软限制;可以通过提交带有支持案例的服务限制提高请求来提高此限制。
  7. 工作负载管理 选项卡上,为并发扩展集群选择 自动 模式。

用例示例

在本节中,我们使用三个用例来帮助您了解读写密集型工作负载的并发扩展如何无缝扩展以提高工作负载性能 SLA。

我们使用了 3 TB 的 Cloud DW 基准测试 数据集。该测试共包括 103 个并发查询,每个并发查询都使用单独的数据库连接运行。这103个查询构成了99个TPC-DS查询中的60个查询和43个写入查询,混合了复制、插入、更新和删除语句。我们使用了 RA3.4xLarge 5 计算节点。

以下场景展示了读取和写入的并发扩展如何无缝自动扩展并发繁重的混合工作负载:

  • 所有查询均在关闭并发扩展的情况下同时触发
  • 所有查询同时触发,并发扩展集群限制设置为 5 个集群
  • 所有查询同时触发,并发扩展集群限制设置为 10 个集群

场景 1:在关闭并发扩展的情况下同时触发所有查询

在此基准测试中,所有查询均在 299 分钟内完成。以下是测试细节。

Amazon Redshift 查询优化器将这 103 个查询转换为 257 个子查询,以提高 本次运行的性能。 Amazon Redshift 不断从运营统计数据中学习,以优化您的工作量。

以下屏幕截图显示了 Amazon Redshift 自动 WLM 模式如何选择在排队其余查询时同时运行 16 个查询。由于并发扩展已关闭,因此不会启动其他集群,查询会继续等待正在运行的查询完成后才能进行处理。请注意,排队的查询数量在很长一段时间内一直保持在较高的数字,最终由于只有几个查询可以同时运行而降低。

如以下屏幕截图所示,在工作负载窗口内没有其他并发集群启动,需要主集群处理所有查询。

场景 2:所有查询同时触发,并发扩展集群的最大限制设置为 5 个集群

在此测试中,所有查询均在 49 分钟内完成。

以下屏幕截图描绘了大量排队。在几秒钟内,另外五个 Amazon Redshift 集群将启动到就绪状态,允许 53 个查询同时运行。此数字可能会根据查询类型在您的集群中发生变化。请注意,随着使用另外五个集群完成更多查询,排队的查询数量开始减少。

随着时间的推移,由于查询不再等待,并发扩展集群开始逐渐减少到 0。

场景 3:所有查询同时触发,并发扩展集群限制设置为 10 个集群

在此测试中,所有查询均在 28 分钟内完成。

以下屏幕截图描绘了大量排队。在几秒钟内,另外 10 个 Amazon Redshift 集群将启动到就绪状态,允许多个查询同时运行。此数字可能会根据查询类型在您的集群中发生变化。请注意,随着使用另外五个集群完成更多查询,排队的查询数量开始减少。

随着时间的推移,由于查询不再等待,并发扩展集群开始逐渐减少到 0。

测试结果审查

下表总结了我们的测试结果。

. Test Scenario 1 Test Scenario 2 Test Scenario 3
Total Workload Completion Time 299 Minutes 49 Minutes 28 Minutes

测试结果揭示了读取和写入混合工作负载的并发扩展如何将总工作负载完成时间从 299 分钟缩短到 28 分钟,这是 SLA 改善的 10 倍以上,同时仅在需要扩展时才为额外的集群付费,从而具有成本效益。

监控并发扩展

监控并发扩展的一种方法是通过 系统视图 要监控哪些查询受益于并发扩展,可以使用 stl_query 中的 conc urrency_sc aling_status。 并发扩展为 1 表示查询在并发扩展集群上运行。要监控并发扩展使用情况,可以使用 SVCS_CONCURRENCY_SCALING_ USAGE 系统视图。

Amazon CloudWatch 指标 c oncurrencyScalingActiveClusters 和 concurrencyScalingSec onds 允许您设置对并发扩展使用情况 的监控。有关更多信息,请参阅 使用 CloudWatch 指标监控亚马逊 Redshift

配置使用限制

每使用 Amazon Redshift 主集群 24 小时,您将获得 1 小时的并发扩展积分。这笔免费积分可用于读取和写入查询。对于任何超过累计免费使用积分的使用量,将根据 Amazon Redshift 集群的按需费率按秒计费。您可以在集群级别应用成本控制以进行并发扩展。您可以选择为 ETL、仪表板和临时工作负载创建多个队列。有了这个,你可以选择为选择性队列启用并发扩展。

如以下屏幕截图所示,您可以选择时间段(每天、每周或每月)并指定所需的使用限制。然后,您可以选择操作选项( 警报 登录到系统表 禁用功能 )。有关如何为并发扩展设置成本控制的更多详细信息,请参阅使用 Amazon Redshift 并发扩展和频谱 管理和控制成本

摘要

在这篇文章中,我们展示了如何通过无缝扩展到您配置的最大集群数量来启用并发扩展来帮助您满足读取和写入工作负载的 SLA,从而在控制成本的同时提高集群吞吐量。利用读取和写入功能进行并发扩展可以使您处理多种场景,例如数据管道中数据量的突然增加、回填操作、临时报告和月末处理。现在是时候将这些学习付诸实践并开始优化您的 Redshift 集群的读取和写入吞吐量了!


作者简介

Harsha Tadiparthi 是 亚马逊云科技 专业首席解决方案架构师、分析师。他喜欢在数据库和分析中解决复杂的客户问题,并取得成功的结果。工作之余,他喜欢与家人共度时光,看电影,并尽可能地旅行。

Harshida Patel 是 亚马逊云科技 的专业首席解决方案架构师,负责分析。

Ramu Ponugumati 是一名高级技术客户经理,是 亚马逊云科技 分析和 AI/ML 方面的专家。他与企业客户合作,对工作负载进行现代化和成本优化,并帮助他们在 亚马逊云科技 平台上构建可靠和安全的应用程序。工作之余,他喜欢与家人共度时光、打网球和园艺。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。