Flexible Dataproc-VMs

Flexible VMs ist eine Dataproc-Funktion, mit der Sie beim Erstellen eines Dataproc-Clusters priorisierte Listen von VM-Typen für sekundäre Dataproc-Worker angeben können.

Vorteile flexibler VMs

Bisher ist der Vorgang fehlgeschlagen, wenn ein VM-Typ beim Einreichen einer Clustererstellungsanfrage nicht verfügbar war. Sie mussten dann die Anfrage, das Script oder den Code aktualisieren, um einen „nächstbesten“ VM-Typ anzugeben. Dieser Neuanfrageprozess kann mehrere Iterationen erfordern, bis Sie einen verfügbaren VM-Typ angegeben haben.

Mit der Dataproc-Funktion für flexible VMs können Sie die Wahrscheinlichkeit erhöhen, dass Ihre Clustererstellungsanfrage erfolgreich ist. Dazu wählen Sie sekundäre Worker-VM-Typen aus Ihren sortierten VM-Listen aus und suchen dann nach Zonen innerhalb der angegebenen Clusterregion, in denen die aufgeführten VM-Typen verfügbar sind.

Terminologie

  • VM-Typ: Die Familie, die Arbeitsspeicherkapazität und die Anzahl der CPU-Kerne einer VM-Instanz. Dataproc unterstützt die Verwendung von vordefinierten und benutzerdefinierten VM-Typen.

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

Einschränkungen und Überlegungen

  • Flexible VMs sind in Dataproc in Compute Engine 2.0.74+, 2.1.22+ und in späteren Dataproc in Compute Engine-Image-Versionen verfügbar.

  • Sie können flexible VMs nur für sekundäre Worker angeben.

  • Sie können bis zu fünf Listen mit VM-Typen angeben, die jeweils bis zu zehn VM-Typen enthalten. Weitere Informationen finden Sie unter Flexible VMs anfordern.

  • Für die Erstellung eines Clusters mit flexiblen VMs ist die automatische Zonenplatzierung von Dataproc erforderlich. So kann Dataproc die Zone auswählen, die die Kapazität hat, Ihre Anforderungen an den VM-Typ zu erfüllen.

  • Wenn Ihre Anfrage zum Erstellen eines Clusters eine Autoscaling-Richtlinie enthält, können flexible VMs aus verschiedenen VM-Familien stammen, müssen aber dieselbe Arbeitsspeichermenge und Kernanzahl haben.

  • Bei der Bereitstellung flexibler VMs nutzt Dataproc alle verfügbaren Reservierungen, die übereinstimmen, aber keine „bestimmten“ Reservierungen (siehe Reservierte Instanzen nutzen). Maschinentypen, die mit Reservierungen übereinstimmen, werden zuerst innerhalb eines Rangs ausgewählt, gefolgt von VM-Typen mit der größten Anzahl von CPUs.

  • In Dataproc werden Google Cloud-Kontingente auf die flexible VM-Bereitstellung angewendet.

  • Sie können zwar unterschiedliche CPU-zu-Speicher-Verhältnisse für primäre und sekundäre Worker-VM-Typen in einem Cluster angeben, dies kann jedoch zu Leistungseinbußen führen, da das kleinste CPU-zu-Speicher-Verhältnis als kleinste Containereinheit verwendet wird.

  • Wenn Sie einen Cluster aktualisieren, der mit flexiblen VMs erstellt wurde, wählt Dataproc Worker aus den Listen mit flexiblen VMs aus, die Sie beim Erstellen des Clusters angegeben haben, und fügt sie hinzu.

Flexible VMs anfordern

Sie können flexible VMs angeben, wenn Sie einen Dataproc-Cluster mit der Google Cloud Console, der Google Cloud CLI oder der Dataproc API erstellen.

  • Sie können bis zu fünf Listen mit VM-Typen angeben, die jeweils bis zu zehn VM-Typen enthalten. Listen mit der niedrigsten Rangfolge haben die höchste Priorität. Standardmäßig haben flexible VM-Listen den Rang 0. Innerhalb einer Liste priorisiert Dataproc VM-Typen mit nicht verwendeten Reservierungen, gefolgt von den größten VM-Größen. VM-Typen in einer Liste mit derselben CPU-Anzahl werden gleich behandelt.

Console

So erstellen Sie einen Cluster mit flexiblen VMs für sekundäre Worker:

  1. Öffnen Sie in der Google Cloud Console die Seite Cluster in der Compute Engine erstellen von Dataproc.

  2. Der Bereich Cluster einrichten wird mit Feldern ausgewählt, die mit Standardwerten gefüllt sind. Sie können den vorgeschlagenen Namen und die Clusterregion ändern und weitere Änderungen vornehmen. Achten Sie darauf, dass Beliebig als Zone des Clusters ausgewählt ist, damit die automatische Zonenplatzierung in Dataproc die Zone mit der besten Verfügbarkeit der in Ihren flexiblen VM-Listen angegebenen VM-Typen auswählen kann.

  3. Wählen Sie den Bereich Knoten konfigurieren aus. Geben Sie im Bereich Sekundäre Workerknoten die Anzahl und die Abrufbarkeit der sekundären Worker an.

    • Klicken Sie für jeden Rang von sekundären Workern auf Sekundären Worker hinzufügen und geben Sie einen oder mehrere Maschinentypen an, die in den jeweiligen Rang aufgenommen werden sollen.
  4. Nachdem Sie die Clusterdetails in den entsprechenden Bereichen bestätigt und angegeben haben, klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Befehl gcloud dataproc clusters create, um mehrere secondary-worker-machine-types-Flags hinzuzufügen, um sortierte flexible VM-Listen für Dataproc-sekundäre Worker anzugeben. Der standardmäßige sekundäre Worker-Typ für flexible VMs ist „Spot“, ein auf Abruf verfügbarer Typ.

Im folgenden Beispiel für die gcloud CLI versucht Dataproc, zuerst sekundäre Worker mit n2-standard-8 VMs (Rang 0) bereitzustellen. Wenn keine n2-standard-8-Maschinen verfügbar sind, versucht Dataproc, sekundäre Worker mit e2-standard-8- oder t2d-standard-8-VMs (Rang 1) bereitzustellen.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --master-machine-type=n1-standard-8 \
    --worker-machine-type=n1-standard-8 \
    --num-workers=4 \
    --num-secondary-workers=4 \
    --secondary-worker-type=non-preemptible \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"

Hinweise:

  • --zone="": Für die Funktion „Flexible VM“ ist die automatische Zonenplatzierung in Dataproc erforderlich, damit Dataproc die Zone auswählen kann, in der Ihre VM-Typen verfügbar sind. Wenn Sie dem Flag --zone einen leeren Wert („""“) übergeben, wird jede Zonenauswahl überschrieben, die in Ihrem Standardgcloud config list angegeben ist.

  • Dataproc generiert Komponenten-role-Eigenschaften basierend auf den Kernen und dem Arbeitsspeicher des Computers. Sie können diese systemgenerierten Properties mit dem Flag --properties überschreiben. Verwenden Sie dazu die folgende Syntax:

    --properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
    

    Nur die Rolle secondary_worker wird unterstützt.

    Im folgenden Beispiel wird mit dem Flag --properties die Anzahl der Kerne von e2-standard-8 Maschinen, die sekundären Worker-Knoten zugewiesen sind, von 8 auf 6 geändert:

    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
    

API

Verwenden Sie instanceFlexibilityPolicy.instanceSelectionList als Teil einer Dataproc API-Anfrage vom Typ clusters.create, um eine sortierte Liste von machineTypes für sekundäre Worker anzugeben.

Beispiel:

Im folgenden JSON-Snippet aus dem clusters.create Anfragetext einer Dataproc-Anfrage werden die Maschinentypen der sekundären Worker für Rang 0 und Rang 1 angegeben.

"config": {
  "secondaryWorkerConfig": {
    "instanceFlexibilityPolicy": {
      "instanceSelectionList": [
        {
          "machineTypes": [
            "n1-standard-4",
            "n2-standard-4"
          ],
          "rank": 0
        },
        {
          "machineTypes": [
            "e2-standard-4",
            "n2d-standard-4"
          ],
          "rank": 1
        }
      ]
    }
  }
}

Clustereigenschaften verwenden, um Komponentenrollen anzupassen:Dataproc generiert Komponenten-role-Eigenschaften basierend auf VM-Kernen und Arbeitsspeicher. Sie können diese systemgenerierten Properties überschreiben, indem Sie Ihrer clusters.create-Anfrage mit der folgenden key=value-Syntax SoftwareConfig.properties hinzufügen:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

Nur die Rolle secondary_worker wird unterstützt.

Im folgenden Beispiel wird im Feld properties die Anzahl der Kerne geändert, die dem sekundären Workerknoten einer e2-standard-8-VM zugewiesen sind, von 8 auf 6:

"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"