Spark SQLまたはSpark JARジョブを低コストで実行する場合は、ジョブリソースグループのスポットインスタンス機能を有効にできます。 ジョブリソースグループのスポットインスタンス機能を有効にすると、AnalyticDB for MySQLクラスターはアイドルSparkエグゼキューターリソースを使用してSparkジョブを低コストで実行しようとします。 このトピックでは、スポットインスタンスの概要と使用方法について説明します。
概要
AnalyticDB for MySQLのアイドルSparkエグゼキューターリソースは、割引価格で販売される場合があります。 リソースはスポットインスタンスと呼ばれます。
次のセクションでは、スポットインスタンスリソースとAnalyticDBコンピュートユニット (ACU) エラスティックリソースの違いについて説明します。
ACUエラスティックリソースのコストと比較して、スポットインスタンスリソースのコストは約30% 低くなります。
スポットインスタンス機能が有効になっているジョブリソースグループでSparkジョブを送信すると、AnalyticDB for MySQLクラスターは、アイドル状態で低コストのスポットインスタンスリソースを優先的にプリエンプションします。 プリエンプションが成功した場合、Sparkジョブはスポットインスタンスリソースを使用して実行され、スポットインスタンスリソースに対して課金されます。 プリエンプションが失敗した場合、SparkジョブはACUエラスティックリソースを使用して実行され、ACUエラスティックリソースに対して課金されます。
デフォルトでは、Alibaba CloudはAnalyticDB for MySQLスポットインスタンスリソースに1時間の保護期間を提供し、リソースが使用されてから1時間以内にリソースがプリエンプトまたはリリースされないようにします。 特定のスポットインスタンスリソースの保護期間が終了した後、リソースをプリエンプトすることができる。 プリエンプションの確率は、スポットインスタンスリソースが使用される時間と共に増加する。
スポットインスタンスリソースを使用するSparkジョブの優先度は低くなります。 たとえば、SparkジョブAはスポットインスタンスリソースを使用して実行されており、別のAnalyticDB For MySQLクラスターは、スポットインスタンスリソースを使用しないSparkジョブBを送信します。 SparkジョブBに十分なリソースがない場合、SparkジョブBはSparkジョブAによって使用されるスポットインスタンスリソースを先取りし、スポットインスタンスリソースはリリースされます。 その結果、Sparkジョブaは失敗します。 スポットインスタンスリソースのリリースによるSparkジョブの失敗の確率は1% 5% です。
シナリオと提案
次のシナリオでは、スポットインスタンス機能を有効にすることを推奨します。
Sparkジョブ開発シナリオ。
コスト重視のシナリオ。
Sparkジョブの失敗に対する耐性が高いシナリオ。
ほとんどのSparkジョブが1時間以内に実行されるシナリオ。
実行に1時間以上かかる特定のSparkジョブと1時間以内に実行される特定のSparkジョブについては、次の操作を実行することを推奨します。
2つのジョブリソースグループを作成します。 スポットインスタンス機能を有効にし、最初のジョブリソースグループで短い実行時間を必要とするSparkジョブのみを実行します。 スポットインスタンスを有効にせず、2番目のジョブリソースグループで長い実行時間を必要とするSparkジョブのみを実行してください。
ジョブリソースグループを作成し、リソースグループのスポットインスタンス機能を有効にします。 Sparkジョブを実行するときに、
spark.adb.spotInstance.disabled
パラメーターを設定して、Sparkジョブのスポットインスタンスリソースの使用を無効にします。 詳細については、このトピックの「 (オプション) Sparkジョブのスポットインスタンスリソースの使用を無効にする」を参照してください。
制限事項
スポットインスタンス機能は、中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (杭州) 、中国 (上海) 、中国 (深セン) 、中国 (広州) 、中国 (香港) 、日本 (東京) 、シンガポール、米国 (シリコンバレー) 、米国 (バージニア) 、ドイツ (フランクフルト) 、英国 (ロンドン) 。
スポットインスタンス機能は、ジョブリソースグループに対してのみ有効にできます。 スポットインスタンス機能を有効にすると、ジョブリソースグループのSparkジョブはスポットインスタンスリソースを使用しようとしますが、これはリソースが使用できることを意味するものではありません。
Sparkジョブのみがスポットインスタンスリソースを使用できます。
Sparkエグゼキュータリソースの次の仕様のみがspotインスタンスリソースをサポートしています: largeおよび2xlarge。 Sparkエグゼキューターリソースの仕様については、「Sparkアプリケーション設定パラメーター」をご参照ください。
課金ルール
ACUエラスティックリソースのコストと比較して、スポットインスタンスリソースのコストは約30% 低くなります。 詳細については、「Data Lakehouse Edition (V3.0) の料金」をご参照ください。
AnalyticDB for MySQLクラスターに割り当てられていない予約済みコンピューティングリソースを使用して、スポットインスタンスリソースのコストを相殺できます。 使用されたスポットインスタンスリソースの量が未割り当ての予約済みコンピューティングリソースの量よりも少ない場合、追加料金なしでオフセットが実行されます。 使用されているスポットインスタンスリソースの量が未割り当ての予約済みコンピューティングリソースの量よりも多い場合、スポットインスタンスリソースのコストに基づいて過剰なリソースに対して課金されます。 スポットインスタンスリソースの使用状況を表示する方法については、「リソースグループに関するモニタリング情報の表示」トピックの「リソースグループのコンピューティングリソースに関する情報の表示」をご参照ください。
スポットインスタンス機能の有効化
AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 クラスターリスト ページで、エディションタブをクリックします。 管理するクラスターを確認し、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 [クラスター管理] > [リソース管理] を選択します。 表示されるページで、[リソースグループ] タブをクリックします。
既存のジョブリソースグループのスポットインスタンス機能の有効化
管理するジョブリソースグループを見つけて、[操作] 列の [変更] をクリックします。
[リソースグループの変更] パネルで、 [スポットインスタンス] をオンにします。
[OK] をクリックします。
ジョブリソースグループの [スポットインスタンス] 列でスポットインスタンス機能が有効になっているかどうかを確認します。
スポットインスタンス機能を有効にすると、ジョブリソースグループで実行されるSparkジョブがスポットインスタンスリソースを使用しようとします。
ジョブリソースグループの作成時にスポットインスタンス機能を有効にする
タブの右上隅にある [リソースグループの作成] をクリックします。 [リソースグループの作成] パネルで、次の表に示すパラメーターを設定します。
パラメーター
説明
リソースグループ名
リソースグループの名前。 名前は2 ~ 30文字で、英数字、アンダースコア (_) のみを使用できます。 先頭は英字とする必要があります。
タスクタイプ
リソースグループのジョブタイプ。 ドロップダウンリストから [ジョブ] を選択します。 ジョブリソースグループは、高いスループットが必要なバッチ処理シナリオに適しています。 これらのシナリオでは、オンデマンドスケーリングを使用してコンピューティングリソースをスケーリングできます。
最小リソースを計算する
コンピューティングリソースの最小量。 値を0 ACUに設定します。
最大リソースの計算
コンピューティングリソースの最大量。 このパラメーターを8 ACUの範囲で設定し、8 ACU単位で1,024 ACUを設定します。 コンソールで設定できるコンピューティングリソースの最大量は1,024 ACUです。 リソースの量を変更する場合は、
チケットを起票します。スポットインスタンス
リソースグループのスポットインスタンス機能を有効にするかどうかを指定します。
スポットインスタンス機能を有効にすると、ジョブリソースグループで実行されるSparkジョブがスポットインスタンスリソースを使用しようとします。 詳細は、「スポットインスタンス」をご参照ください。
を決定 をクリックします。
ジョブリソースグループを作成したら、リソースグループの [スポットインスタンス] 列でスポットインスタンス機能が有効になっているかどうかを確認します。
スポットインスタンス機能を有効にすると、ジョブリソースグループで実行されるSparkジョブがスポットインスタンスリソースを使用しようとします。
(オプション) Sparkジョブのスポットインスタンスリソースの使用を無効にする
Sparkジョブでスポットインスタンスリソースを使用しない場合は、sparkジョブのSpark. adb.spotInstance.disabled
パラメーターを設定できます。
パラメーター | 必須 | 説明 |
spark.adb.spotInstance.disabled | 選択可能 | Sparkジョブのスポットインスタンスリソースの使用を無効にするかどうかを指定します。 有効な値:
|
Sparkジョブの実行後、[スポットインスタンスリソースの使用状況] パラメーターの値を表示して、スポットインスタンスリソースの使用が無効になっているかどうかを確認できます。 [スポットインスタンスリソース使用量] パラメーターの値が0の場合、Sparkジョブはスポットインスタンスリソースを使用しません。
スポットインスタンスリソースの使用状況の表示
Sparkジョブの実行後、ジョブリソースグループの [リソースグループモニタリング] パネルで [スポットインスタンスリソースの使用状況] パラメーターを表示できます。 詳細については、「リソースグループに関するモニタリング情報の表示」トピックの「リソースグループのコンピューティングリソースに関する情報の表示」をご参照ください。
スポットインスタンス機能の無効化
AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 クラスターリスト ページで、エディションタブをクリックします。 管理するクラスターを確認し、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、 [クラスター管理] > [リソース管理] を選択します。 表示されるページで、[リソースグループ] タブをクリックします。
管理するジョブリソースグループを見つけて、[操作] 列の [変更] をクリックします。
[リソースグループの変更] パネルで、スポットインスタンスをオフにします。
[OK] をクリックします。
ジョブリソースグループの [スポットインスタンス] 列でスポットインスタンス機能が無効になっているかどうかを確認します。
関連する API
API 操作 | 説明 |
AnalyticDB for MySQLのリソースグループを作成します。 Data Lakehouse Editionクラスター。 | |
AnalyticDB for MySQLのリソースグループを変更します。 Data Lakehouse Editionクラスター。 | |
AnalyticDB for MySQLのリソースグループに関する情報の照会 Data Lakehouse Editionクラスター。 | |
AnalyticDB for MySQLのリソース使用状況に関する情報の照会 Data Lakehouse Editionクラスター。 |