スケジュールされたクラスタの停止

非アクティブな クラスタに対する Google Cloud 料金の発生を回避するため、またはクラスタ料金の発生を回避するためにクラスタを削除して再作成する必要がないようにするには、Managed Service for Apache Spark クラスタのスケジュールされた停止機能を使用します。これにより、すべての クラスタ VM を停止することができます。停止した VM に対して料金は発生しませんが、永続ディスクなどの関連リソースには引き続き料金が発生します。

クラスタを停止すると、すべてのクラスタ VM が停止し、実行中のジョブは失敗します。クラスタが停止すると、クラスタの更新、 クラスタへのジョブの送信、または Managed Service for Apache Spark コンポーネント ゲートウェイを使用したクラスタ上のオプション コンポーネントへのアクセスができなくなります。 クラスタを停止した後、クラスタを再起動 して作業を再開できます。

クラスタのスケジュールされた停止は、2.2.42 以降、2.1.76 以降、2.0.57 以降のイメージ バージョンで作成されたクラスタで使用できます。

機能

  • クラスタは、指定したアイドル期間の経過後、指定した時刻、またはクラスタ作成リクエストから指定した期間の経過後に停止できます。

  • クラスタのスケジュールされた停止は、セカンダリ ワーカーを含むクラスタとゼロスケール クラスタをサポートしています。

  • クラスタのスケジュールされた停止構成を更新またはキャンセルできます。

制限事項と考慮事項

  • クラスタのスケジュールされた停止は、ローカル SSD を使用するクラスタではサポートされていません。
  • クラスタのスケジュールされた停止構成を更新できますが、開始された停止オペレーションは続行されます。停止オペレーションが開始されたかどうかを確認するには、Cloud Logging でクラスタログを調べます。
  • 過去のスケジュールされた停止時間があるクラスタで停止スケジュールを更新すると、スケジュールされた停止構成が削除されます。スケジュールされた停止を再度有効にするには、更新リクエストに将来の時刻を含めます。

スケジュールされたクラスタの停止を無効にするアクション

クラスタの実行中に次の操作を行うと、無効化アクションが元に戻されるまで、クラスタのスケジュールされた停止が無効になります。

クラスタのアイドル時間の計算

クラスタがアイドル状態と見なされるには、次の条件を満たす必要があります。

  • クラスタの作成が完了している(クラスタのプロビジョニングと起動にかかった時間はアイドル時間の計算から除外されます)。
  • クラスタでジョブが実行されていない
  • クラスタが STOPPED 状態ではない

クラスタにジョブを送信するか、クラスタを停止すると、アイドル時間の計算がリセットされます。

dataproc:dataproc.cluster-ttl.consider-yarn-activity クラスタ・プロパティは、以下のようにクラスタのアイドル時間の計算に影響します。

  • このプロパティはデフォルトで有効(true に設定)になっています。
  • このプロパティが有効になっている場合、クラスタのアイドル時間の計算を開始してインクリメントを継続するには、YARN アクティビティと Managed Service for Apache Spark Jobs API アクティビティの両方がアイドル状態になっている必要があります。
    • YARN アクティビティには、保留中と実行中の YARN アプリケーションが含まれます。
    • Managed Service for Apache Spark Jobs API アクティビティには、Managed Service for Apache Spark Jobs API に送信された保留中および実行中のジョブが含まれます。
  • このプロパティが false に設定されている場合、クラスタのアイドル時間の計算は、Managed Service for Apache Spark Jobs API アクティビティがアイドル状態の場合にのみ開始され、継続されます。

スケジュールされたクラスタの停止を使用する

Google Cloud コンソール

コンソールを使用してクラスタを作成するときに、スケジュールされた停止値を次のように設定できます。 Google Cloud

  1. [**クラスタを作成**] ページを開きます。
  2. [費用管理の設定を定義する] で [必要に応じて保持ポリシーを設定して費用を管理します]、 クラスタの停止(またはクラスタの削除)の設定を選択します。

gcloud CLI

Google Cloud CLI または Managed Service for Apache Spark API を使用してクラスタを作成するときに、スケジュールされた停止値を設定できます。クラスタを作成した後、クラスタを更新して、クラスタに以前に設定されたクラスタのスケジュールされた停止値を変更または削除できます。

フラグ 説明 最も細かい粒度 最小値 最大値
--stop-max-idle1 クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタがアイドル状態(作成後または起動後)になってから、クラスタの停止が開始されるまでの期間。期間は IntegerUnit 形式で指定します。単位は「s、m、h、d」(それぞれ秒、分、時間、日)のいずれかにできます。たとえば、「30m」または「1d」(クラスタがアイドル状態になってから 30 分または 1 日)とします。 1 秒 5 分 14 日間
--no-stop-max-idle クラスタ更新コマンドにのみ適用されます。以前に設定した --stop-max-idle フラグによるクラスタのスケジュールされた停止をキャンセルします。 該当なし 該当なし 該当なし
--stop-expiration-time2 クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタの停止を開始する時点を ISO 8601 の日付時刻形式で指定します。タイムスタンプ生成ツールを使用して、正しい形式の日時を生成できます。たとえば、「2017-08-22T13:31:48-08:00」は UTC -8:00 のタイムゾーンの 13:21:48 を有効期限として設定します。1 秒現時点から 10 分 現時点から 14 日間
--stop-max-age2 クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタ作成リクエストを送信してから、クラスタの停止が開始されるまでの期間。期間は IntegerUnit 形式で指定します。単位は「s、m、h、d」(秒、分、時間、日)のいずれかにできます。たとえば、「30m」(今から 30 分間)、「1d」(今から 1 日)のようにします。 1 秒 10 分 14 日間
注:
  1. クラスタの作成リクエストまたは更新リクエストで、stop-expiration-time フラグまたは stop-max-age フラグとともに stop-max-idle フラグを渡すことができます。最初に true となるほうがクラスタの停止を行います。
  2. クラスタの作成または更新コマンドには、stop-expiration-time フラグまたは stop-max-age フラグのいずれかを渡すことができますが、両方を渡すことはできません。

クラスタ作成の例:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --stop-expiration-time=TIME \
    ... other flags ...

クラスタ更新の例:

例:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --no-stop-max-age \
    ... other flags

REST API

クラスタのスケジュールされた停止値を作成または更新するには、次の表に示す Managed Service for Apache Spark API ClusterLifecycleConfig フィールドと値を、Managed Service for Apache Spark cluster.create または cluster.patch API リクエストの一部として設定します。

フラグ 説明 最も細かい粒度 最小値 最大値
idleStopTtl1 クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタの作成または更新後にクラスタがアイドル状態になってから、クラスタの停止が開始されるまでの期間。秒単位の期間を小数点以下 9 桁までの値で指定し、末尾に「s」を付加します。例: 「3.5s」 以前に設定した idleDeleteTtl 値をキャンセルするには、空の期間を指定した cluster.patch リクエストを送信します。 1 秒 5 分
14 日間
autoStopTime2 クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタの停止を開始する時間。RFC 3339 UTC「Zulu」形式のタイムスタンプをナノ秒単位の精度で指定します。例: 2014-10-02T15:01:23.045123456Z。 1 秒 現時点から 10 分 現時点から 14 日間
autoStopTtl2 クラスタ作成リクエストまたはクラスタ更新リクエストを送信してから、クラスタの停止が開始されるまでの期間。秒単位の期間を小数点以下 9 桁までの値で指定し、末尾に「s」を付加します。例: 「3.5s」 1 秒 10 分。
以前に設定した autoStopTtl 値をキャンセルするには、空の期間を指定した cluster.patch リクエストを送信します。
14 日間
注:
  1. クラスタの作成リクエストまたは更新リクエストで、stop-expiration-time フラグまたは stop-max-age フラグとともに stop-max-idle フラグを渡すことができます。最初に true となるほうがクラスタの停止を行います。
  2. クラスタの作成または更新コマンドには、stop-expiration-time フラグまたは stop-max-age フラグのいずれかを渡すことができますが、両方を渡すことはできません。

スケジュールされた削除と停止を使用する

クラスタのスケジュールされた削除でクラスタのスケジュールされた停止も使用する場合は、クラスタの作成または更新時に次の制約事項に注意してください。

  • stop-max-idle 期間は、delete-max-idle 期間以下にするか、delete-max-age または delete-expiration-time の結果の期間以下にする必要があります。

  • stop-max-agestop-expiration-time はそれぞれ delete-max-agedelete-expiration-time より後の日付である必要があります。

スケジュールされた停止のクラスタ設定を表示する

Google Cloud コンソール

  • クラスタのスケジュールされた停止の設定を表示するには、コンソールで Managed Service for Apache Spark の[クラスタ] ページからクラスタ名を選択します。 Google Cloud
  • クラスタの詳細ページで [構成] タブを選択します。クラスタ構成リストに移動して、 スケジュールされた停止の設定を表示します。

gcloud CLI

gcloud dataproc clusters list コマンドを使用して、クラスタでスケジュールされた停止が有効になっていることを確認できます。

 gcloud dataproc clusters list \
     --region=REGION

出力例:

...
NAME         WORKER_COUNT ... SCHEDULED_STOP
CLUSTER_ID   NUMBER       ... enabled
...

gcloud dataproc clusters describe コマンドを使用して、クラスタの LifecycleConfig のスケジュールされた停止の設定を確認できます。

gcloud dataproc clusters describe CLUSTER_NAME \
    --region=REGION

出力例:

...
lifecycleConfig:
  autoStopTime: '2018-11-28T19:33:48.146Z'
  idleStopTtl: 1800s
  idleStartTime: '2018-11-28T18:33:48.146Z'
...

autoStopTimeidleStopTtl の値はユーザーが設定します。Managed Service for Apache Spark は idleStartTime 値を生成します。この値は、クラスタのアイドル状態が開始された時刻の最新値です。

Managed Service for Apache Spark はジョブ アクティビティの停止に基づいて idleStartTime を計算しますが、クラスタのスケジュールされた停止のメカニズムでは、idleStartTime とクラスタの最終起動時間の両方が考慮されます。 具体的には、ユーザーまたは Managed Service for Apache Spark によってクラスタが停止されると、スケジュールされた停止機能のアイドル状態の計算がリセットされます。つまり、クラスタの次回起動時に、スケジュールされた停止までのカウントダウンが再開されます。ただし、停止したクラスタを再起動しても、idleStartTime 自体はリセットされません。停止前のジョブの非アクティブ状態の最後の発生が引き続き反映されます。

したがって、Managed Service for Apache Spark が idleStopTtl に基づいてクラスタを停止するには、次の 2 つの条件を満たす必要があります。

  1. クラスタは、最後に起動してから idleStopTtl で指定された期間、アイドル状態である必要があります。
  2. クラスタは、最後の idleStartTime リセットから idleStopTtl で指定された期間、アイドル状態である必要があります。

REST API

クラスタでスケジュールされた停止が有効になっているか確認するには、clusters.list リクエストを行います。