プリエンプティブル VM

Cloud Dataproc クラスタでは、標準の Compute Engine 仮想マシン(VM)に加え、プリエンプティブル VM とも呼ばれるプリエンプティブル VM インスタンスを使用できます。重要性の低いデータ処理の 1 時間あたりの計算費用や大規模なクラスタの作成にかかる総費用を低く抑えたい場合には、プリエンプティブル インスタンスの使用をご検討ください。詳しくは、Cloud Dataproc の料金に関するドキュメントをご覧ください。

Cloud Dataproc でのプリエンプティブルの動作

クラスタにプリエンプティブル インスタンスを追加すると、そのインスタンスではクラスタのプリエンプティブルでないワーカーノードのマシンタイプが使用されます。たとえば、n1-standard-4 マシンタイプを使用するワーカーを含めてクラスタを作成した場合、そのクラスタに追加したすべてのプリエンプティブル インスタンスでも n1-standard-4 マシンが使用されます。クラスタに対してプリエンプティブル ワーカーを追加または削除しても、クラスタのプリエンプティブルでないワーカーの数には影響を与えません。

プリエンプティブル インスタンスは他のタスクに必要な場合には再利用されるため、Cloud Dataproc はプリエンプティブル ワーカーのみが含まれているマネージド インスタンス グループにプリエンプティブル インスタンスをセカンダリ ワーカーとして追加します。マネージド グループには、再利用のために失われたワーカーが容量の許す限り自動的に再追加されます。たとえば、2 つのプリエンプティブル マシンが再利用され、クラスタから削除された場合、この 2 つのインスタンスは再追加できるだけの容量が使用できるようになればそのときにクラスタに再追加されます。

Cloud Dataproc クラスタでプリエンプティブル ワーカーを使用するときには、次のルールが適用されます。

  • 処理のみ - プリエンプティブルはいつでも再利用できるため、プリエンプティブル ワーカーはデータを保存しません。Cloud Dataproc クラスタに追加されているプリエンプティブルは、処理ノードとしてのみ機能します。
  • プリエンプティブルのみのクラスタなし - クラスタのすべてのワーカーが失われないようにするため、Cloud Dataproc ではプリエンプティブルのみのクラスタを作成できません。--num-preemptible-workers を指定した gcloud dataproc clusters create コマンドを使用し、--num-workers で多くの標準のワーカーも指定しなかった場合は、Cloud Dataproc が 2 つのプリエンプティブルでないワーカーをクラスタに自動的に追加します。
  • 永続ディスクサイズ - デフォルトとして、すべてのプリエンプティブル ワーカーが 100GB またはメインワーカーのブート ディスク サイズ未満で作成されます。このディスク容量は、データをローカルのキャッシュに保存するために使用され、HDFS では使用できません。クラスタ作成時に gcloud dataproc clusters create --preemptible-worker-boot-disk-size コマンドでデフォルトのディスクサイズをオーバーライドすることができます。このフラグは、クラスタの作成時にプリエンプティブル ワーカーが割り当てられなかった場合でも指定できます。

クラスタでのプリエンプティブルの使用

Google Cloud SDK の gcloud コマンドライン ツール、または Google Cloud Console を使用して、Cloud Dataproc API clusters.patch リクエストによって、Cloud Dataproc クラスタで使用されるプリエンプティブル インスタンスの追加、更新、削除を行えます。

gcloud コマンド

クラスタを作成するときに、クラスタにプリエンプティブル インスタンスを追加するには、gcloud dataproc clusters create コマンドを使用します。クラスタを作成した後でプリエンプティブル インスタンスを追加または削除するには、gcloud dataproc clusters update コマンドを使用します。どちらのコマンドも、--num-preemptible-workers 引数を使用してクラスタで使用するプリエンプティブル インスタンスの数を指定します。

プリエンプティブル インスタンスがあるクラスタの作成

プリエンプティブル インスタンスがあるクラスタを作成するには、--num-preemptible-workers 引数を指定して gcloud dataproc clusters create コマンドを使用します。


次のコマンドでは、2 つのプリエンプティブル インスタンスと 2 つの非プリエンプティブル インスタンスがあるクラスタ「my-test-cluster」を作成します。

    gcloud dataproc clusters create my-test-cluster --num-preemptible-workers 2
    Waiting on operation [operations/projects/project-id/operations/...].
    clusterName: my-test-cluster
      ...
    secondaryWorkerConfiguration:
        - dataproc-1-sw-2skd
        - dataproc-1-sw-l20p
        isPreemptible: true
    ...
    

プリエンプティブル インスタンスがあるクラスタの更新

プリエンプティブル インスタンスを追加または削除するクラスタを更新するには、--num-preemptible-workers 引数を指定して gcloud dataproc clusters update コマンドを使用します。


次のコマンドでは、2 つのプリエンプティブル インスタンスを使用する「my-test-cluster」というクラスタを更新します。

    gcloud dataproc clusters update my-test-cluster --num-preemptible-workers 2
    Waiting on operation [operations/projects/project-id/operations/...].
    Waiting for cluster update operation...done.
    Updated [https://dataproc.googleapis.com/...].
    clusterName: my-test-cluster
      ...
    secondaryWorkerConfiguration:
        - dataproc-1-sw-2skd
        - dataproc-1-sw-l20p
        isPreemptible: true
    ...
    

クラスタからすべてのプリエンプティブル インスタンスを削除する

クラスタからすべてのプリエンプティブル ワーカーを削除するには、--num-preemptible-workers0 に設定して、gcloud dataproc clusters update コマンドを使用します。


次のコマンドでは、クラスタからすべてのプリエンプティブル ワーカーを削除します。

    gcloud dataproc clusters update cluster-name --num-preemptible-workers 0
    

REST API

Cloud Dataproc clusters.patch API を使用して、プリエンプティブル ノードの追加や削除を行います。


次の PATCH リクエストでは、2 つのプリエンプティブル ワーカーがあるクラスタを更新します。

    PATCH /v1/projects/cluster-name/regions/us-central1/clusters/cluster-1?updateMask=config.secondary_worker_config.num_instances
    {
      "config": {
        "secondaryWorkerConfig": {
          "numInstances": 2
        }
      },
      "labels": null
    }
    

Console

Cloud Console から Cloud Dataproc クラスタを作成する際に、プリエンプティブル ワーカーの数を指定できます。クラスタを作成したら、Cloud Console からクラスタ構成を編集して、プリエンプティブル ワーカーの追加や削除を行います。

プリエンプティブル インスタンスがあるクラスタの作成

Cloud Console で Cloud Dataproc の [クラスタの作成] ページで [プリエンプティブル ワーカー、バケット、ネットワーク、バージョン、初期化オプション、アクセス オプション] というタイトルの展開パネルを開きます。

新しいクラスタにプリエンプティブル ワーカーを追加するには、[Nodes] 項目に正数を指定します。

プリエンプティブル インスタンスがあるクラスタの更新

クラスタを作成した後でクラスタ内のプリエンプティブル ワーカーの数を編集するには、[クラスタの詳細ページの [構成] タブにある [編集] ボタンをクリックします。

プリエンプティブル ワーカーの数を変更するには、[Preemptible worker nodes] 項目に新しい値を指定します。

クラスタからすべてのプリエンプティブル インスタンスを削除する

クラスタからすべてのプリエンプティブル インスタンスを削除するには、上記のようにクラスタ構成を更新し、[Preemptible worker nodes] 項目で 0 を指定します。