Amazon Redshift の伸縮自在なサイズ変更の仕組みを教えてください。

最終更新日: 2022 年 7 月 7 日

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 コマンドラインインターフェイス (AWS CLI) コマンドを使用して、次のように、Amazon Redshift クラスターに関する詳細情報を取得することもできます。

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

例 1: ターゲットノードタイプが既存のノードタイプと同じ

Amazon Redshift のクラスターのサイズを (ノードタイプを変更せずに) 伸縮自在なサイズ変更を使用して変更すると、Amazon Redshift は自動的に新しいノードにデータを再配布します。(新しいクラスターをプロビジョニングしてデータを転送する) 従来のサイズ変更とは異なり、伸縮自在なサイズ変更では新しいクラスターは作成されません。通常、伸縮自在なサイズ変更は、数分で完了します。伸縮自在なサイズ変更によってバックグラウンドでのデータの再配布が完了する一方で、クエリのランタイムがわずかに増加することが予想されます。

注: メタデータの移行中、Amazon Redshift クラスターは数分間一時的に利用できなくなります。Amazon Redshift の伸縮自在なサイズ変更プロセスの詳細については、「伸縮自在なサイズ変更」を参照してください。

例 2:ターゲットノードタイプが既存のノードタイプと異なる

ノードタイプが変更された場合、Amazon Redshift は新しいクラスターを作成し、最新のスナップショットからこのクラスターにデータをコピーします。データ転送中、Amazon Redshift クラスターは読み取り専用モードで動作し、すべての書き込みがブロックされます。サイズ変更操作が完了すると、Amazon Redshift は新しいクラスターのエンドポイントを自動的に更新し、既存のクラスターのエンドポイントと一致させます。その後、元のクラスターへのすべての接続が閉じられます。

DC2 および DS2 ノード数の制限

Amazon Redshift クラスターで伸縮自在なサイズ変更を実行する場合は、DC2 および DS2 ノードタイプについて次の制限に注意してください。

  • dc2.large または ds2.xlarge ノードタイプでは、現在のノード数の半分または 2 倍を使用します。例えば、6 ノードを持つクラスターは、12 ノードまたは 3 ノードのいずれかにサイズ変更できます。
  • dc2.8xlarge、ds2.8xlarge、ra3.4xlarge、ra3.16xlarge のいずれかのノードタイプでは、その半分を使用して現在のノード数を 2 倍にします。例えば、6 つのノードを持つクラスターは、3、4、5、7、8、9、10、11、または 12 ノードのサイズに変更できます。

伸縮自在なサイズ変更のベストプラクティス

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 クラスターで従来のサイズ変更を実行します。例えば、1 つのノードクラスターにサイズ変更する場合は、従来のサイズ変更を利用できます。伸縮自在なサイズ変更では、元の設定のスライス数を維持することで、クラスターにノードを追加したり、クラスターからノードを削除したりできます。ただし、パフォーマンスにばらつきが生じる可能性があります。ノードスライスをターゲットノードタイプのスライス数に一致させるには、従来のサイズ変更を利用します。詳細については、「Resizing clusters in Amazon Redshift」(Amazon Redshift でのクラスターのサイズ変更) を参照してください。