Spark ジョブを大幅に低いコストで実行する場合、ジョブリソースグループの スポットインスタンス 機能を有効にすることができます。この機能により、クラスターはアイドル状態の計算リソースを使用して Spark ジョブを大幅な割引価格で実行できます。このガイドでは、スポットインスタンスとは何か、トレードオフ、および効果的な使用方法について説明します。
前提条件
AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスターが作成されていること。
スポットインスタンスとは
スポットインスタンスとは、標準のオンデマンドリソース (ACU) と比較して割引価格で販売されるアイドル状態の Spark エグゼキューターリソースです。
スポットインスタンスリソースと AnalyticDB 計算ユニット (ACU) エラスティックリソースの主な違いを次に示します。
スポットインスタンスリソースのコストは、ACU エラスティックリソースよりも約 30% 低くなります。
ただし、このコスト削減にはトレードオフがあります。それは、信頼性が低いことです。オンデマンドジョブでリソースが必要な場合、スポットインスタンスはプリエンプション (削除) される可能性があります。たとえば、スポットインスタンス機能が有効になっているジョブリソースグループで Spark ジョブを送信すると、AnalyticDB for MySQL クラスターは、アイドル状態の低コストのスポットインスタンスリソースを優先的にプリエンプションします。
プリエンプションが成功すると、Spark ジョブはスポットインスタンスリソースを使用して実行され、それに応じて課金されます。
プリエンプションが失敗した場合、Spark ジョブは ACU エラスティックリソースを使用して実行され、代わりにそれらのリソースに対して課金されます。
デフォルトでは、Alibaba Cloud は AnalyticDB for MySQL スポットインスタンスリソースに 1 時間の保護期間を提供し、リソースが使用されてから 1 時間以内にプリエンプションまたは解放されないようにします。保護期間が終了すると、リソースはプリエンプションされる可能性があります。プリエンプションされる確率は、スポットインスタンスリソースの使用期間とともに増加します。
スポットインスタンスリソースを使用する Spark ジョブの優先度は低くなります。たとえば、Spark ジョブ A がスポットインスタンスリソースを使用して実行されており、別の AnalyticDB for MySQL クラスターがスポットインスタンスリソースを使用しない Spark ジョブ B を送信した場合、Spark ジョブ B は、十分なリソースがない場合に Spark ジョブ A で使用されているスポットインスタンスリソースをプリエンプションする可能性があります。これにより、スポットインスタンスリソースが解放され、Spark ジョブ A が失敗します。リソースの解放による Spark ジョブの失敗の確率は 1% から 5% です。
使用すべき場合
トレードオフに基づいて、スポットインスタンスは特定のワークロードに最適な選択肢ですが、他のワークロードでは避けるべきです。
最適なケース:
Spark ジョブの開発およびテスト 環境。
コスト重視のワークロード。
Spark ジョブの偶発的な障害と再試行を許容できる シナリオ。
ほとんどの Spark ジョブが 1 時間以内に実行される シナリオ。
注意して使用するケース:
障害が ビジネス運用 に影響を与えるミッションクリティカルな本番ジョブ。
簡単に再起動できない長時間実行ジョブ (1 時間以上)。
混合ワークロードにはハイブリッド戦略を使用します。
2 つのジョブリソースグループを個別に作成します。最初のグループのスポットインスタンス機能を有効にし、実行時間の短い Spark ジョブのみを実行します。2 番目のグループのスポットインスタンス機能を有効にせず、実行時間の長い Spark ジョブに使用します。
ジョブリソースグループを作成し、そのリソースグループのスポットインスタンス機能を有効にします。Spark ジョブを実行するときに、
spark.adb.spotInstance.disabledパラメーターを構成して、Spark ジョブでのスポットインスタンスリソースの使用を無効にします。
制限
スポットインスタンス機能は、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (杭州)、中国 (上海)、中国 (深セン)、中国 (広州)、中国 (香港)、日本 (東京)、シンガポール、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)、英国 (ロンドン) の リージョン でのみサポートされています。
ジョブリソースグループに対してのみスポットインスタンス機能を有効にできます。機能を有効にすると、ジョブリソースグループ内の Spark ジョブはスポットインスタンスリソースを使用しようとしますが、リソースが使用可能になることは保証されません。
Spark ジョブのみがスポットインスタンスリソースを使用できます。
スポットインスタンスリソースをサポートしている Spark エグゼキューターリソースの 仕様 は、large と 2xlarge のみです。
請求ルール
スポットインスタンスリソースのコストは、ACU エラスティックリソースよりも約 30% 低くなります。詳細については、「Enterprise Edition および Basic Edition の料金」および「Data Lakehouse Edition の料金」をご参照ください。
スポットインスタンス機能を有効にする
AnalyticDB for MySQL コンソール にログオンします。コンソールの左上隅で、リージョンを選択します。左側の ナビゲーションウィンドウ で、クラスターリスト をクリックします。管理するクラスターを見つけ、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、クラスター管理 > リソース管理 を選択します。表示されるページで、リソースグループ管理 タブをクリックします。
既存のジョブリソースグループ
管理するジョブリソースグループを見つけ、アクション 列の 変更 をクリックします。
[リソースグループの変更] パネルで、[スポットインスタンス] をオンにします。
[OK] をクリックします。
ジョブリソースグループの スポットインスタンス 列で、スポットインスタンス機能が有効になっているかどうかを確認します。
スポットインスタンス機能を有効にすると、ジョブリソースグループで実行される Spark ジョブはスポットインスタンスリソースを使用しようとします。
新しいジョブリソースグループを作成する
リソースグループリストの右上隅にある 新規リソースグループ をクリックし、リソースグループ情報を構成します。
パラメーター
説明
リソースグループ名
リソースグループの名前。名前は 2 ~ 30 文字で、文字、数字、および アンダースコア(_) を使用できます。名前は文字で始める必要があります。
タスクタイプ
リソースグループのジョブ 活字。ドロップダウンリストから ジョブ を選択します。ジョブ リソースグループは、高スループット バッチ処理 シナリオで計算リソースをオンデマンドでスケーリングするのに適しています。
最小リソースを計算する
計算リソースの最小量。値を 0 ACU に設定します。
最大リソースの計算
計算リソースの最大量。このパラメーターを 8 ACU ~ 1,024 ACU の範囲で 8 ACU 単位で設定します。「最大計算リソース」パラメーターの最大値を変更する場合は、チケットを送信 してください。
スポットインスタンス
有効にするのは Spot Instance です。
ジョブリソースグループのスポットインスタンス機能を有効にすると、ジョブリソースグループで実行される Spark ジョブはスポットインスタンスリソースを使用しようとします。
[OK] をクリックします。
ジョブリソースグループを作成した後、リソースグループの スポットインスタンス 列で、スポットインスタンス機能が有効になっているかどうかを確認します。
スポットインスタンス機能を有効にすると、ジョブリソースグループで実行される Spark ジョブはスポットインスタンスリソースを使用しようとします。
(オプション) Spark ジョブのスポットインスタンスを無効にする
Spark ジョブでスポットインスタンスリソースを使用しない場合は、Spark ジョブの CONF パラメーターで次のパラメーターを構成できます。
パラメーター | 必須 | 説明 |
spark.adb.spotInstance.disabled | いいえ | Spark ジョブでスポットインスタンスリソースの使用を無効にするかどうかを指定します。有効値:
|
Spark ジョブを実行した後、スポットインスタンスのリソース使用量 パラメーターの値を表示して、スポットインスタンスリソースの使用が無効になっているかどうかを確認できます。スポットインスタンスのリソース使用量 パラメーターの値が 0 の場合、Spark ジョブはスポットインスタンスリソースを使用しません。
スポットインスタンスの使用状況を モニター する
Spark ジョブが完了した後、ジョブリソースグループの モニタリング ページで、スポットインスタンスリソースの使用状況を表示 できます。
スポットインスタンス機能を無効にする
AnalyticDB for MySQL コンソール にログオンします。コンソールの左上隅で、リージョンを選択します。左側の ナビゲーションウィンドウ で、クラスターリスト をクリックします。管理するクラスターを見つけ、クラスター ID をクリックします。
左側のナビゲーションウィンドウで、クラスター管理 > リソース管理 を選択します。表示されるページで、リソースグループ管理 タブをクリックします。
管理するジョブリソースグループを見つけ、アクション 列の 変更 をクリックします。
リソースグループの変更パネルで、 Spot Instance をオフにします。
[OK] をクリックします。
ジョブリソースグループの スポットインスタンス 列で、スポットインスタンス機能が無効になっているかどうかを確認します。
関連 操作
API 名 | 説明 |
AnalyticDB for MySQL Enterprise Edition、Basic Edition、および Data Lakehouse Edition クラスターのリソースグループを作成します。 | |
AnalyticDB for MySQL Enterprise Edition、Basic Edition、および Data Lakehouse Edition クラスターのリソースグループを変更します。 | |
AnalyticDB for MySQL Enterprise Edition、Basic Edition、および Data Lakehouse Edition クラスターのリソースグループに関する情報をクエリします。 | |
AnalyticDB for MySQL Enterprise Edition、Basic Edition、および Data Lakehouse Edition クラスターのリソース使用量に関する情報をクエリします。 |