での自動スケーリングの使用 AWS Glue
Auto Scaling は、 で使用できます。AWS Glue ETLを使用した 、インタラクティブセッション、ストリーミングジョブ AWS Glue バージョン 3.0 以降。
Auto Scaling を有効にすると、次のようなメリットがあります。
-
AWS Glue は、ジョブ実行の各ステージまたはマイクロバッチでの並列処理に応じて、クラスターからワーカーを自動的に追加および削除します。
-
これにより、 に割り当てるワーカーの数を実験して決定する必要が減ります。AWS Glue ETL ジョブ。
-
指定されたワーカーの最大数では、AWS Glue は、ワークロードに適したサイズのリソースを選択します。
-
ジョブの実行中にクラスターのサイズがどのように変化するかは、 のジョブ実行の詳細ページの CloudWatch メトリクスで確認できます。AWS Glue Studio。
の Auto Scaling AWS Glue ETL および ストリーミングジョブにより、 のコンピューティングリソースのオンデマンドスケーリングアウトとスケーリングインが可能になります。AWS Glue ジョブ。オンデマンドのスケールアップは、ジョブ実行のスタートアップに必要なコンピューティングリソースのみを最初に割り当てることができ、またジョブ実行中の需要に応じて必要なリソースをプロビジョニングするためにも役立ちます。
Auto Scaling は、 の動的スケールインもサポートします。AWS Glue ジョブ中のジョブリソース。ジョブ実行中に Spark アプリケーションからより多くのエグゼキューターが要求されると、より多くのワーカーがクラスターに追加さます。エグゼキュータがアクティブな計算タスクなしでアイドル状態になると、エグゼキュータと対応するワーカーが削除されます。
Auto Scaling が Spark アプリケーションのコストと使用率に役立つ一般的なシナリオは次のとおりです。
-
Spark ドライバーがAmazon S3 内の多数のファイルを一覧表示している、またはエグゼキュターが非アクティブのときにロードを実行している場合
-
Spark ステージがオーバープロビジョニングにより、少数のエグゼキュターのみで実行されている場合
-
Spark ステージ間でのデータの偏りまたは不均一な計算需要
要件
Auto Scaling は でのみ使用できます。AWS Glue バージョン 3.0 以降。Auto Scaling を使用するには、移行ガイドに従って既存のジョブを に移行します。AWS Glue バージョン 3.0 以降、または を使用して新しいジョブを作成する AWS Glue バージョン 3.0 以降。
Auto Scaling は で使用できます。AWS Glue 、G.1X
、G.2X
G.4X
、G.8X
、または G.025X
(ストリーミングジョブのみ) ワーカータイプの ジョブ。標準DPUsはサポートされていません。
で Auto Scaling を有効にする AWS Glue Studio
のジョブの詳細タブで AWS Glue Studio で、タイプを Spark または Spark Streaming として選択し、Glue バージョンを Glue 3.0
以降として選択します。次に、[ワーカータイプ] の下にチェックボックスが表示されます。
-
[Automatically scale the number of workers] (ワーカー数を自動的にスケールする) を選択します。
-
ワーカーの最大数を設定して、ジョブ実行に投入できるワーカーの最大数を定義します。
または AWS CLIで Auto Scaling を有効にする SDK
ジョブ実行のために AWS CLIから Auto Scaling を有効にするには、次の設定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 4.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 } }
Auto Scaling でジョブ実行を同じ設定AWS Glue SDKの を使用して設定することもできます。
インタラクティブセッションによる Auto Scaling の有効化
インタラクティブセッションを使用して AWS Glue ジョブを構築するときに Auto Scaling を有効にするには、「インタラクティブセッションの設定 AWS Glue」を参照してください。
ヒントと注意点
AWS Glue Auto Scaling を微調整するためのヒントと考慮事項:
-
ワーカーの最大数の初期値について不明な場合は、推定 AWS Glue DPU で説明されている大まかな計算から始めることができます。データ量が非常に少ない場合、最大ワーカー数に極端に大きな値を設定しないでください。
-
AWS Glue Auto Scaling は、ジョブで設定された最大数 DPU (ワーカーの最大数とワーカータイプで計算)
spark.default.parallelism
に基づいてspark.sql.shuffle.partitions
と を設定します。これらの設定で固定値を使用する場合は、次のジョブパラメータでこれらのパラメータを上書きできます。-
[Key] (キー):
--conf
-
値:
spark.sql.shuffle.partitions=200 --conf spark.default.parallelism=200
-
-
ストリーミングジョブの場合、デフォルトでは、マイクロバッチ内で自動スケーリング AWS Glue は行われず、自動スケーリングを開始するには複数のマイクロバッチが必要です。マイクロバッチ内で自動スケーリングを有効にする場合は、
--auto-scale-within-microbatch
を指定します。詳細については、「擬似パラメータのリファレンス」を参照してください。
Amazon CloudWatch メトリクスによる Auto Scaling のモニタリング
エグ CloudWatch ゼキュターメトリクスは、AWS Glue Auto Scaling を有効にする場合は、3.0 以降のジョブ。メトリクスを使用して、Auto Scaling で有効化された Spark アプリケーションでのエグゼキューターの需要と最適化された使用状況をモニタリングできます。詳細については、「Amazon CloudWatch メトリクスを使用した AWS Glue のモニタリング」を参照してください。
また、 AWS Glue オブザーバビリティメトリクスを使用して、リソース使用率に関するインサイトを取得することもできます。例えば、glue.driver.workerUtilization
をモニタリングすることで、自動スケーリングの有無にかかわらず、実際に使用されたリソースの量をモニタリングできます。別の例として、glue.driver.skewness.job
と glue.driver.skewness.stage
をモニタリングすることで、データの歪みを確認できます。これらのインサイトは、自動スケーリングを有効にするかどうかを決定し、設定を微調整するのに役立ちます。詳細については、「AWS Glue オブザーバビリティメトリクスを使用したモニタリング でのモニタリング」を参照してください。
-
glue.driverExecutorAllocationManager..executors。numberAllExecutors
-
glue.driverExecutorAllocationManager..executors.numberMaxNeededExecutors
これらのメトリクスの詳細については、「DPU の容量計画のモニタリング」を参照してください。
注記
CloudWatch エグゼキュターメトリクスは、インタラクティブセッションでは使用できません。
Amazon CloudWatch Logs による Auto Scaling のモニタリング
インタラクティブセッションを使用している場合は、継続的な Amazon CloudWatch Logs を有効にしてログで「エグゼキューター」を検索するか、Spark UI を使用してエグゼキューターの数をモニタリングできます。これを行うには、%%configure
マジックを使用して enable auto scaling
とともに継続的なログ記録を有効にします。
%%configure{ "--enable-continuous-cloudwatch-log": "true", "--enable-auto-scaling": "true" }
Amazon CloudWatch Logsevents で、ログで「実行」を検索します。
Spark UI による Auto Scaling のモニタリング
Auto Scaling を有効にすると、AWS Glue Glue Spark UI を使用する ジョブ。詳細については、「AWS Glue ジョブ用の Apache Spark ウェブ UI の有効化」を参照してください。
Jupyter Notebook のインタラクティブセッションを使用すると、次のマジックを実行して、Spark UI とともに自動スケーリングを有効にすることができます。
%%configure{ "--enable-auto-scaling": "true", "--enable-continuous-cloudwatch-log": "true" }
Auto Scaling ジョブの実行DPU使用状況のモニタリング
AWS Glue Studio ジョブ実行ビューを使用して、Auto Scaling ジョブのDPU使用状況を確認できます。
-
AWS Glue Studio ナビゲーションペインからモニタリングを選択します。Monitoring (モニタリング) ページが表示されます。
-
ジョブ実行チャートまでスクロールダウンします。
-
目的のジョブ実行に移動し、DPU時間列にスクロールして、特定のジョブ実行の使用状況を確認します。
制限
AWS Glue 現在、ストリーミング Auto Scaling は、 の外部で DataFrame 作成された静的なストリーミング DataFrame 結合をサポートしていませんForEachBatch
。内で DataFrame 作成された静的は、期待どおりに機能ForEachBatch
します。