VM-Typen mit flexiblen VMs priorisieren

Flexible VMs ist eine Dataproc-Funktion, mit der Sie priorisierte Listen von VM-Typen für Dataproc-Master-, primäre und sekundäre Worker-Knoten angeben können, wenn Sie einen Dataproc-Cluster erstellen.

Vorteile von flexiblen VMs

Wenn ein VM-Typ nicht verfügbar war, als Sie eine Anfrage zum Erstellen eines Clusters gesendet haben, ist die Anfrage fehlgeschlagen. Sie mussten dann Ihre Anfrage, Ihr Skript oder Ihren Code aktualisieren, um einen „zweitbesten“ VM-Typ anzugeben. Dieser Prozess der erneuten Anfrage konnte mehrere Iterationen umfassen, bis Sie einen VM-Typ angegeben haben, der verfügbar war.

Mit der Dataproc-Funktion für flexible VMs kann Ihre Anfrage zum Erstellen eines Clusters erfolgreich sein. Dazu werden Master-, primäre und sekundäre Worker-VM-Typen aus Ihren VM-Listen mit Rang ausgewählt und dann in der angegebenen Clusterregion nach Zonen gesucht, 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 vordefinierter und benutzerdefinierter VM-Typen.
  • Master- und primäre Worker-Knoten: Ein Cluster hat einen Master-Knoten und mindestens zwei primäre Worker.
  • Sekundäre Worker: Sekundäre Worker sind optional und 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. Der standardmäßige sekundäre Worker-Typ für flexible VMs ist eine Spot-VM, ein präemptiver Typ (siehe Sekundäre Worker in Dataproc).

Nutzung

  • Flexible VMs sind in Dataproc on Compute Engine ab den Image-Versionen 2.0.74+, 2.1.76+, 2.2.42+ und höher verfügbar.
  • Das Erstellen eines Clusters mit flexiblen VMs für Master- oder primäre Worker dauert länger (ca. 32 Sekunden zusätzlich).
  • Der Clustername darf maximal 45 Zeichen enthalten.
  • Für alle VM-Typen ist derselbe Laufwerkstyp erforderlich.
  • Sie können bis zu fünf VM-Typ-Listen mit Rang angeben, wobei eine Liste bis zu 10 VM-Typen enthalten kann. Weitere Informationen finden Sie unter Flexible VMs anfordern.
  • Zum Erstellen eines Clusters mit flexiblen VMs ist die Verwendung von der automatischen Zonenplatzierung von Dataprocerforderlich. Dadurch kann Dataproc die Zone auswählen, die die Kapazität hat, Ihre VM-Typ-Anfragen zu erfüllen.
  • Wenn Ihre Anfrage zum Erstellen eines Clusters eine Autoscaling-Richtlinieenthält, können flexible VMs aus verschiedenen VM-Familien stammen. Sie müssen jedoch dieselbe Arbeitsspeicher- und Kernanzahl haben.
  • Beim Bereitstellen flexibler VMs nutzt Dataproc alle passenden verfügbaren Reservierungen, aber keine spezifischen 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.
  • Dataproc wendet Google Cloud Kontingente auf die Bereitstellung flexibler VMs an.
  • Sie können zwar unterschiedliche CPU-zu-Arbeitsspeicher-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-Arbeitsspeicher-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 für flexible 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 VM-Typ-Listen mit Rang angeben, wobei eine Liste bis zu 10 VM-Typen enthalten kann. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig haben Listen für flexible VMs 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 Anzahl von CPUs 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 Compute Engine erstellen von Dataproc.
  2. Der Bereich Cluster einrichten wird mit Feldern ausgewählt, die mit Standard werten gefüllt sind. Sie können den vorgeschlagenen Namen und die Clusterregion ändern und weitere Änderungen vornehmen. Achten Sie darauf, dass Beliebig als Zone für den Cluster ausgewählt ist, damit die automatische Zonenplatzierung von Dataproc die Zone auswählen kann, die die beste Verfügbarkeit der in Ihren Listen für flexible VMs angegebenen VM-Typen bietet.
  3. Wählen Sie den Bereich Knoten konfigurieren aus. Geben Sie im Bereich Sekundäre Worker-Knoten 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 Bereichen zum Erstellen von Clustern bestätigt und angegeben haben, klicken Sie auf Erstellen.

gcloud

Verwenden Sie den gcloud dataproc clusters create Befehl, um mehrere master-machine-types, worker-machine-types und secondary-worker-machine-types Flags hinzuzufügen, um Listen für flexible VMs mit Rang für Master-, primäre und sekundäre Worker anzugeben.

Im folgenden Beispiel werden Master-, primäre und sekundäre VM-Typen mit den folgenden Prioritäten angefordert:

  • Stellen Sie e2-standard-8-VMs bereit, falls verfügbar (Rang 0). Wenn e2-standard-8 Maschinen nicht verfügbar sind, stellen Sie n2-standard-8-VMs bereit (Rang 1).

Da der sekundäre Worker-Typ nicht angegeben ist, werden präemptive Spot-VMs für sekundäre Worker bereitgestellt.

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

Hinweise:

  • --zone="": Für die Funktion für flexible VMs ist die automatische Zonenplatzierung von 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 Ihrer Standardkonfiguration gcloud config list angegeben ist.

API

Verwenden Sie die instanceFlexibilityPolicy.instanceSelectionList als Teil einer Dataproc API clusters.create Anfrage, um eine Liste von machineTypes mit Rang für Master-, primäre und sekundäre Worker anzugeben.

Beispiel: Das folgende JSON-Snippet aus dem clusters.create Anfragetext gibt Maschinentypen für Master (masterConfig), primäre Worker (workerConfig) und sekundäre Worker (secondaryWorkerConfig) mit Rang 0 und Rang 1 an.

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterConfig": {
      "numInstances": 1,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    },
    "workerConfig": {
      "numInstances": 10,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    },
    "secondaryWorkerConfig": {
      "numInstances": 4,
      "instanceFlexibilityPolicy": {
        "instanceSelectionList": [
          {
            "machineTypes": ["e2-standard-8"],
            "rank": 0
          },
          {
            "machineTypes": ["n2-standard-8"],
            "rank": 1
          }
        ]
      }
    }
  }
}

Attribute für flexible VMs überschreiben

Dataproc legt Attribute auf Clusterebene fest. Wenn Sie einen Cluster erstellen, der flexible VMs verwendet, können Sie systemgenerierte Attribute für flexible VM-Typen für primäre und sekundäre Worker überschreiben.

gcloud

Verwenden Sie das --properties Flag mit der folgenden Syntax, um Attribute beim Erstellen eines Clusters zu überschreiben:

--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
  • ROLE kann entweder primary_worker oder secondary_worker sein.
  • Trennen Sie mehrere Attribute durch ein Komma.

Führen Sie den folgenden Befehl gcloud dataproc clusters create aus, um die Anzahl der vCPUs zu überschreiben, die YARN für NodeManager auf sekundären Workern zuweist. In diesem Beispiel wird der Wert yarn.nodemanager.resource.cpu-vcores in yarn-site.xml für alle e2-standard-8- und n2-standard-8-VMs für sekundäre Worker auf 6 gesetzt.

gcloud dataproc clusters create CLUSTER_NAME \
    --num-workers=10 \
    --num-secondary-workers=4 \
    --worker-machine-types="type=e2-standard-8,rank=0" \
    --worker-machine-types="type=n2-standard-8,rank=1" \
    --master-machine-types="type=e2-standard-8,rank=0" \
    --master-machine-types="type=n2-standard-8,rank=1" \
    --secondary-worker-machine-types="type=e2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=n2-standard-8,rank=1" \
    --region=us-central1 \
    --zone="" \
    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"

API

Wenn Sie Attribute überschreiben möchten, definieren Sie sie im properties Feld des SoftwareConfig Objekts in Ihrer Anfrage zum Erstellen eines Clusters.

Verwenden Sie für den Attributschlüssel die folgende Syntax:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
  • ROLE kann entweder primary_worker oder secondary_worker sein.

Das folgende SoftwareConfig Objekt überschreibt die Anzahl der vCPUs, die YARN für NodeManager auf sekundären Workern zuweist. In diesem Beispiel wird der Wert yarn.nodemanager.resource.cpu-vcores auf 6 für alle e2-standard-8 und n2-standard-8 VMs für sekundäre Worker gesetzt.

{
  "imageVersion":"2.2.42",
  "properties": {
    "secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
    "secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
  }
}

Nächste Schritte