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 alle sekundären Worker, die dem Cluster hinzugefügt wurden, ebenfalls n1-standard-4-Maschinen verwenden.

    Anstatt den Standardmaschinentyp für primäre Worker für sekundäre Worker zu verwenden, können Sie eine oder mehrere sortierte Listen mit 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 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 angeben, auch wenn der Cluster haben sekundäre Worker.

  • 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-präemptive VMs: Wenn Sie sekundäre Worker für Ihren Cluster angeben, müssen sie vom selben Typ sein. Der standardmäßige sekundäre Worker-Typ von Dataproc ist die standardmäßige VM auf Abruf.

Beispiel: Wenn Sie beim Erstellen eines Clusters drei sekundäre Worker auswählen, können Sie angeben, dass alle drei Spot-VMs, (Standard-)VMs auf Abruf oder nicht auf Abruf verfügbare VMs sein sollen. Sie können jedoch nicht angeben, dass jede einen anderen Typ haben soll.

Eine Spot-VM ist die neueste Art von Compute Engine. VM auf Abruf Es gilt das kostengünstigere Preismodell von Standard-VMs auf Abruf. Im Gegensatz zur Standard-VM auf Abruf mit einer maximalen Lebensdauer von 24 Stunden hat die Spot-VM jedoch keine maximale Lebensdauer. Sowohl Spot- als auch Standard-VMs auf Abruf werden zurückgefordert und aus einem Dataproc-Cluster entfernt, wenn sie von Google Cloud für andere Aufgaben benötigt werden.

Worker auf Abruf

  • Obwohl das Entfernen von Workern auf Abruf die Jobstabilität beeinträchtigen kann, können Sie Instanzen auf Abruf verwenden, um die Computing-Kosten pro Stunde zu senken. für die Verarbeitung nicht kritischer Daten oder zum Erstellen sehr großer Cluster mit geringer Gesamtkosten (Sie können den Google Cloud-Preisrechner verwenden. um die Kosten zu schätzen).

  • Für optimale Ergebnisse die Anzahl der Worker auf Abruf in Ihrem Cluster sollte weniger als 50% der Gesamtzahl aller Worker betragen (primäre plus alle sekundären Worker) in Ihrem Cluster.

  • Wenn Sie Worker auf Abruf verwenden, sind Ihre Jobs höchstwahrscheinlich mehr vorübergehende Fehler bei Aufgaben mit einem einzelnen Worker als bei Jobs die auf nicht präemptiven Workern ausgeführt werden. Um die Jobtoleranz auf eine untergeordnete Ebene zu erhöhen können Sie Werte für Cluster-Attribute festlegen, Standardattributwerte, die mit Autoscaling-Clustern verwendet werden zum Erhöhen der maximalen Anzahl von Aufgabenwiederholungen und zum Vermeiden von Jobs Störungen.

  • Kosteneinsparungen: Durch die Verwendung von VMs auf Abruf spart man nicht immer Einsparungen. da ein vorzeitiges Beenden zu einer längeren Jobausführung und höhere Jobkosten. Bei Verwendung des Modus für erweiterte Flexibilität (Enhanced Flexibility Mode, EFM) mit VMs auf Abruf kann dieses Ergebnis mindern. Die Gesamtkosteneinsparungen durch VMs auf Abruf variieren 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. Probieren Sie verschiedene Joboptionen aus, 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.

Nicht auf Abruf verfügbare Worker

  • Sie können einen Cluster mit sekundären Workern, die nicht auf Abruf sind, zum Skalieren erstellen ohne die Stabilität des Jobs zu beeinträchtigen. Geben Sie dazu „nicht auf Abruf“ als sekundären Worker-Typ an.

Sekundäre Worker verwenden

Sie können die Anzahl und den Typ der sekundären Worker beim Erstellen eines Clusters angeben über die Google Cloud Console gcloud-Befehlszeile oder die Dataproc API.

  • Sekundäre Worker müssen vom gleichen Typ sein.
  • 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. Label-Updates werden nicht an vorhandene sekundäre Worker (nicht auf 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

Sie können die Anzahl der sekundären Worker beim Erstellen von Dataproc angeben über die Google Cloud Console erstellen. Nachdem ein Cluster erstellt wurde, Sie können sekundäre Worker hinzufügen und entfernen, indem Sie die Clusterkonfiguration in der Google Cloud Console

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 Workerknoten“ bzw. „Abrufbarkeit“ an.

Cluster mit sekundären Instanzen aktualisieren

Klicken Sie in der Google Cloud Console 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 und dann auf BEARBEITEN und aktualisieren Sie die Nummer im Feld „Sekundäre Worker-Knoten”.

Alle sekundären Instanzen aus einem Cluster entfernen

Aktualisieren Sie den Cluster, um alle sekundären Worker aus einem Cluster zu entfernen wie zuvor erläutert, indem Sie 0 im Feld für sekundäre Worker-Knoten.

gcloud-Befehl

Verwenden Sie die Methode gcloud dataproc clusters create Befehl zum Hinzufügen sekundärer Worker zu einem Cluster, wenn der Cluster erstellt wird. 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 Zahl, 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. Beachten Sie, dass Sekundäre Worker sind standardmäßig VMs auf Abruf. Sie können beim Erstellen eines Clusters sekundäre Worker angeben, die nicht auf Abruf sind durch Festlegen von --secondary-worker-type=non-preemptible (Property dataproc:secondary-workers.is-preemptible.override) wird nicht mehr zur Angabe des Typs des sekundären Workers verwendet).

Beispiel 1

Mit dem folgenden Befehl wird "cluster1" erstellt. mit zwei sekundären Workern auf Abruf (Standardtyp).

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

Der folgende Befehl verwendet den secondary-worker-type Flag zum Erstellen von „cluster2“ mit zwei sekundären Spot-Workern (auf Abruf).

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

Beispiel 3:

Der folgende Befehl verwendet den secondary-worker-type Flag zum Erstellen von „cluster3“ mit zwei Sekundäre Worker nicht auf Abruf.

gcloud dataproc clusters create cluster3 \
    --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 „example-cluster“ aktualisiert um vier Sekundäre Worker (des Standardtyps oder -typs, der beim Erstellen des Clusters angegeben wurde).

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. Beachten Sie, dass Sekundäre Worker sind Standard auf Abruf VMs sind standardmäßig aktiviert.

Beispiel 1

Mit der folgenden POST-Anfrage wird „cluster1“ mit zwei standardmäßigen 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 „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:

Die folgende POST-Anfrage erstellt "cluster3". mit zwei Sekundäre Worker nicht auf Abruf.


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

Die folgende PATCH-Anfrage aktualisiert einen Cluster auf vier Sekundäre Worker (des Standardtyps oder -typs, 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
    }
  }
}

Fehlerbehebung bei sekundären Workern

  • Probleme mit Dienstkontoberechtigungen: Sekundäre Worker werden über eine verwaltete Instanzgruppe erstellt. Bei einem Berechtigungsproblem wird in den Dataproc-Logs nicht gemeldet, dass die Erstellung sekundärer Worker fehlgeschlagen ist. Die fehlgeschlagenen Worker werden jedoch in der Google Cloud Console auf der Seite Clusterdetails auf dem Tab VM-Instanzen ohne grünes Häkchen aufgeführt. Um den Eintrag anzuzeigen, öffnen Sie das Dataproc-Seite Cluster, Klicken Sie dann auf den Clusternamen, um die Seite Clusterdetails für den Cluster zu öffnen.

  • Probleme mit Berechtigungen für verwaltete Instanzgruppen:Prüfen, ob ein Problem vorliegt mit Berechtigungen für verwaltete Instanzgruppen:

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

      Console

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

      Google Cloud CLI

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

      REST API

      Reichen Sie eine clusters.get--Anfrage ein, 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 Name der verwalteten Instanzgruppe

    • Alternativ können Sie einen Logging-Filter auf `resource.type="gce_instance_group" und resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME