同じキュー内の複数のジョブが同時にリソースをリクエストする場合、ジョブの優先度を設定することで、優先度の高いジョブが先にリソースを取得できます。このトピックでは、EMR Serverless Spark ジョブの優先度を設定する方法について説明します。
前提条件
EMR Serverless Spark ワークスペースを作成済みであること。詳細については、「ワークスペースの作成」をご参照ください。
ジョブの優先度機能は、許可リストに登録されたキューでのみ利用可能です。この機能を有効にするには、EMR Serverless Spark チームにチケットを送信してください。
背景情報
同じキュー内の複数のジョブが同時にリソースをリクエストする場合、システムは以下のルールに基づいてリソースを割り当てます。
優先度スケジューリング: 優先度の高いジョブが先にリソースを取得します。
リソースリクエストの条件: ジョブは、キューの利用可能なリソースが、そのドライバーが必要とするリソース以上である場合にのみリソースを取得できます。リソースが不足している場合、ジョブはキューで待機し、リソース要件を満たす他のジョブをブロックしません。
動的な優先度の継承: ジョブで動的リソース割り当てが有効になっている場合、ランタイム中にリクエストされる新しいエグゼキュータは、元のジョブの優先度を継承します。
優先度の詳細
値の範囲: 0 から 9 までの整数。値が大きいほど優先度が高くなります。
デフォルト値: 優先度を設定しない場合、デフォルト値は 0 です。
適用対象:
カスタマイズ可能な優先度: バッチジョブ、ストリーミングジョブ、およびゲートウェイ経由で送信されるバッチジョブまたはセッションジョブ。
システムデフォルトの優先度 5 (カスタマイズはサポートされていません): セッションリソース、Livy ゲートウェイ、および Kyuubi ゲートウェイ。
操作手順
EMR Serverless Spark では、ジョブの優先度を設定するために、以下の 4 つの方法をサポートしています。
方法 1:データ開発で優先度を設定
E-MapReduce コンソールにログインします。
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
[Spark] ページで、対象のワークスペースの名前をクリックします。
[EMR Serverless Spark] ページで、左側のナビゲーションウィンドウの [データ開発] をクリックします。
バッチジョブまたはストリーミングジョブを作成または編集します。
ジョブの [Spark 構成] セクションで、次の構成を追加します:
spark.emr.serverless.priority=9この例では、
9が優先度の値です。有効な値の範囲は 0 から 9 です。ビジネスニーズに基づいて値を設定してください。ジョブを保存して送信します。
方法 2:ゲートウェイ経由で優先度を設定
Livy ゲートウェイまたは Kyuubi ゲートウェイ経由でジョブを送信する際に、Spark 構成に優先度パラメーターを追加できます。
Livy ゲートウェイ: ジョブの送信時に、Spark 構成に次のパラメーターを追加します:
spark.emr.serverless.priority=8。Kyuubi ゲートウェイ: ジョブの送信時に、Spark 構成に次のパラメーターを追加します:
spark.emr.serverless.priority=8。
方法 3:spark-submit で優先度を設定
spark-submit コマンドを使用してジョブを送信する際に、`--conf` パラメーターで優先度構成を追加します。
spark-submit \
--master spark://<gateway-endpoint> \
--conf spark.emr.serverless.priority=6 \
--class org.apache.spark.examples.SparkPi \
s3://your-bucket/spark-examples.jar 100方法 4:ワークフローで優先度を設定
バッチジョブノード: このノードは、データ開発内の対応するジョブの Spark 構成で設定された優先度を継承します。追加の構成は不要です。
SQL ノードまたはノートブックノード: ノードの Spark 構成に、パラメーター
spark.emr.serverless.priority=7を追加します。その後、ワークフローを保存して送信します。