Cluster mit hoher Verfügbarkeit erstellen

In diesem Dokument wird beschrieben, wie Sie einen Managed Service for Apache Spark-Cluster im HO-Modus (High Obtainability) erstellen. Der Modus „Hohe Verfügbarkeit“ verbessert die Wahrscheinlichkeit, dass Cluster-VMs in Zeiten hoher Nachfrage oder Ressourcenbeschränkungen erfolgreich bereitgestellt werden. Dazu kann Managed Service for Apache Spark aus einer Reihe kompatibler Maschinentypen auswählen, anstatt beim Erstellen eines Clusters einen festen Maschinentyp zu erfordern.

Verwenden Sie den Modus „Hohe Verfügbarkeit“, um Cluster mit Anforderungen an die Rechenleistung für allgemeine Zwecke zu erstellen. So können Sie Fehler bei der Clustererstellung und -skalierung aufgrund von nicht verfügbaren VMs vermeiden.

Funktionsweise des Modus „Hohe Verfügbarkeit“

In Standardanfragen zur Clustererstellung geben Sie bestimmte Maschinentypen (z. B. n2-standard-4) für Clusterknoten an. Wenn dieser bestimmte Maschinentyp in einer Zone nicht verfügbar ist, schlägt die Erstellungsanfrage fehl.

Im Modus „Hohe Verfügbarkeit“ geben Sie flexible Ressourcenanforderungen für Master-, primäre Worker- und sekundäre Worker-Knoten anstelle von festen Maschinentypen an:

  • Anzahl der vCPU-Kerne: Sie fordern eine Zielanzahl von vCPUs pro VM-Instanz an (2, 4, 8, 16 oder 32 Kerne).
  • Hardwareklasse: Sie geben das Leistungs- und Speicherprofil an:

    • STANDARD: Bietet eine ausgewogene Konfiguration mit etwa 4 GB Arbeitsspeicher pro vCPU und Standardstufen für nichtflüchtigen Speicher. Aktuelle Kandidaten für Maschinentypen sind n4-standard, n4d-standard, n2-standard und n2d-standard (Rang 0-Präferenz) sowie c4-standard und c4d-standard (Rang 1-Präferenz).
    • PERFORMANCE: Bietet eine leistungsstarke Konfiguration mit etwa 8 GB Arbeitsspeicher pro vCPU und Laufwerkskonfigurationen höherer Stufen (höhere IOPS und höherer Durchsatz). Zu den aktuellen Kandidaten für Maschinentypen gehören n4-highmem, n4d-highmem, n2-highmem und n2d-highmem (Präferenz Rang 0) sowie c4-highmem und c4d-highmem (Präferenz Rang 1).
  • Anzahl der Instanzen: Sie geben die Anzahl der Instanzen für jede Gruppe an:

    • Master: muss 1 Instanz sein.
    • Primäre Worker: positive Ganzzahl.
    • Sekundäre Worker: nicht negative Ganzzahl.
  • Größe des Bootlaufwerks: Optionale Größe des Bootlaufwerks (z. B. 100 GB).

Managed Service for Apache Spark verwendet automatisch die Auto Zone-Platzierung, um Zonen in der Clusterregion zu bewerten und Kandidaten-Maschinentypen innerhalb der angeforderten Hardwareklasse auszuwählen, die über verfügbare Kapazität verfügen.

Anforderungen und Einschränkungen

Für den Modus „Hohe Verfügbarkeit“ gelten die folgenden Anforderungen und Einschränkungen:

  • Ressourcenkontingente: Ihr Projekt muss in der Clusterregion über ausreichende Compute Engine-Ressourcenkontingente für alle infrage kommenden Maschinenfamilien in der ausgewählten Hardwareklasse (N4, N4D, N2, N2D, C4 und C4D) verfügen. Da die zugrunde liegenden infrage kommenden Maschinentypen von Google gesteuert werden und sich jederzeit ändern können, sollten Sie sich nicht auf bestimmte Maschinentypen verlassen.
  • Zonenspezifikation: Sie können keine explizite --zone (oder zoneUri) angeben. Managed Service for Apache Spark wählt automatisch eine verfügbare Zone in der Region mithilfe der automatischen Zonenplatzierung aus.
  • Gegenseitiger Ausschluss bei festen Maschinen- und Knotenkonfigurationen:
    • Wenn Sie Master-, primäre Worker- oder sekundäre Worker-Knotengruppen mit flexiblen Konfigurationen (--master-flexible-config, --worker-flexible-config oder --secondary-worker-flexible-config) konfigurieren, können Sie für diese Knotengruppen keine Flags für Standardmaschinentyp, Instanzauswahl, Instanzanzahl, Laufwerk oder Beschleuniger angeben:
      • Master: Kann nicht mit --master-machine-type, --master-machine-types, --master-instance-selection, --master-instance-flexibility-policy-file, --master-boot-disk-size, --master-boot-disk-type, --num-master-local-ssds, --master-accelerator oder --master-min-cpu-platform kombiniert werden.
      • Primäre Worker: Können nicht mit --num-workers, --worker-machine-type, --worker-machine-types, --worker-instance-selection, --worker-instance-flexibility-policy-file, --worker-boot-disk-size, --worker-boot-disk-type, --num-worker-local-ssds, --worker-accelerator oder --worker-min-cpu-platform kombiniert werden.
      • Sekundäre Worker: Können nicht mit --num-secondary-workers, --secondary-worker-type, --secondary-worker-machine-types, --secondary-worker-instance-selection, --secondary-worker-instance-flexibility-policy-file, --secondary-worker-boot-disk-size, --secondary-worker-boot-disk-type, --num-secondary-worker-local-ssds oder --secondary-worker-accelerator kombiniert werden.
    • Wenn in einem Cluster mit mehreren Knoten der Modus für hohe Verfügbarkeit für die Masterknotengruppe aktiviert ist, muss die primäre Worker-Knotengruppe ebenfalls flexible Konfigurationen (--worker-flexible-config) verwenden.
    • Wenn sekundäre Worker in einem Cluster mit hoher Verfügbarkeit verwendet werden, müssen sie --secondary-worker-flexible-config anstelle von Standard-Flags für sekundäre Worker verwenden.
  • Cluster mit einem einzelnen Knoten: In einem Cluster mit einem einzelnen Knoten (--single-node oder --cluster-type=single-node) kann nur --master-flexible-config angegeben werden. Flexible Konfigurations-Flags für primäre und sekundäre Worker werden nicht unterstützt.
  • Clusterupdates: Sie können die Anzahl der Instanzen (num-instances) für primäre und sekundäre Worker mit gcloud dataproc clusters update aktualisieren. Die Anzahl der Kerne, die Hardwareklasse und die Größe des Bootlaufwerks sind Spezifikationen, die beim Erstellen festgelegt werden und danach nicht mehr geändert werden können.
  • Hochverfügbarkeitscluster: Hochverfügbarkeitscluster (Cluster mit drei Masterknoten) werden im Modus „Hohe Verfügbarkeit“ nicht unterstützt. Die Anzahl der Masterinstanzen muss 1 sein.

Cluster mit hoher Verfügbarkeit erstellen

Sie können einen Cluster im Modus „Hohe Verfügbarkeit“ mit der Google Cloud CLI oder der Dataproc API erstellen.

gcloud

Führen Sie den Befehl gcloud dataproc clusters create mit den Flags --master-flexible-config und --worker-flexible-config aus, um einen Cluster im Modus „Hohe Verfügbarkeit“ zu erstellen.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
    --worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"

Ersetzen Sie Folgendes:

  • CLUSTER_NAME ist der Name des Clusters.
  • REGION: die Compute Engine-Region für den Cluster, z. B. us-central1. Geben Sie keinen --zone an.
  • CORES: die Anzahl der vCPUs pro VM-Instanz. Muss eine Zweierpotenz sein (2, 4, 8, 16 oder 32).
  • HARDWARE_CLASS: die Hardwareprofilklasse, entweder STANDARD oder PERFORMANCE.
  • NUM_WORKERS: die Anzahl der primären Worker-Knoten im Cluster.
  • BOOT_DISK_SIZE: die Größe des Bootlaufwerks, z. B. 100GB.

Sekundäre Worker hinzufügen

Wenn Sie sekundäre Worker-Knoten im Modus „Hohe Verfügbarkeit“ hinzufügen möchten, fügen Sie das Flag --secondary-worker-flexible-config ein:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
    --worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
    --secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"

Cluster mit einem einzelnen Knoten erstellen

Wenn Sie einen Einzelknotencluster mit hoher Verfügbarkeit erstellen möchten, geben Sie --single-node (oder --cluster-type=single-node) mit --master-flexible-config an und lassen Sie die flexiblen Konfigurations-Flags für Worker weg:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --single-node \
    --master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"

Worker-Kapazität des Clusters aktualisieren

Verwenden Sie den Befehl gcloud dataproc clusters update, um die Anzahl der primären oder sekundären Worker in einem vorhandenen Cluster mit hoher Verfügbarkeit zu skalieren:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --worker-flexible-config="num-instances=NEW_NUM_WORKERS"

REST

Senden Sie eine clusters.create-Anfrage, um einen Cluster mit hoher Verfügbarkeit über die REST API zu erstellen. Im Objekt ClusterConfig:

  1. Lassen Sie gceClusterConfig.zoneUri leer oder lassen Sie es weg, um die Auto Zone-Platzierung zu aktivieren.
  2. Geben Sie die Objekte masterFlexibleConfig und workerFlexibleConfig an.

HTTP-Methode und URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

JSON-Text der Anfrage:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterFlexibleConfig": {
      "numInstances": 1,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    },
    "workerFlexibleConfig": {
      "numInstances": 2,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    }
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: Projekt-ID in Google Cloud .
  • REGION: die Compute Engine-Region, in der der Cluster erstellt wird, z. B. us-central1.
  • CLUSTER_NAME ist der Name des Clusters.

Optional: Wenn Sie sekundäre Worker hinzufügen möchten, fügen Sie das Objekt secondaryWorkerFlexibleConfig mit den gewünschten Werten für numInstances, coreCount, hardwareClass und bootDiskSizeGb ein.

Nächste Schritte