AWS Glue 向けの Auto Scaling の使用 - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Glue 向けの Auto Scaling の使用

Auto Scaling は、AWS Glue ETL および AWS Glue バージョン 3.0 以降のストリーミングジョブで使用できます。

Auto Scaling を有効にすると、次の利点が得られます。

  • AWS Glue は、ジョブ実行の各ステージでの並行処理またはマイクロバッチに応じて自動的にワーカーをクラスターに追加、またはクラスターから削除します。

  • AWS Glue ETL ジョブに割り当てるワーカーの数について実験して判断する必要性を排除します。

  • 最大数のワーカーを選択する場合、AWS Glue がワークロードに適したサイズのリソースを選択します。

  • ジョブの実行中にクラスターのサイズがどのように変化するかについては、AWS Glue Studio のジョブ実行の詳細ページで CloudWatch メトリクスを確認できます。

AWS Glue ETL およびストリーミングジョブ向けの Auto Scaling は、AWS Glue ジョブのコンピューティングリソースのオンデマンドでのスケールアップとスケールダウンを可能にします。オンデマンドのスケールアップは、ジョブ実行の起動当初に必要なコンピューティングリソースを割り当てるだけでなく、ジョブ実行中の需要に応じて必要なリソースをプロビジョニングするためにも役立ちます。

Auto Scaling は、ジョブの過程全体での AWS Glue ジョブリソースの動的なスケールダウンもサポートします。ジョブ実行中に Spark アプリケーションにより多くのエグゼキューターが要求されると、クラスター に追加されるワーカーが増えます。 エグゼキュータがアクティブな計算タスクなしでアイドル状態になると、エグゼキュータと対応するワーカーが削除されます。

Auto Scaling が Spark アプリケーション のコストと使用率に役立つ一般的なシナリオを含める Spark ドライバーは、Amazon S3 内の多数のファイルを一覧表示したり、エグゼキューターが非アクティブのときにロードを実行したり、オーバープロビジョニングのために少数のエグゼキューターだけで実行される Spark ステージ、Spark ステージ間でデータスキューや不均一な計算要求を実行します。

要件

Auto Scaling は、AWS Glue バージョン 3.0 以降でのみ利用可能です。Auto Scaling を使用するには、「移行ガイド」に従って既存のジョブをバージョン 3.0 以降の AWS Glue に移行するか、AWS Glue のバージョン 3.0 以降を使用して新しいジョブを作成します。

Auto Scaling は AWS Glue のジョブと G.1XG.2XG.4XG.8X、または G.025X (Streaming ジョブ用) ワーカータイプで利用可能です。スタンダード DPU はサポートされていません。

AWS Glue Studio の Auto-Scaling を有効にする

AWS Glue Studio の [Job details] (ジョブ詳細) タブで、タイプに [Spark] または [Spark Streaming] を選択し、[Glue version] (Glue バージョン) には [Glue 3.0] もしくは [Glue 4.0] を選択します。次に、[Worker type] (ワーカータイプ) の下にチェックボックスが表示されます。

  • [Automatically scale the number of workers] (ワーカー数を自動的にスケーリングする) を選択します。

  • ワーカーの最大数をセットして、ジョブ実行に投入できるワーカーの最大数を定義します。

AWS Glue スタジオで Auto Scaling を有効にし、設定する。

AWS CLI または SDK を使用した Auto Scaling の有効化

Auto Scaling を有効にするには、ジョブ実行の AWS CLI から、次の設定で start-job-run を実行します。

{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X and G.2X are allowed for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }

ETL ジョブ実行が終了したら、get-job-run を呼び出して、実行されたジョブの実際のリソース使用量を DPU 秒単位で確認することもできます。注: 新しいフィールド [DPUSeconds] は、Auto Scaling が有効になっている AWS Glue 3.0 以降のパッチジョブに対してのみ表示されます。このフィールドは、ストリーミングジョブではサポートされません。

$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }

同じ設定で AWS Glue SDK を使用して、Auto Scaling でジョブ実行を設定することもできます。

Amazon CloudWatch メトリクスを使用した Auto Scaling のモニタリング

Auto Scaling を有効にすると、CloudWatch の実行者メトリクスが AWS Glue 3.0 以降のジョブで利用できるようになります。メトリクスを使用して、Auto Scaling で有効化された Spark アプリケーションでのエグゼキューターの需要と最適化された使用状況をモニタリングできます。詳しくは、「Amazon CloudWatch メトリクスを使用した AWS Glue のモニタリング 」を参照してください。

  • glue.driver.executoraAllocationManager.executors.numberallExecutor

  • glue.driver.executorAllocationManager.executors.numbermaxNeededExecutors

Amazon CloudWatch での Auto Scaling のモニタリング

これらのメトリクスの詳細については、「DPU の容量計画のモニタリング」を参照してください。

Spark UI による Auto Scaling のモニタリング。

Auto Scaling を有効にすると、Glue Spark UI を使用して、AWS Glue ジョブの需要に基づいた動的なスケールアップとスケールダウンで追加または削除されるエグゼキュターをモニタリングすることもできます。詳しくは、「AWS Glue ジョブ用の Apache Spark ウェブ UI の有効化 」を参照してください。

Spark UI による Auto Scaling のモニタリング。

Auto Scaling ジョブ実行の DPU 使用量モニタリング

[AWS Glue Studio ジョブ実行ビュー] を使用して、Auto Scaling ジョブの DPU 使用量をチェックします。

  1. AWS Glue Studio ナビゲーションペインから [モニタリング] を選択します。[Monitoring] (モニタリング) ページが表示されます。

  2. ジョブ実行チャートまでスクロールダウンします。

  3. チェックしたいジョブ実行に移動して、[DPU hours] (DPU 時間) 列を下にスクロールして、そのジョブ実行の使用量をチェックします。

制限事項

AWS Glue ストリーミングの Auto Scaling は現在、ForEachBatch 外で作成された静的 DataFrame とのストリーミング DataFrame の結合をサポートしていません。ForEachBatch 内で作成された 静的 DataFrame は、期待通りに動作します。