Flexible Dataproc-VMs

Flexible VMs sind ein Dataproc-Feature, mit dem Sie beim Erstellen eines Dataproc-Clusters priorisierte Listen von VM-Typen für sekundäre Worker von Dataproc angeben können.

Vorteile von flexiblen VMs

Wenn ein VM-Typ beim Senden einer Anfrage zur Clustererstellung nicht verfügbar war, schlug diese Anfrage fehl und Sie mussten Ihre Anfrage, Ihr Skript oder Ihren Code aktualisieren, um den VM-Typ „Nächstes Bester“ anzugeben. Dieser Prozess der erneuten Anfrage kann mehrere Iterationen umfassen, bis Sie einen verfügbaren VM-Typ angegeben haben.

Die flexible Dataproc-VM-Funktion sorgt dafür, dass Ihre Anfrage zum Erstellen von Clustern erfolgreich ist. Dazu wählen Sie sekundäre Worker-VM-Typen aus Ihren VM-Listen mit Rangfolge aus und suchen dann nach Zonen in der angegebenen Clusterregion mit Verfügbarkeit der aufgeführten VM-Typen.

Terminologie

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

  • Sekundäre Worker: Sekundäre Worker speichern keine Daten. Sie dienen nur als Verarbeitungsknoten. Mit sekundären Workern können Sie Computing-Ressourcen ohne Speicherskalierung skalieren.

Einschränkungen und Überlegungen

  • Flexible VMs sind in Dataproc auf Compute Engine 2.0.74+, 2.1.22+ und höher in Dataproc in Compute Engine-Image-Versionen verfügbar.

  • Während der Vorabversion gilt Folgendes:

    • Sie können flexible VMs nur für sekundäre Worker angeben.
    • Sie können in der Anfrage zur Clustererstellung entweder sekundäre Worker-Typen Spot oder nicht auf Abruf als flexible VMs angeben. Beide Arten gleichzeitig sind nicht möglich. Wenn Sie den sekundären Worker-Typ nicht angeben, verwendet Dataproc Spot-VMs auf Abruf.
  • Sie können bis zu fünf mit einem Rang versehene VM-Typlisten angeben, wobei bis zu zehn VM-Typen in einer Liste enthalten sein können. Weitere Informationen finden Sie unter Flexible VMs anfordern.

  • Zum Erstellen eines Clusters mit flexiblen VMs muss die Dataproc-Autozonenplatzierung verwendet werden. Dadurch kann Dataproc die Zone auswählen, die über die Kapazität verfügt, um Ihre VM-Typanfragen zu erfüllen.

  • Wenn die Anfrage zur Clustererstellung eine Autoscaling-Richtlinie enthält, können flexible VMs aus verschiedenen VM-Familien stammen, müssen jedoch dieselbe Menge an Arbeitsspeicher und dieselbe Anzahl von Kernen haben.

  • Beim Bereitstellen flexibler VMs nutzt Dataproc alle übereinstimmenden verfügbaren Reservierungen, jedoch keine "spezifischen" Reservierungen (siehe Reservierte Instanzen nutzen). Maschinentypen, die mit Reservierungen übereinstimmen, werden zuerst innerhalb eines Rangs ausgewählt, gefolgt von den VM-Typen mit der größten Anzahl von CPUs.

  • Dataproc wendet Google Cloud-Kontingente auf die flexible VM-Bereitstellung an.

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

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

Flexible VMs anfordern

Beim Erstellen eines Dataproc-Clusters mit der Google Cloud Console, der Google Cloud CLI oder der Dataproc API können Sie flexible VMs angeben.

  • Sie können bis zu fünf mit einem Rang versehene VM-Typlisten angeben, wobei bis zu zehn VM-Typen in einer Liste enthalten sein können. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig haben flexible VM-Listen einen Rang von 0. Innerhalb einer Liste priorisiert Dataproc VM-Typen mit nicht verwendeten Reservierungen, gefolgt von den größten VM-Größen. VM-Typen innerhalb 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 Dataproc-Seite Cluster in Compute Engine erstellen.

  2. Der Bereich Cluster einrichten ist ausgewählt. Die Felder enthalten bereits Standardwerte. 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 Dataproc-Autozonenplatzierung die Zone auswählen kann, die die beste Verfügbarkeit der in Ihren flexiblen VM-Listen angegebenen VM-Typen hat.

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

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

gcloud

Fügen Sie mit dem Befehl gcloud dataproc clusters create mehrere secondary-worker-machine-types-Flags hinzu, um mit einem Rang versehene flexible VM-Listen für sekundäre Dataproc-Worker anzugeben. Der standardmäßige flexible VM-Typ für sekundäre Worker ist Spot, ein präemptiver Typ.

Im folgenden Beispiel für die gcloud CLI versucht Dataproc, sekundäre Worker mit n2-standard-8-VMs zuerst bereitzustellen (Rang 0). 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 flexible VM-Funktion ist die Dataproc-Autozonenplatzierung erforderlich, damit Dataproc die Zone auswählen kann, in der Ihre VM-Typen verfügbar sind. Wenn Sie einen leeren Wert ("") an das Flag --zone übergeben, wird jede Zonenauswahl, die in Ihrem Standard-gcloud config list festgelegt ist, überschrieben.

  • Dataproc generiert die role-Attribute der Komponente basierend auf Maschinenkernen und Arbeitsspeicher. Sie können diese vom System generierten Attribute mit dem Flag --properties und der folgenden Syntax überschreiben:

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

    In der Vorabversion ist die Rolle secondary_worker die einzige unterstützte Rolle.

    Im folgenden Beispiel ändert das Flag --properties die Anzahl der Kerne von e2-standard-8-Maschinen, die sekundären Worker-Knoten zugewiesen sind, von 8 zu 6:

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

API

Verwenden Sie instanceFlexibilityPolicy.instanceSelectionList im Rahmen einer Dataproc API-Anfrage vom Typ clusters.create, um eine Rangliste von machineTypes für sekundäre Worker anzugeben.

Beispiel:

Das folgende JSON-Snippet aus einem clusters.create-Anfragetext für Dataproc gibt Maschinentypen für sekundäre Worker für den Rang 0 und den Rang 1 an.

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

Clustereigenschaften zum Anpassen von Komponentenrollen:Dataproc generiert role-Eigenschaften für Komponenten basierend auf VM-Kernen und Arbeitsspeicher. Sie können diese vom System generierten Attribute überschreiben, indem Sie SoftwareConfig.properties mit der folgenden key=value-Syntax in Ihre clusters.create-Anfrage einfügen:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

In der Vorabversion ist die Rolle secondary_worker die einzige unterstützte Rolle.

Im folgenden Beispiel ändert das Feld properties die Anzahl der Kerne, die dem sekundären Worker-Knoten einer e2-standard-8-VM zugewiesen sind, von 8 in 6:

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