翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Spark ジョブのパフォーマンスをチューニングするための戦略
パラメータのチューニングを準備する際は、次のベストプラクティスを使用します。
-
問題の特定を始める前に、パフォーマンス目標を決定します。
-
パラメータのチューニングを変更する前に、メトリクスを使用して問題を特定します。
ジョブのチューニングで一貫した結果を得るには、チューニング作業のベースライン戦略を立てます。
パフォーマンスチューニングのベースライン戦略
通常、パフォーマンスチューニングは次のワークフローで実施します。
-
パフォーマンス目標を決定します。
-
メトリクスを測定します。
-
ボトルネックを特定します。
-
ボトルネックの影響を軽減します。
-
想定目標を達成するまで、ステップ 2~4 を繰り返します。
まず、パフォーマンス目標を決定します。たとえば、目標の 1 つは 3 時間以内に AWS Glue ジョブの実行を完了することです。目標を定義したら、ジョブのパフォーマンスメトリクスを測定します。目標を達成するために、メトリクスとボトルネックの傾向を特定します。特に、トラブルシューティング、デバッグ、パフォーマンスチューニングには、ボトルネックを特定することが最も重要です。Spark アプリケーションの実行中に、Spark は各タスクのステータスと統計を Spark イベントログに記録します。
では AWS Glue、Spark 履歴サーバーが提供する Spark Web UI
パフォーマンス目標を決定し、それらの目標を評価するメトリクスを特定したら、次のセクションの戦略を使用してボトルネックの特定と修復を開始できます。
Spark ジョブパフォーマンスのチューニングプラクティス
AWS Glue Spark ジョブのパフォーマンス調整には、次の戦略を使用できます。
-
AWS Glue リソース:
-
Spark アプリケーション:
これらの戦略を使用する前に、Spark ジョブのメトリクスと設定にアクセスできる必要があります。この情報は、AWS Glue のドキュメントで確認できます。
AWS Glue リソースの観点からは、 AWS Glue ワーカーを追加し、 AWS Glue 最新バージョンを使用することで、パフォーマンスを向上させることができます。
Apache Spark アプリケーションの観点からは、パフォーマンスを向上させるいくつかの戦略を使用できます。不要なデータが Spark クラスターにロードされた場合は、それを削除してロードされたデータ量を減らすことができます。Spark クラスターのリソースが十分に使用されておらず、データ I/O が少ない場合は、並列化するタスクを特定できます。また、結合などの大量のデータ転送オペレーションにかなりの時間がかかっている場合は、それらを最適化することもできます。ジョブのクエリプランを最適化したり、個々の Spark タスクの計算の複雑さを軽減したりすることもできます。
これらの戦略を効率的に適用するには、メトリクスを確認して適用可能なタイミングを特定する必要があります。詳細については、次の各セクションを参照してください。これらの手法は、パフォーマンスのチューニングだけでなく、メモリ不足 (OOM) エラーなどの一般的な問題の解決にも役立ちます。