弹性大小调整在 Amazon Redshift 中是如何工作的?

2 分钟阅读
0

我想在我的 Amazon Redshift 集群上执行弹性大小调整。弹性大小调整是如何工作的,使用弹性大小调整的一些注意事项是什么?

简短描述

Amazon Redshift 允许您在集群大小调整期间迁移到特定数量的节点。默认情况下,Amazon Redshift 旨在保持目标集群中存在相同数量的数据切片。切片映射缩短了调整集群大小所需的时间。在切片映射过程中,Amazon Redshift 会将集群数据切片重新分配至目标集群中的新计算节点。

对于经典大小调整,所有行都将复制到集群中,从而根据分配设置将它们映射到切片。对于弹性大小调整,您可以将整个数据片复制到映射该切片的节点。

如果您计划在 Amazon Redshift 集群上执行弹性大小调整,请考虑以下事项:

  • 弹性大小调整不会对表进行排序,也不会回收磁盘空间。运行 VACUUM 命令可对表进行排序并回收磁盘空间。
  • 弹性大小调整仅适用于使用 EC2-VPC 平台的 Amazon Redshift 集群。
  • 与经典大小调整相比,弹性大小调整需要的时间通常更少。相较之下,经典大小调整操作会预置一个新的集群,同时从源集群复制数据。经典的大小调整操作首先根据分配方式将数据分配到新的节点。然后,它会运行 ANALYZE 命令更新表统计数据。这意味着,与执行弹性大小调整操作相比,在 Amazon Redshift 集群上执行经典大小调整操作需要更长的时间。

解决方法

弹性大小调整的工作原理

在 Amazon Redshift 中,根据目标节点类型,弹性大小调整的工作方式可能会有所不同。检查目标节点类型是否与源节点类型相同。

要检查您的节点类型,请登录 Amazon Redshift 控制台。从导航菜单中选择 Clusters (集群)Clusters (集群) 页面会在每个集群名称下指示节点类型。或者,您可以使用 describe-clusters AWS Command Line Interface (AWS CLI) 命令来获取有关 Amazon Redshift 集群的更多信息:

aws redshift describe-clusters --region <Cluster Region>

示例 1:目标节点类型与现有节点类型相同

当您使用弹性大小调整调整集群大小(添加或删除节点,而不更改节点类型)时,Amazon Redshift 会自动将数据重新分配到新节点。
与经典大小调整(预置新集群并向其传输数据)不同,弹性大小调整不会创建新集群。弹性大小调整通常可在几分钟内完成。在弹性大小调整完成后台数据重新分配的同时,预计查询运行时间会稍微有所增加。

**注意:**在元数据迁移期间,您的 Amazon Redshift 集群会在几分钟内暂时不可用。有关 Amazon Redshift 弹性大小调整流程的更多信息,请参阅弹性大小调整

示例 2:目标节点类型与现有节点类型不同

如果您的节点类型已更改,Amazon Redshift 会先创建一个快照。然后,使用快照中的最新数据预置新的目标集群,并在后台将数据传输到新集群。在数据传输过程中,您的 Amazon Redshift 集群以只读模式运行,并且所有写入操作都会被阻止。大小调整接近完成时,Amazon Redshift 会自动更新新集群的终端节点,使之与现有集群的终端节点匹配。随后,所有与原始集群的连接都将关闭。

DC2 和 DS2 节点计数限制

如果您在 Amazon Redshift 集群上执行弹性大小调整,则注意针对 DC2 和 DS2 节点类型的以下限制:

  • 对于 dc2.large 或 ds2.xlarge 节点类型,请使用当前节点数量的一半或两倍数量。例如,6 节点集群的大小可以调整为 12 个节点或 3 个节点。
  • 对于 dc2.8xlarge、ds2.8xlarge 或 ra3.xlplus 节点类型,请使用节点数量的一半到两倍之间的数量。例如,6 节点集群的大小可以调整为 3、4、5、7、8、9、10、11、12 个节点。
  • 对于 ra3.16xlarge 或 ra3.4xlarge 节点类型,使用当前节点数量的四分之一到四倍之间的数量。例如,8 节点 ra3 群集的大小可以调整为 2、3、4、5、6、7、9 到 32 个节点。

弹性大小调整最佳实践

在 Amazon Redshift 集群上执行弹性大小调整时,请考虑以下最佳做法:

以下是展示如何使用 describe-node-configuration-options 命令的示例:

aws redshift describe-node-configuration-options --action-type resize-cluster --cluster-identifier <Cluster Name> --region <Cluster Region>

以下是展示如何使用 resize-cluster 命令的示例:

aws redshift resize-cluster --cluster-identifier  <Cluster Name> --cluster-type multi-node --node-type <Target Node Type> --number-of-nodes <Number of Target Nodes> --no-classic —region <Cluster Region>

其他注意事项

在 Amazon Redshift 集群上执行弹性大小调整时,请查看以下其他注意事项:

  • 弹性大小调整需要集群快照。您可以使用控制台管理快照,也可以使用 Amazon Redshift CLI 和 API 来管理。
    **注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 CLI
  • 在 Amazon Redshift 中启动弹性大小调整操作后,就无法再取消该操作。请等待大小调整操作完成,然后再执行另一项大小调整操作或者重新启动集群。
  • 新节点配置必须有足够的存储空间来存储现有数据。即使在添加节点的时候,新配置也可能因重新分配数据的方式而没有足够的存储空间有关存储空间的更多信息,请参阅为什么 Amazon Redshift 集群中的表使用的磁盘存储空间高于或低于预期?
  • 如果您在 Amazon Redshift 集群上执行了弹性大小调整,可能会因数据切片分配不均而导致节点之间出现数据偏差。如果您发现 Amazon Redshift 集群中存在数据偏差,请改为执行经典大小调整。
  • 如果经典大小调整对您的使用案例而言为最佳方案,请对 Amazon Redshift 集群执行经典大小调整。例如,要将大小调整为单节点集群时,您可以执行经典大小调整。弹性大小调整允许您通过保留原始配置的切片数,在集群中添加或移除节点。但可能会带来性能差异。如果希望节点切片与目标节点类型中的切片数匹配,则请使用经典大小调整。有关更多信息,请参阅在 Amazon Redshift 中调整集群大小
  • 启动弹性大小调整且快照操作正在进行时,如果快照未在几分钟内完成,则调整大小操作可能会失败。
  • 弹性大小调整不能用于从单节点集群调整大小或调整大小至单节点集群。
  • 对于预留节点,例如 DS2 预留节点,可以在执行调整大小时升级到 RA3 预留节点。您可以在执行弹性大小调整时升级节点,也可以使用控制台从快照中恢复。

相关信息

在 Amazon Redshift 中调整集群大小

如何重新调整 Amazon Redshift 集群的大小?

在几分钟内向上和向下扩展您的 Amazon Redshift 集群,以便在您需要时获得所需的性能

相关视频

AWS 官方
AWS 官方已更新 1 年前