VMs auf Abruf

Zusätzlich zur Verwendung von standardmäßigen virtuellen Compute Engine-Maschinen (VMs) können Dataproc-Cluster präemptive VM-Instanzen verwenden, auch als präemptive VMs bekannt. Worker auf Abruf werden zurückgefordert und aus dem Cluster entfernt, wenn sie von Google Cloud für andere Aufgaben benötigt werden. Die potenzielle Entfernung von Workern auf Abruf kann sich auf die Stabilität von Jobs auswirken. Sie können jedoch Instanzen auf Abruf dafür nutzen, die Computing-Kosten pro Stunde für nicht kritische Datenverarbeitung zu verringern oder sehr große Cluster zu geringeren Gesamtkosten Weitere Informationen finden Sie in der Preisdokumentation zu Dataproc.

Funktionsweise von Workern auf Abruf mit Dataproc

Alle sekundären Worker, die zu einem Cluster hinzugefügt wurden, verwenden den Maschinentyp der primären Worker-Knoten des Clusters. Wenn Sie beispielsweise einen Cluster mit primären Workern erstellen, die n1-standard-4-Maschinentypen verwenden, werden alle sekundären Worker, die dem Cluster hinzugefügt wurden, ebenfalls n1-standard-4-Maschinen verwenden.

Worker auf Abruf werden zurückgefordert, wenn sie von Google Cloud für andere Aufgaben benötigt werden. Sie werden dem Cluster wieder hinzugefügt, sofern und wann die Kapazität zulässig ist. Wenn beispielsweise zwei Maschinen auf Abruf zurückgefordert und aus einem Cluster entfernt wurden, werden diese Instanzen dem Cluster noch einmal hinzugefügt, falls oder sobald Kapazitäten verfügbar sind.

Die folgenden Regeln gelten für alle sekundären Worker (auf Abruf und nicht auf Abruf) in einem Dataproc-Cluster:

  • Nur Verarbeitung – Sekundäre Worker speichern keine Daten. Sie funktionieren nur als Knotenknoten.

  • Keine sekundären Nur-Worker-Cluster: Ihr Cluster muss primäre Worker haben. Wenn Sie einen Cluster erstellen und die Anzahl der primären Worker nicht angeben, fügt Dataproc dem Cluster zwei primäre Worker hinzu.

  • Größe des nichtflüchtigen Speichers – Die sekundären Worker werden standardmäßig mit der kleineren Größe von 100 GB oder der Größe des Bootlaufwerks primärer Worker erstellt. Der Speicherplatz wird für das lokale Caching von Daten verwendet und ist nicht über HDFS verfügbar. Sie können die Standardlaufwerkgröße mit dem Befehl gcloud dataproc clusters create --secondary-worker-boot-disk-size beim Erstellen des Clusters überschreiben. Sie können dieses Flag auch dann angeben, wenn der Cluster beim Erstellen keine sekundären Worker hat.

Instanzen auf Abruf in einem Cluster

Sie können die Anzahl und den Typ der sekundären Worker (präemptiv und/oder nicht auf Abruf) angeben, wenn Sie einen Cluster über eine Dataproc API-Anfrage mit dem Cloud SDK erstellen und dabei das gcloud-Befehlszeilentool oder die Google Cloud Console verwenden.

Hinweise:

  • Ein Cluster kann entweder sekundäre Worker auf Abruf oder sekundäre nicht auf Abruf verwendete Worker enthalten, aber nicht beides.
  • Sie können den Cluster aktualisieren, nachdem er erstellt wurde, um die Anzahl zu ändern, jedoch nicht den Typ der sekundären Worker im Cluster.
  • Labelaktualisierungen werden innerhalb von 24 Stunden an alle sekundären Worker auf Abruf übertragen. Derzeit werden Labelaktualisierungen nicht an vorhandene sekundäre Worker ohne Abruf weitergegeben. Labelsaktualisierungen werden auch auf Worker angewendet, die einem Cluster nach der Labelaktualisierung hinzugefügt werden. Wenn Sie beispielsweise den Cluster hochskalieren, haben alle neuen primären und sekundären Worker die neuen Labels.

gcloud-Befehl

Verwenden Sie den Befehl gcloud dataproc clusters create, um einem Cluster bei seiner Erstellung Instanzen auf Abruf hinzuzufügen. Nachdem ein Cluster erstellt wurde, können Sie ihm mit dem Befehl gcloud dataproc clusters update Instanzen auf Abruf hinzufügen oder daraus entfernen.

Cluster mit Workern auf Abruf erstellen

Um einen Cluster mit Instanzen auf Abruf zu erstellen, verwenden Sie den Befehl gcloud dataproc clusters create mit dem Argument --num-secondary-workers. Beachten Sie, dass sekundäre Worker standardmäßig auf Abruf sind. Sie können jedoch nicht auf Abruf verwendete sekundäre Worker beim Erstellen eines Clusters hinzufügen, indem Sie --secondary-worker-type=non-preemptible festlegen (siehe Beispiel 2).

Beispiel 1

Der folgende Befehl erstellt einen Cluster namens "my-test-cluster" mit zwei Workern auf Abruf.

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

Beispiel 2

Der folgende Befehl verwendet das Flag secondary-worker-type, um den Cluster "my-test-cluster" mit zwei nicht präemptiven sekundären Workern zu erstellen.

gcloud dataproc clusters create my-test-cluster \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1

Cluster mit sekundären Workern aktualisieren

Wenn Sie einen Cluster zum Hinzufügen oder Entfernen sekundärer Worker aktualisieren möchten, verwenden Sie den Befehl gcloud dataproc clusters update mit dem Argument --num-secondary-workers.

Beispiel

Mit dem folgenden Befehl wird ein Cluster mit dem Namen "my-test-cluster" aktualisiert, um zwei sekundäre Worker zu verwenden.

gcloud dataproc clusters update my-test-cluster \
    --num-secondary-workers=2 \
    --region=us-central1
...
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
...

Alle sekundären Worker aus einem Cluster entfernen

Wenn Sie alle sekundären Worker aus einem Cluster entfernen möchten, verwenden Sie den Befehl gcloud dataproc clusters update, wobei --num-secondary-workers auf 0 gesetzt ist.

Beispiel

Mit dem folgenden Befehl werden alle sekundären Worker aus einem Cluster entfernt.

gcloud dataproc clusters update my-test-cluster \
    --num-secondary-workers=0 \
    --region=us-central1

REST API

Cluster mit Workern auf Abruf erstellen

Die Dataproc API clusters.create fügt Worker auf Abruf einem Cluster hinzu, wenn der Cluster erstellt wird. Beachten Sie, dass sekundäre Worker standardmäßig auf Abruf sind. Sie können Ihren Clustern jedoch nicht auf Abruf verwendete sekundäre Worker hinzufügen, wie in Beispiel 2 gezeigt.

Beispiel 1

Mit der folgenden POST-Anfrage wird ein Cluster mit zwei Workern auf Abruf erstellt.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster-name",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

Beispiel 2

Mit der folgenden POST-Anfrage wird ein Cluster mit zwei nicht auf Abruf verwendeten Workern erstellt.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster-name",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

Cluster mit Instanzen auf Abruf aktualisieren

Mit der Dataproc API clusters.patch können Sie sekundäre Worker hinzufügen und entfernen.

Beispiel

Mit der folgenden PATCH-Anfrage wird ein Cluster mit zwei sekundären Workern aktualisiert.


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

Console

Wenn Sie einen Dataproc-Cluster über die Cloud Console erstellen, können Sie die Anzahl der Worker auf Abruf angeben. Nachdem ein Cluster erstellt wurde, können Sie in der Cloud Console über die Clusterkonfiguration Worker auf Abruf hinzufügen und entfernen.

Cluster mit Instanzen auf Abruf erstellen

Öffnen Sie in der Cloud Console auf der Dataproc-Seite Cluster erstellen das maximierbare Feld "Worker auf Abruf, Bucket, Netzwerk, Version, Initialisierung und Zugriffsoptionen".

Fügen Sie dem neuen Cluster präemptive Worker hinzu, indem Sie im Feld Nodes eine positive Zahl angeben.

Cluster mit Instanzen auf Abruf aktualisieren

Nachdem der Cluster erstellt wurde, können Sie seine Anzahl von Workern auf Abruf ändern. Klicken Sie dazu auf der Seite Clusterdetails auf dem Tab Konfiguration auf Bearbeiten.

Geben Sie anschließend im Feld Worker-Knoten auf Abruf einen neuen Wert ein.

Alle Instanzen auf Abruf aus einem Cluster entfernen

Wenn Sie alle Instanzen auf Abruf aus einem Cluster entfernen möchten, aktualisieren Sie die Clusterkonfiguration wie oben beschrieben und geben Sie im Feld Worker-Knoten auf Abruf 0 an.