Amazon Web Services ブログ

Amazon Redshiftのクラスターノード数を数分で増減さることで、必要なときに必要なパフォーマンスを得ることができます

Amazon Redshiftは、TuroやYelpなど急速に成長するテクノロジー企業から、21st Century FoxJohnson&JohnsonなどのFortune 500企業まで、あらゆる規模の組織にとって最適なクラウドデータウェアハウスです。これらの顧客は、ユースケース、データサイズ、アナリストの集団をすばやく拡大することで、スケーラブルなデータウェアハウスにとって非常に重要なニーズがあります。

Amazon Redshiftを発売して以来、お客様と私達はともに成長してきました。お客様と密接に協力することでデータのスケールに応じてニーズがどのように変化するかを学びました。データ分析では、次のようなシナリオが頻繁に発生します。

  • 米国に拠点を置く小売企業は、多数のスケジューリングされたクエリと複雑なBIレポートを実行しています。彼らのAmazon Redshiftの使用状況は、データ科学者とアナリストの作業負荷が高い、午前8時から午後6時にピークに達します。夜間には、データを照会して小規模のレポートを作成するユーザーも少数います。その結果、日中と同じクラスター容量は夜間には必要ありません。
  • 医療コンサルティング会社は、サービスとしてのデータ(DaaS)ビジネスを急速に拡大しています。彼らは、迅速に複製環境を作成し、クライアントにクラスターエンドポイントを提供したいと考えています。複製クラスターを作成した後は、クライアントのコストとパフォーマンスの要件に基づいて、適切なサイズにすばやく変更する必要があります。
  • IoTサービスプロバイダーは急速な成長軌道に乗っています。大規模なイベントが発生するたびに、そのセンサーはAmazon Redshiftに取り込まれ、その後すぐに分析する必要のあるテラバイトの容量の新しいデータを送信します。

データベース管理者(DBAs)がこれらのシナリオに反応する機敏さを持たない場合、アナリストはミッションクリティカルなワークロードに対する応答時間が長くなります。または、データウェアハウスがサイズ変更のために停止している場合、それらは完全に締め出される可能性があります。DBAは、ビジネスステークホルダーとの間で設定したService Level Agreements(SLAs)をサポートすることができません。

Amazon Redshiftを使用すれば、すでに3つの方法ですばやく拡張できます。第1に、Amazon Redshift Spectrumを使用してAmazon S3データレイクのクエリデータをクラスターにロードせずに、その場所にあるデータを照会することができます。この柔軟性により、抽出、変換、ロード(ETL)ジョブを待つことなく、またはストレージ容量を追加することなく、増大するデータボリュームを分析することができます。第2に、数時間でノードを追加したり、ノードタイプを変更することで、Amazon Redshiftクラスターのサイズを変更することができます。この間は、アナリストはダウンタイムなしで読み取りクエリを実行し続けることができます。これにより、スケールアップに数日かかるオンプレミスのデータウェアハウスに比べて、俊敏性が向上します。第3に、スナップショットからデータをすばやくリストアすることで、複数のAmazon Redshiftクラスターをスピンアップできます。これにより、高い並行性をサポートするために必要なコンピューティングリソースを追加できます。

Elasitc Resizeの導入

Amazon Redshiftクラスターのノードを数分で追加または削除できる新機能、Elastic Resizeを発表出来ることを嬉しく思います。これにより、要求の厳しいワークロードに対して、より優れたパフォーマンスとストレージを実現するための機敏性がさらに高まり、需要が低い期間にコストを削減できます。AWS マネジメントコンソールから手動で、または簡単なAPIコールを使用してプログラムでリサイズできます。

Elastic Resizeを使用すると、次の図に示すように、必要に応じて小規模から始めてオンデマンドでスケールアップすることができます。

リリース前にElastic ResizeをプレビューしていたAmazon Redshiftの顧客は、スケーラビリティによって即座に利益を得ることができました。ここで、顧客の一部がElastic Resizeについて伝えなければならないことがあります:

 

Amazon Prime Videoは高度なデータ分析を使用して視聴のお薦め内容をカスタマイズし、ファンの視聴経験を測定します。「Redshiftの新しいElastic Resize機能により、作業時間のリサイジング時間が6時間から15分に短縮され、ワークロードのさまざまな性質に応じてインフラを動的に拡張し、コストを最適化しパフォーマンスを最大限に高めました。」 Amazon Prime VideoのデータエンジニアであるSergio Diaz Bautista氏

 

 

Yelpは、Amazon Redshiftを使用して、モバイルアプリの利用データと、顧客コホート、オークション、広告指標に関する広告データを分析します。「Yelpは、データ分析を使用してビジネス上の意思決定を行い、ユーザーのエクスペリエンスを向上させる最前線に位置しています。Elastic Resizeを使用することで、需要が通常の変動性ウィンドウを超えて増加し、オフピーク時にスケールダウンするときにクラスターをスケールアップするように設定することで、最良のパフォーマンスを確実に最適化し、コストを低く抑えることができます。数百テラバイトのデータを数分で格納するデータウェアハウスの拡張能力は素晴らしいです」とYelp.comのデータアーキテクトShahid Chohan氏は言います。

 

「Coupangは、電話を使った世界のショップのあり方を混乱させている。進歩するビジネスニーズや予期せず必要とされる特別な分析のために、分析需要を常に予測できるとは限りません。Elastic Resizeにより、コンピューティングとストレージを迅速に拡張し、大規模なETLジョブをより速く完了させ、データを照会するユーザーの数を増やすことができます」と、Coupangのデータエンジニアリング担当上級マネージャー、Hara Ketha氏は述べています。

 

OLXはAmazon Redshiftを使用してパーソナライズと関連性を強化し、レポートを実行し、実行可能な顧客の洞察を生成します。「OLXでは、世界中の何百万という人々が毎日お互いに売買しています。Redshiftは、高度な分析とOLXの大きなデータ革新の中核となっています。データニーズがますます増大するにつれ、Elastic Resizeを使ってノードを追加することができます。コストを節約するために、活動が少ない期間にサイズダウンすることも簡単です。Redshiftありがとう!」と、OLX.comの欧州データチームのデータアーキテクト、Michał Adamkiewicz氏は述べています

Elastic Resizeの仕組み

Elastic Resizeは、Amazon Redshiftの従来のリサイズ操作(Classic Resize)とは根本的に異なります。新しいクラスターを作成し、それにデータを転送するClassic Resizeとは異なり、Elasic Resizeは既存のクラスター内のノードの数を変更します。これにより、進行中の読み取りまたは書き込み照会の中断を最小限に抑えながら、追加のノードを数分で展開できます。したがって、コストを節約するためにジョブが完了したら、クラスターをすばやくサイズアップしてパフォーマンスを向上させ、サイズを小さくすることができます。

ノードのタイプを変更する場合(たとえば、DC1ノードからDC2ノードにアップグレードする場合など)、古典的なリサイズを引き続き使用できます。次のステージでは、Elastic Resizeをトリガーするときに何が起こるのかを説明します。

ステージ1:クラスターが完全に利用できる状態でのリサイズの準備

Elastic Resizeの開始時に、Amazon Redshiftはまず、Amazon S3のスナップショットを最新のデータで更新します。今日では、Amazon Redshiftは8時間ごとまたは5 GBのデータ変更のいずれか早い方で自動スナップショットを取得します。それに加えて、手動でスナップショットを作成することもできます。各スナップショットは、前回の自動スナップショットまたは手動スナップショット以降に発生した変更を保存するための増分です。最初のスナップショットが作成されている間、クラスターは読み取りと書き込みのクエリで完全に利用可能です。

コンソールとdescribe-clusters API操作では、この段階でクラスターのステータスが使用可能になり、サイズ調整の準備が整います。さらに、イベント通知(REDSHIFT-EVENT-3012)を使用すると、Elastic Resizeの要求が受信されたことを知ることができます。

ステージ2:クラスターが使用できない状態でのクラスターのサイズ変更

実際にリサイズが行われるこの段階では、わずか数分で終了します。リサイズが始まると、既存の接続が保留になります。リサイズが完了するまで新しい接続は受け入れられず、クラスターはクエリに使用できません。保持されている接続またはクエリの一部が、進行中のトランザクションの一部であった場合、失敗する可能性があります。新しいノードは、この期間中に追加(拡大または縮小)されます。ステージ1でユーザーが行ったデータ更新を考慮して、別の増分バックアップが行われます。

コンソール上でdescribe-clusters API操作を使用すると、クラスターのステータスがリサイズとして表示されるようになります。さらに、イベント通知(REDSHIFT-EVENT-3011)を使用すると、クラスターでElastic Resizeが開始されたことを知ることができます。

ステージ3:クラスターが完全に利用可能な状態でのデータ転送

ステージ2でリサイズが完了すると、クラスターは読み取りと書き込みのクエリで完全に使用可能になります。保持されていたクエリは、実行のために自動的にキューに入ります。この段階では、データがAmazon S3からノードに転送されます。Amazon Redshiftはノードを減算または追加するだけなので、一部のデータだけを転送する必要があります。たとえば、3ノードのdc2.8xlargeクラスターを6ノードにリサイズした場合、データの50%のみを移動する必要があります。

また、S3からのデータブロックを2倍に復元するレートを改善し、ステージ3を終了するまでの時間を短縮しました。それに加えて、この改善により、スナップショットからのリストアもより速くなります。

さらに、Amazon Redshiftはデータを賢く移動し、この段階でのクエリへのデータ転送の影響を最小限に抑えます。最も頻繁にアクセスされるデータブロックが最初に移動され、続いてアクセス頻度に基づいて他のブロックが移動されます。これにより、ほとんどの受信クエリは、ディスク上でアクセスしようとしているデータブロックを見つけることになります。

コンソール上でdescribe-clusters API操作を使用すると、クラスターの状態が使用可能になり、データを転送します。さらに、イベント通知(REDSHIFT-EVENT-3534)を使用すると、Elastic Resizeが完了し、クラスターが読み取りと書き込みに使用できることがわかります。

データの転送が完了すると、コンソール上のクラスター状況とdescribe-clusters API操作を介したクラスター状況がもう一度、使用可能であると表示されます。

Elastic Resizeの制約

Elastic Resizeがユースケースに適しているかどうかを判断する前に、次の制約を考慮してください。

  • 新しいノード構成には、既存のデータ用の十分なストレージが必要です。ノードを追加しても、データが再配布されるため、新しい構成に十分なストレージがない可能性があります。
  • dc2.largeまたはds2.xlargeノードタイプの場合は、2倍(2倍へ、または1/2へ)でサイズを変更できます。たとえば、4ノードクラスターのサイズを最大8ノードまで、または2ノードまでに変更することができます。この制限は、スライスの不均等な分布によるノード間のデータの偏りを避けるために存在します。
  • dc2.8xlargeまたはds2.8xlargeノードタイプの場合は、元のノード数の2倍まで、または元のノード数の半分までリサイズできます。たとえば、16ノードのクラスターを32ノードまでの任意のサイズまたは8ノードまでの任意のサイズにリサイズできます。この制限は、スライスの不均等な分布によるノード間のデータの歪みを避けるために存在します。

結論

Elastic Resizeは、オンデマンドでAmazon Redshiftクラスターを拡張する能力を大幅に向上させます。Amazon Redshift Spectrumなどの機能とともに、ストレージの独立した拡張とコンピューティングを可能にし、ビジネスの分析ニーズに対応することができます。

Elastic Resizeの詳細とクラスターのサイズ設定方法については、AWS Online Tech Talk:Amazon Redshiftのスケーリングのベストプラクティスをご覧ください。また、Amazon Redshift クラスターマネジメントガイドクラスターのリサイズドキュメントを参照することもできます。


まとめ

Ayush Jain氏は アマゾン ウェブ サービスのプロダクトマーケターです。クラウドサービスの成長と、クラウドのデプロイの価値を高められるようお客様を支援することに喜びを感じます。デベロッパーやデータサービスでのソフトウェア開発、製品管理、製品マーケティングに関する何年もの経験があります。

 

 

 

Himanshu Raja氏は、Amazon Redshift のシニアテクニカルプロダクトマネージャーです。Himanshu氏は、データによる困難な問題を解決するのが大好きで、データが直感に反している時を大事にしています。暇な時間には、Himanshu氏はインド料理を食べたり、アクション映画を見たりしています。