如何调整 Amazon Redshift 集群的大小?
2 分钟阅读
0
我想调整 Amazon Redshift 集群的大小,想知道会对性能和账单产生的影响。
解决方案
有四种方法可以调整 Amazon Redshift 集群的大小:
- 弹性大小调整: 如果选项中有弹性大小调整,可以使用弹性大小调整来更改节点类型和/或节点数量。如果您只更改节点数量,会暂停查询,连接会保持打开状态。弹性大小调整需要 10-15 分钟。在调整大小操作期间,集群处于只读状态。
- 经典大小调整: 当弹性大小调整无法更改集群大小或节点时,请使用经典大小调整。经典大小调整会创建一个目标集群,然后将您的数据和元数据从源集群迁移到目标集群。如果您使用目标节点类型 RA3,则源集群将重启并且会停用几分钟。重启后,集群就可以进行读写操作。系统会在后台继续调整大小。如果您使用其他类型的目标节点,那么在重启后,在数据迁移到目标集群期间,集群将处于只读状态。迁移完成后,目标集群将使用端点进行更新,并可以执行读写任务。有关要使用的目标节点类型的更多信息,请参阅经典大小调整。
- 快照、恢复和调整大小: 要确保集群在经典大小调整操作期间可用,请先复制现有集群。然后,调整新集群的大小。如果数据是在快照生成后写入源集群的,必须手动复制这些数据。向新创建的目标集群手动复制数据必须在迁移完成之后再进行。
有关更多信息,请参阅在 Amazon Redshift 中管理集群概述。
调整大小的先决条件
要验证您的集群是否有符合进行弹性大小调整的要求,请运行以下 AWS CLI 或 AWS CloudShell 命令:
aws redshift describe-node-configuration-options --cluster-identifier <cluster-id> --action-type resize-cluster
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。如果集群符合弹性大小调整的要求,则 AWS CLI 中会输出类似于以下示例的信息:
{ "NodeConfigurationOptionList": [ { "NodeType": "dc2.large", "NumberOfNodes": 2, "EstimatedDiskUtilizationPercent": 0.01 }, { "NodeType": "ra3.16xlarge", "NumberOfNodes": 2, "EstimatedDiskUtilizationPercent": 0.01 } ] }
如果集群不符合弹性大小调整的要求,则 AWS CLI 中会输出类似于以下示例的信息:
{ "NodeConfigurationOptionList": [] }
性能基准
为了帮助您决定调整大小,请对现有集群工作负载和目标集群工作负载进行基准测试。
调整操作速度
如果使用弹性大小调整来调整具有相同节点类型的集群的大小,则该操作不会创建新集群。因此,操作很快就会完成。完成经典大小调整或快照和恢复操作所需的时间可能会各不相同,具体取决于以下因素:
- 源集群上的工作负载。
- 从源集群传输到目标集群的表的数量和大小。
- 数据在计算节点和切片之间的均匀分布程度。
- 源集群和目标集群中的节点配置。
**注意:**如果您在具有大量数据且节点不是 RA3 的集群上执行经典大小调整,则数据迁移可能会很慢。迁移包含多个 TB 的数据的集群可能需要几天时间。RA3 节点的数据传输完成速度更快。
优化操作速度
要缩短经典大小调整或快照和恢复操作所需的时间,请执行以下操作:
- 迁移到 RA3 节点类型,因为调整大小速度更快。
- 从 GitHub 网站上的 AWS Labs 存储库中运行表检查器脚本,识别偏斜的表。要修复偏斜的表,请选择适当的分配密钥。有关更多信息,请参阅 Amazon Redshift Engineering 的高级表设计手册: 分配方式和分配密钥。
- 删除未使用的表。要识别未使用的表,请从 GitHub 网站上的 AWS Labs 存储库中运行未扫描的表摘要脚本。
**注意:**未扫描的表摘要仅显示最近的历史记录(2-5 天之间)。使用 GitHub 网站上的系统对象持久化实用程序来捕获较长时间段的使用数据。 - 使用 GitHub 网站上的 AWS Labs 存储库中找出缺少统计数据的表。然后,对这些表运行 ANALYZE 命令。
有关调整大小性能优化的更多信息,请参阅 Amazon Redshift 的十大性能优化技术。要使用 Amazon Redshift 控制台检查调整大小操作的状态,请在集群详细信息页面上选择状态选项卡。状态选项卡显示平均传输速率、已用时间和剩余时间。
故障排除
- 在调整大小操作期间,您的表格将增加或减小。这是预料之中的情况。有关更多信息,请参阅为什么 Amazon Redshift 集群中的表使用的磁盘存储空间比预期的要多或少?
- 如果您的集群在 AWS CLI 中的状态为 NONE,则目标集群仍在预配置中。当您的目标集群处于配置状态时,它尚未复制。配置目标集群后,状态将更改为 IN_PROGRESS。
- 如果您的 AWS CloudFormation StackSets 没有调整大小,并且收到了内部错误消息,请检查集群是否符合弹性大小调整的条件。错误消息类似于: “发生了内部错误。请稍后重试您的查询。” 之所以发生这种情况,是因为 CloudFormation 堆栈使用弹性大小调整,默认情况下设置了 Classic:false。
- 如果您收到错误消息“请选择更大的目标集群”,则说明您的数据无法放入目标集群。使用更多节点或其他节点类型来调整您的 Amazon Redshift 集群的大小。
- 在 Amazon Redshift 控制台的集群列表中选择取消调整大小,在调整大小操作完成之前将其取消。有关更多信息,请参阅快照、恢复和调整大小。
调整大小后的集群的计费
- 在调整大小操作期间,您需要为使用的集群付费。例如,在调整大小操作期间,您需要为源配置付费。调整大小完成后,您无需再为源配置付费。集群状态更改为可用后,系统会立即开始对目标配置进行计费。
- 当您将较小的节点类型(large、xlarge)调整为较大的节点类型(8xlarge)时,您的集群中每个节点需要更多存储空间。每个节点的存储空间越多,运行 COMMIT 时写入的元数据就越多。因此,对于较大的节点,单个 COMMIT 操作的基础成本会更高。如果您同时运行多个小型 COMMIT 操作,则可能会看到性能下降。为了提高性能,可将多项更改合并为一个 COMMIT 操作。
- 如果您购买了预留实例,则您的账单将取决于调整后的集群配置、预留节点类型和预留节点数量。有关更多信息,请参阅预留节点的工作原理。
相关信息
AWS 官方已更新 9 个月前
没有评论
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 5 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 个月前