Sekundäre Dataproc-Worker

Dataproc-Cluster können nicht nur Standard-Compute Engine-VMs als Dataproc-Worker (genannt „primäre“ Worker) verwenden, sondern auch secondary-Worker.

Die folgenden Eigenschaften gelten für alle sekundären Worker in einem Dataproc-Cluster:

  • Nur Verarbeitung – Sekundäre Worker speichern keine Daten. Sie funktionieren nur als Knotenknoten. Daher können Sie sekundäre Worker verwenden, um die Computing-Skalierung zu skalieren, ohne den Speicher zu skalieren.

  • Keine nur sekundäre-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.

  • Maschinentyp: Sekundäre Worker verwenden standardmäßig den Maschinentyp der primären Worker des Clusters. Wenn Sie beispielsweise einen Cluster mit primären Workern erstellen, die n1-standard-4-Maschinentypen verwenden, werden standardmäßig alle sekundären Worker, die dem Cluster hinzugefügt wurden, ebenfalls n1-standard-4-Maschinen verwenden.

    Statt den standardmäßigen primären Worker-Maschinentyp für sekundäre Worker zu verwenden, können Sie eine oder mehrere sortierte Listen von Maschinentypen für sekundäre Worker angeben. Weitere Informationen finden Sie unter Flexible VMs in Dataproc.

  • Größe des nichtflüchtigen Speichers – Die sekundären Worker werden standardmäßig mit der kleineren Größe von 1.000 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. Bei der Erstellung eines Clusters können Sie den Standardspeicherplatz mit dem Befehl gcloud dataproc clusters create --secondary-worker-boot-disk-size überschreiben. Sie können dieses Flag auch dann angeben, wenn der Cluster beim Erstellen keine sekundären Worker hat.

  • Asynchrone Erstellung: Wenn Sie durch Erstellen oder Skalieren eines Clusters sekundäre Worker hinzufügen, werden die sekundären Worker möglicherweise nicht zum Zeitpunkt der Erstellung oder Aktualisierung bereitgestellt. Das liegt daran, dass Dataproc sekundäre Worker mithilfe von verwalteten Instanzgruppen verwaltet, die VMs asynchron erstellen, sobald sie bereitgestellt werden können (sieheStatus verwalteter Instanzen prüfen).

Sekundäre Worker auf Abruf und nicht auf Abruf

Es gibt drei Arten von sekundären Workern: Spot-VMs, standardmäßige VMs auf Abruf und nicht auf Abruf verfügbare VMs. Der standardmäßige sekundäre Dataproc-Worker-Typ ist die Standard-VM auf Abruf. Sie können eine Mischung aus Spot- und nicht auf Abruf verwendeten sekundären Workern angeben.

Beispiel: Wenn Sie beim Erstellen eines Clusters drei sekundäre Worker auswählen, können Sie drei Spot-VMs, drei VMs auf Abruf, drei nicht auf Abruf verfügbare VMs oder eine Kombination aus Spot- und nicht auf Abruf verfügbaren Workern angeben.

Worker auf Abruf

  • 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 zu erstellen. Mit dem Google Cloud-Preisrechner können Sie die Kosten schätzen.

  • Die besten Ergebnisse erzielen Sie, wenn die Anzahl von Workern auf Abruf in Ihrem Cluster weniger als 50% der Gesamtzahl aller Worker (primäre und alle sekundären Worker) im Cluster beträgt.

  • Bei der Verwendung von Workern auf Abruf werden Ihre Jobs höchstwahrscheinlich eine größere Anzahl an vorübergehenden Ausfällen einzelner Worker-Aufgaben im Vergleich zu Jobs haben, die mit Workern ausgeführt werden, die nicht auf Abruf sind. Damit die Jobtoleranz für Aufgabenfehler auf niedriger Ebene erhöht wird, können Sie ähnliche Werte für Clusterattribute festlegen wie bei den Standardattributwerten für Autoscaling-Cluster. So werden die maximale Anzahl von Aufgabenwiederholungen erhöht und Jobfehler vermieden.

  • Kostenersparnis:Die Verwendung von VMs auf Abruf führt nicht immer zu Kosteneinsparungen, da Unterbrechungen zu einer längeren Ausführung von Jobs und damit zu höheren Jobkosten führen können. Die Verwendung des Enhanced Flexibility Mode (EFM) mit VMs auf Abruf kann zwar dazu beitragen, dieses Ergebnis zu mildern, die Gesamtkosteneinsparungen durch VMs auf Abruf variieren jedoch je nach Anwendungsfall. Im Allgemeinen eignen sich kurzlebige Jobs besser für die Verwendung von VMs auf Abruf, da die Wahrscheinlichkeit von Unterbrechungen während der Jobausführung geringer ist. Testen Sie verschiedene Joboptionen, z. B. keine VMs auf Abruf und VMs auf Abruf mit EFM, um die Kosten zu schätzen und die beste Lösung zu finden.

Worker ohne Vorbehalt

Sekundäre Worker auswählen

Sie können die Anzahl und den Typ der sekundären Worker angeben, wenn Sie einen Cluster über die Google Cloud Console, die gcloud CLI oder die Dataproc API erstellen.

  • Sie können Spot-Instanzen mit sekundären Workern nicht auf Abruf kombinieren.
  • 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. Labelaktualisierungen werden nicht an vorhandene sekundäre Worker ohne Abruf weitergegeben. Labelaktualisierungen werden an alle Worker weitergegeben, die einem Cluster nach einer Labelaktualisierung hinzugefügt wurden. Wenn Sie beispielsweise den Cluster hochskalieren, haben alle neuen primären und sekundären Worker die neuen Labels.

Console

Beim Erstellen eines Dataproc-Clusters über die Google Cloud Console können Sie die Anzahl der sekundären Worker angeben. Nachdem ein Cluster erstellt wurde, können Sie sekundäre Worker hinzufügen und entfernen, indem Sie die Clusterkonfiguration in derGoogle Cloud -Konsole bearbeiten.

Cluster mit sekundären Workern erstellen

Sie können die Anzahl und den Typ der sekundären Worker, die auf einen neuen Cluster angewendet werden sollen, im Abschnitt Sekundäre Worker-Knoten des Steuerfelds Knoten konfigurieren auf der Dataproc-Seite Cluster erstellen der Google Cloud Console festlegen. Geben Sie die Anzahl und den Typ der sekundären Worker in den Feldern Sekundäre Worker-Knoten bzw. Abrufbarkeit an.

Cluster mit sekundären Instanzen aktualisieren

Klicken Sie in der Google Cloud -Konsole auf der Seite Cluster auf den Namen des Clusters, um die Anzahl der sekundären Worker in einem Cluster zu aktualisieren. Auf der Seite Clusterdetails. Klicken Sie auf den Tab **Konfiguration**, dann auf Bearbeiten und aktualisieren Sie die Nummer im Feld „Sekundäre Worker-Knoten“.

Alle sekundären Instanzen aus einem Cluster entfernen

Wenn Sie alle sekundären Worker aus einem Cluster entfernen möchten, aktualisieren Sie die Clusterkonfiguration wie oben beschrieben und geben Sie im Feld „Sekundäre Worker-Knoten“ 0 an.

Google Cloud CLI-Befehl

Verwenden Sie den Befehl gcloud dataproc clusters create, um einem Cluster bei seiner Erstellung sekundäre Worker hinzuzufügen. Nachdem ein Cluster erstellt wurde, können Sie mit dem Befehl gcloud dataproc clusters update sekundäre Worker hinzufügen oder aus dem Cluster entfernen (die Anzahl, aber nicht der Typ der sekundären Worker kann aktualisiert werden).

Cluster mit sekundären Workern erstellen

Um einen Cluster mit sekundären Workern zu erstellen, verwenden Sie den Befehl gcloud dataproc clusters create mit dem Argument --num-secondary-workers. Sekundäre Worker sind standardmäßig VMs auf Abruf. Sie können sekundäre Worker nicht auf Abruf oder Spot-Worker angeben, wenn Sie einen Cluster erstellen, indem Sie das Flag --secondary-worker-type auf „non-preemptible“ oder „spot“ festlegen. In den folgenden Beispielen wird gezeigt, wie Sie einen Cluster mit den einzelnen sekundären Worker-Typen erstellen: „preemptible“ (Standard), „spot“ (auf Abruf) und „non-preemptible“. Mit zusätzlichen Flags können Sie Spot-Instanzen mit sekundären Workern, die nicht auf Abruf verfügbar sind, kombinieren.

Beispiel 1

Mit dem folgenden Befehl wird „cluster1“ mit zwei sekundären Standard-Workern auf Abruf (Standardtyp) erstellt.

gcloud dataproc clusters create cluster1 \
    --num-secondary-workers=2 \
    --region=us-central1
Beispiel 2

Der folgende Befehl verwendet das Flag secondary-worker-type, um den Cluster „cluster2“ mit zwei sekundären Spot-Workern (auf Abruf) zu erstellen.

gcloud dataproc clusters create cluster2 \
    --num-secondary-workers=2 \
    --secondary-worker-type=spot \
    --region=us-central1

Beispiel 3:

Der folgende Befehl verwendet das Flag secondary-worker-type, um den Cluster „cluster3“ mit zwei nicht präemptiven sekundären Workern zu erstellen.

gcloud dataproc clusters create cluster3 \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1
Größe des Bootlaufwerks sekundärer Worker ändern Die Kapazität für sekundäre Worker ist standardmäßig die geringere dieser beiden Größen: entweder 1.000 GB oder die Größe des Bootlaufwerks primärer Worker. Der Speicherplatz wird für das lokale Caching von Daten verwendet und ist nicht über HDFS verfügbar. Bei der Erstellung eines Clusters können Sie den Standardspeicherplatz mit dem Befehl gcloud dataproc clusters create --secondary-worker-boot-disk-size überschreiben. Dieses Flag kann auch dann angegeben werden, wenn der Cluster beim Erstellen keine sekundären Worker hat. Anfrage zur Clustererstellung über die Google Cloud Console stellen: Klicken Sie links unten auf der Dataproc-Seite Cluster erstellen auf die Links Entsprechende REST oder Befehlszeile, damit die Google Cloud Console eine entsprechende API REST-Anfrage oder einen Befehl des gcloud-Tools erstellt.

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 Flag --num-secondary-workers.

Beispiel

Mit dem folgenden Befehl wird example-cluster aktualisiert, um vier sekundäre Worker (mit dem Standardtyp oder dem Typ, der beim Erstellen des Clusters angegeben wurde) zu verwenden.

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=4 \
    --region=us-central1

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 „example-cluster“ entfernt.

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

REST API

Cluster mit sekundären Workern erstellen

Die Dataproc API clusters.create fügt sekundäre Worker einem Cluster hinzu, wenn der Cluster erstellt wird. In den folgenden Beispielen wird gezeigt, wie Sie einen Cluster mit den einzelnen sekundären Arbeitertypen erstellen: preemptible (Standard), spot (unterbrechbar) und non-preemptible. Mit zusätzlichen Feldern können Sie Spot-Instanzen mit sekundären Workern, die nicht auf Abruf verfügbar sind, kombinieren.

Beispiel 1

Mit der folgenden POST-Anfrage wird ein Cluster namens „cluster1“ mit zwei Standard-VM-Workern auf Abruf (Standardtyp) erstellt.


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

{
  "clusterName": "cluster1",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}
Beispiel 2

Mit der folgenden POST-Anfrage wird ein Cluster namens „cluster2“ mit zwei Spot-VM-Workern (auf Abruf) erstellt.


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

{
  "clusterName": "cluster2",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "SPOT"
    }
  }
}

Beispiel 3:

Mit der folgenden POST-Anfrage wird „cluster3“ mit zwei nicht auf Abruf verwendeten Workern erstellt.


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

{
  "clusterName": "cluster3",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

Cluster mit sekundären Workern 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 vier sekundären Workern aktualisiert (mit dem Standardtyp oder dem Typ, der beim Erstellen des Clusters angegeben wurde).


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 4
    }
  }
}
Anfrage zur Clustererstellung über die Google Cloud Console stellen: Klicken Sie links unten auf der Dataproc-Seite Cluster erstellen auf die Links Entsprechende REST oder Befehlszeile, damit die Google Cloud -Konsole eine entsprechende API REST-Anfrage oder einen Befehl der gcloud CLI erstellt.

Fehlerbehebung bei sekundären Workern

  • Probleme mit Dienstkontoberechtigungen:Sekundäre Worker werden über eine verwaltete Instanzgruppe erstellt. Bei einem Berechtigungsproblem wird der Fehler beim Erstellen sekundärer Worker nicht in den Dataproc-Logs gemeldet. Fehlerhafte Worker werden jedoch auf der Seite Clusterdetails in derGoogle Cloud Console auf dem Tab VM-Instanzen ohne grünes Häkchen aufgeführt. Wenn Sie die Auflistung aufrufen möchten, öffnen Sie die Dataproc-Seite Cluster und klicken Sie dann auf den Clusternamen, um die Seite Clusterdetails für den Cluster zu öffnen.

  • Probleme mit Berechtigungen für verwaltete Instanzgruppen:So prüfen Sie, ob ein Problem mit den Berechtigungen für verwaltete Instanzgruppen vorliegt:

    1. Suchen Sie den Namen der verwalteten Instanzgruppe (instanceGroupManagerName).

      Console

      1. Öffnen Sie die Dataproc-Seite Cluster und klicken Sie dann auf den Clusternamen, um die Seite Clusterdetails für den Cluster zu öffnen.
      2. Klicken Sie unten auf der Seite auf Entsprechende REST-Anfrage/-Antwort und sehen Sie sich den Wert von config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName an.

      Google Cloud CLI

      Führen Sie den Befehl gcloud dataproc clusters describe mit dem Flag --format aus, um die instanceGroupManagerName anzuzeigen.
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      REST API

      Senden Sie eine clusters.get-Anfrage , um den Wert von config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName zurückzugeben.
    2. Sehen Sie sich die Logs im Log-Explorer an.
    • Wählen Sie den Ressourcentyp Google Compute Engine Instance Group aus und filtern Sie nach dem Namen der verwalteten Instanzgruppe.

    • Alternativ können Sie einen Logging-Filter für `resource.type="gce_instance_group" and resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME anwenden.

Spot-Instanzen mit nicht auf Abruf verfügbaren sekundären Workern kombinieren

Sie können beim Erstellen eines Dataproc-Clusters eine Mischung aus Spot- und nicht auf Abruf verfügbaren sekundären Workern angeben.

Einstellungen für sekundäre Worker zum Mischen von Spot-Instanzen mit nicht auf Abruf verfügbaren sekundären Workern

Verwenden Sie die folgenden Einstellungen für sekundäre Worker, wenn Sie einen Dataproc-Cluster erstellen, um eine Mindestkapazität für sekundäre Worker zu erhalten, mit der Möglichkeit, die Kapazität zu erhöhen, wenn Spot-VMs verfügbar sind:

  • Anzahl der sekundären Worker:Die Gesamtzahl der sekundären Worker, die bereitgestellt werden sollen.

  • Sekundärer Worker-Typ:spot ist der sekundäre Worker-Typ, wenn Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombiniert werden.

  • standardCapacityBase:Die Anzahl der nicht auf Abruf verfügbaren (Standard-)Sekundärworker, die bereitgestellt werden sollen. Sekundäre Worker, die nicht auf Abruf verfügbar sind, werden vor anderen Arten von sekundären Workern bereitgestellt.

  • standardCapacityPercentAboveBase:Nachdem die Anzahl der sekundären Worker von standardCapacityBase erreicht wurde, wird die verbleibende Anzahl der sekundären Worker, die erforderlich ist, um die insgesamt angeforderte Anzahl von sekundären Workern zu erreichen, mit einer Mischung aus nicht auf Abruf verfügbaren und Spot-VMs gefüllt:

    • standardCapacityPercentAboveBase: Der Prozentsatz der verbleibenden sekundären Worker, die mit nicht präemptiven VMs gefüllt werden sollen.
    • Die verbleibende Anzahl, die erforderlich ist, um die Gesamtzahl der angeforderten sekundären Worker zu erreichen, wird mit Spot-VMs aufgefüllt.

Beispiel:

  • Anzahl der sekundären Worker: 15
  • standardCapacityBase: 5
  • standardCapacityPercentAboveBase 30%

Ergebnis:

  • Nicht unterbrechbar: 8 = 5 (standardCapacityBase) + 3 (30% der verbleibenden 10)
  • Spot: 7 (70% der verbleibenden 10)
  • Insgesamt = 15

Cluster mit einer Mischung aus Spot- und nicht auf Abruf verfügbaren sekundären Workern erstellen

Sie können die gcloud CLI oder die Dataproc API verwenden, um beim Erstellen eines Clusters Spot-Worker mit sekundären Workern zu kombinieren, die nicht auf Abruf sind.

gcloud

Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Cluster mit einer Mischung aus Spot- und nicht auf Abruf verwendeten sekundären Workern zu erstellen.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --secondary-worker-type=spot \
    --num-secondary-workers=NUMBER_SECONDARY_WORKERS \
    --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \
    --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \
    OTHER_FLAGS_AS_NEEDED

Hinweise:

API

Wenn Sie Spot- mit nicht präemptiblen sekundären Workern kombinieren möchten, legen Sie die Dataproc-API-Felder preemptibility, standardCapacityBase und standardCapacityPercentAboveBase als Teil einer cluster.create-Anfrage fest, wie im folgenden JSON-Beispiel gezeigt:

{
  "clusterName": "CLUSTER_NAME",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 15,
      "preemptibility": "spot",
      "instanceFlexibilityPolicy": {
        "provisioningModelMix": {
          "standardCapacityBase": STANDARD_CAPACITY_BASE
          "standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE
        }
      }
    }
  }
}

Hinweise:

Sekundäre Worker mit flexiblen VMs kombinieren

Sie können Spot- und nicht auf Abruf verfügbare sekundäre Worker kombinieren und beim Erstellen eines Clusters flexible VM-Formen für sekundäre Worker angeben.

Beispiel für die gcloud CLI:

gcloud dataproc clusters create cluster-name \
    --project=project-id \
    --region=us-central1 \
    --secondary-worker-type=spot \
    --num-secondary-workers=15 \
    --secondary-worker-standard-capacity-base=5 \
    --secondary-worker-standard-capacity-percent-above-base=30 \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
    ...other flags as needed

Mischungseigenschaften des sekundären Workers

In diesem Abschnitt werden einige der Verhaltensweisen und Merkmale beschrieben, die mit der Kombination von Spot- und nicht auf Abruf verfügbaren sekundären Workern verbunden sind.

Einstellungen für sekundäre Worker

Dataproc bevorzugt beim Planen von Anwendungen auf sekundären Workern weder Spot- noch nicht auf Abruf verwendete VMs.

Skalierung sekundärer Worker

Wenn sekundäre Worker durch Autoscaling oder manuelle Skalierung skaliert werden, behält Dataproc das angeforderte Verhältnis von Spot- zu nicht abrufbaren Instanzen bei, wenn sekundäre Worker hinzugefügt werden.

Einstellungen für die Mischung sekundärer Worker werden aktualisiert

Sie geben die Mischung aus Spot- und nicht auf Abruf verfügbaren sekundären Workern an, wenn Sie einen Dataproc-Cluster erstellen. Sie können die Einstellungen für die sekundäre Worker-Mischung nach dem Erstellen des Clusters nicht mehr ändern.

Vorzeitiges Beenden von sekundären Spot-Workern

  • Dataproc hat keinen Einfluss auf den Zeitpunkt des vorzeitigen Beendens von Spot-VMs (siehe Vorzeitiges Beenden von Spot-VMs).
  • Wenn es zu einer vorzeitigen Beendigung von Spot-VMs kommt, kann die sekundäre Worker-Gruppe vorübergehend mit reduzierter Kapazität ausgeführt werden, bis Compute Engine die vorzeitig beendeten VMs neu bereitstellt.
  • Dataproc fügt einer sekundären Worker-Gruppe keine Kapazität hinzu, die über die ursprünglichen Einstellungen der Gruppe hinausgeht.