非アクティブなクラスタに対して Google Cloud の料金が発生しないようにするには、クラスタの作成時に Dataproc のクラスタのスケジュール設定された削除機能を使用します。この機能には、次のイベントが発生したときにクラスタを削除するオプションがあります。
- 指定したクラスタ アイドル期間の経過後
- 指定した将来の時刻
- クラスタ作成リクエストの送信時点から始まる、指定した期間の経過後
スケジュール設定された削除を無効にするアクション
クラスタの実行中に次の操作を行うと、無効化アクションが取り消されるまで、スケジュール設定された削除が無効になります。
- Dataproc サービス エージェント サービス アカウントの Dataproc サービス エージェントのロールの IAM を削除する
- クラスタ プロジェクトで Dataproc API を無効にする
- スケジュールされた削除クラスタ VM で Compute Engine VM の削除保護を有効にする
- Dataproc サービス エージェント サービス アカウント(コントロール プレーン ID)が境界の範囲内にない場合に VPC-Service Controls を有効にする
クラスタのアイドル時間を計算する
スケジュール設定された削除を使用すると、指定したクラスタのアイドル時間が経過した後にクラスタを削除できます。アイドル時間は、クラスタの作成とクラスタのプロビジョニングが完了した後に計算されます。アイドル時間の計算は、クラスタで実行中のジョブがなくなったときに開始されます。
dataproc:dataproc.cluster-ttl.consider-yarn-activity
クラスタ・プロパティは、以下のようにクラスタのアイドル時間の計算に影響します
- このプロパティはデフォルトで有効(
true
に設定)になっています。 - このプロパティが有効になっている場合、クラスタのアイドル時間の計算を開始してインクリメントを継続するには、YARN アクティビティと Dataproc Jobs API アクティビティの両方がアイドル状態になっている必要があります。
- YARN アクティビティには、保留中と実行中の YARN アプリケーションが含まれます。
- Dataproc Jobs API アクティビティには、Dataproc Jobs API にサブミットされた保留中のジョブと実行中のジョブが含まれます。
- このプロパティが
false
に設定されている場合、クラスタのアイドル時間の計算は、Dataproc Jobs API アクティビティがアイドル状態の場合にのみ開始され、継続されます。
dataproc:dataproc.cluster-ttl.consider-yarn-activity
プロパティは、1.4.64
、1.5.39
、2.0.13
以降のイメージ バージョンで作成されたクラスタに適用されます。それより前のイメージ バージョンで作成されたクラスタでは、クラスタのアイドル時間の計算には Dataproc Jobs API アクティビティのみが考慮されます。
クラスタのスケジュール設定された削除を使用する
Google Cloud CLI、Dataproc API、または Google Cloud コンソールを使用してクラスタを作成するときに、削除予定の値を設定できます。クラスタを作成した後、クラスタを更新して、クラスタに事前に設定されたスケジュール設定された削除の値を変更または削除できます。
gcloud CLI
次の表に示すフラグと値を gcloud dataproc clusters create
コマンドまたは gcloud dataproc clusters update
コマンドに渡すことで、クラスタで削除スケジュールの値を作成または更新できます。
gcloud CLI フラグ | 説明 | 値の粒度 | 最小値 | 最大値 |
---|---|---|---|---|
--delete-max-idle 1 |
クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタが作成または更新されて使用可能な状態になった後、アイドル状態になってからクラスタの削除が開始されるまでの期間。期間は IntegerUnit 形式で指定します。単位は「s、m、h、d」(それぞれ秒、分、時間、日)のいずれかにできます。例: 「30m」: クラスタがアイドル状態になってから 30 分。 |
1 秒 | 5分 | 14 日 |
--no-delete-max-idle |
クラスタ更新コマンドにのみ適用されます。以前の delete-max-idle フラグ設定によるクラスタ削除をキャンセルします。 |
なし | なし | なし |
--delete-expiration-time 2 |
クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタの削除を開始する時点を ISO 8601 の日付時刻形式で指定します。正しい形式の日時を生成するには、Timestamp Generator を使用します。たとえば、「2017-08-22T13:31:48-08:00」は UTC -8:00 のタイムゾーンの 13:21:48 を有効期限として設定します。 | 1 秒 | 現時点から 10 分 | 現時点から 14 日間 |
--delete-max-age 2 |
クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタ作成リクエストを送信してから、クラスタの削除が開始されるまでの期間。期間は IntegerUnit 形式で指定します。単位は「s、m、h、d」(それぞれ秒、分、時間、日)のいずれかにできます。例: 「30m」: 今から 30 分後、「1d」: 今から 1 日後。 |
1 秒 | 10 分 | 14 日 |
--no-delete-max-age |
クラスタ更新コマンドにのみ適用されます。以前の delete-max-age フラグまたは delete-expiration-time フラグの設定によるクラスタの自動削除をキャンセルします。 |
該当なし | 該当なし | 該当なし |
- クラスタの作成リクエストまたは更新リクエストで、
delete-expiration-time
フラグまたはdelete-max-age
フラグとともにdelete-max-idle
フラグを渡すことができます。最初に true となる方がクラスタの削除を行います。 - クラスタの作成または更新コマンドには、
delete-expiration-time
フラグまたはdelete-max-age
フラグのいずれかを渡すことができますが、両方を渡すことはできません。
クラスタ作成の例:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --delete-max-idle=DURATION \ --delete-expiration-time=TIME \ ... other flags ...
クラスタの更新の例:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --delete-max-idle=DURATION \ --no-delete-max-age \ ... other flags
REST API
クラスタのスケジュール設定された削除値を作成または更新するには、次の表に示す Dataproc API の ClusterLifecycleConfig フィールドと値を、Dataproc の cluster.create または cluster.patch API リクエストの一部として設定します。
API フィールド | 説明 | 値の粒度 | 最小値 | 最大値 |
---|---|---|---|---|
idleDeleteTtl 1 |
クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタが作成または更新されて使用可能な状態になった後、アイドル状態になってからクラスタの削除が開始されるまでの期間。新しい値でクラスタを更新する場合、新しい値は以前に設定した値よりも大きくする必要があります。秒単位の期間を小数点以下 9 桁までの値で指定し、末尾に「s」を付加します。例: 「3.5s」以前に設定した idleDeleteTtl 値をキャンセルするには、空の期間を送信します。 |
1 秒 | 5分 | 14 日 |
autoDeleteTime 2 |
クラスタの作成コマンドとクラスタの更新コマンドに適用されます。クラスタの削除を開始する時間。新しい時刻でクラスタを更新する場合、新しい時刻は以前に設定した時刻よりも後にする必要があります。更新時に autoDeleteTime に空の値が設定されている場合、既存の自動削除はキャンセルされます。RFC 3339 UTC「Zulu」形式のタイムスタンプを、ナノ秒単位の精度で指定します。例: 「2014-10-02T15:01:23.045123456Z」。 |
1 秒 | 現時点から 10 分 | 現時点から 14 日間 |
autoDeleteTtl 2 |
クラスタ作成リクエストまたはクラスタ更新リクエストを送信してから、クラスタの削除が開始されるまでの期間。クラスタを更新する場合、新しいスケジュール設定された削除時間(更新リクエストの時刻 + 新しい期間)は、以前に設定されたクラスタ削除時刻よりも後にする必要があります。以前に設定した autoDeleteTtl 値をキャンセルするには、空の値を送信します。秒単位の期間を小数点以下 9 桁までの値で指定し、末尾に「s」を付加します。例: 「3.5s」 |
1 秒 | 10 分 | 14 日 |
- クラスタの作成リクエストまたは更新リクエストでは、
idleDeleteTtl
とautoDeleteTime
またはautoDeleteTtl
のいずれかを設定または更新できます。最初に true となる方がクラスタの削除を行います。 - リクエストで
autoDeleteTime
またはautoDeleteTtl
のいずれかを設定または更新できますが、両方は設定できません。
コンソール
- Dataproc の [クラスタの作成] ページを開きます。
- [クラスタのカスタマイズ] パネルを選択します。
- [スケジュール設定された削除] セクションで、クラスタに適用するオプションを選択します。
スケジュール設定された削除のクラスタ設定を表示する
gcloud CLI
gcloud dataproc clusters list
コマンドを使用して、クラスタでスケジュール設定された削除が有効になっていることを確認できます。
gcloud dataproc clusters list \ --region=REGION
... NAME WORKER_COUNT ... SCHEDULED_DELETE CLUSTER_ID NUMBER ... enabled ...
gcloud dataproc clusters describe
コマンドを使用して、クラスタの LifecycleConfig
のスケジュール設定された削除の設定を確認できます。
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
... lifecycleConfig: autoDeleteTime: '2018-11-28T19:33:48.146Z' idleDeleteTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
autoDeleteTime
と idleDeleteTtl
は、クラスタで設定されているスケジュール設定された削除の構成値です。Dataproc は idleStartTime
値を生成します。この値は、クラスタのアイドル状態が開始された時刻の最新値です。クラスタがアイドル状態のままの時間が idleStartTime
+ idleDeleteTtl
に達すると、クラスタは Dataproc によって削除されます。
REST API
クラスタでスケジュール設定された削除が有効になっているか確認するには、clusters.list リクエストを行います。
コンソール
- クラスタのスケジュール設定された削除の設定を表示するには、 Google Cloud コンソールで Dataproc のクラスタページからクラスタ名を選択します。
- クラスタの詳細ページで、[構成] タブを選択します。クラスタ構成リストに移動して、スケジュール設定された削除の設定を表示します。