Flexible Dataproc-VMs

Flexible VMs sind eine Dataproc-Funktion, mit der Sie priorisierte Listen von VM-Typen für Dataproc sekundäre Worker, wenn Sie Dataproc-Cluster erstellen

Vorteile flexibler VMs

Wenn ein VM-Typ beim Senden bisher nicht verfügbar war Eine Anfrage zur Clustererstellung ist fehlgeschlagen und Sie mussten ein Update durchführen. Ihre Anfrage, Ihr Skript oder Ihren Code ein, um VM-Typ. Dieser Neuanfrageprozess kann mehrere Iterationen erfordern, bis Sie einen verfügbaren VM-Typ angegeben haben.

Die flexible VM-Funktion von Dataproc unterstützt die Clustererstellung für eine erfolgreiche Anfrage. Wählen Sie dazu sekundäre Worker-VM-Typen aus Ihren eingestuften VM-Listen aus und suchen Sie für Zonen innerhalb 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 von vordefinierten und benutzerdefinierten VM-Typen.

  • Sekundäre Worker: Sekundäre Worker keine Daten speichern. Sie dienen nur als Verarbeitungsknoten. Sie können Sekundäre Worker können Rechenressourcen skalieren, ohne den Speicher zu skalieren.

Einschränkungen und Überlegungen

  • Flexible VMs sind in Dataproc in Compute Engine 2.0.74+ verfügbar. Dataproc ab 2.1.22+ in Compute Engine Image-Versionen.

  • Während der Vorabversion:

    • Sie können flexible VMs nur für sekundäre Worker angeben.
    • Sie können entweder Spot oder nicht auf Abruf sekundäre Worker-Typen als flexible VMs, aber nicht beides, in der Anfrage zum Erstellen eines Clusters. Wenn Sie den sekundären Worker-Typ nicht angeben, verwendet Dataproc Spot-VMs, die auf Abruf verfügbar sind.
  • 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 VM-Typanfragen zu erfüllen.

  • Wenn Ihre Anfrage zur Clustererstellung ein Autoscaling-Richtlinie Flexible VMs können aus verschiedenen VM-Familien stammen, müssen jedoch denselben die Größe des Arbeitsspeichers und die Anzahl der Kerne.

  • Beim Bereitstellen flexibler VMs verwendet Dataproc „beliebige Übereinstimmungen“ verfügbare Reservierungen, aber nicht "spezifisch" 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, Dataproc wählt Worker aus und fügt sie aus den flexiblen VM-Listen hinzu, die Sie beim Erstellen des Clusters angegeben haben.

Flexible VMs anfordern

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

  • Sie können bis zu fünf Listen mit eingestuften VM-Typen und bis zu 10 VM-Typen angeben in einer Liste. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig flexibel VM-Listen haben 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. Dataproc öffnen Cluster in Compute Engine erstellen in der Google Cloud Console.

  2. Im Bereich Cluster einrichten sind die Standardfelder Werte. Sie können den vorgeschlagenen Namen und die Clusterregion ändern und weitere Änderungen vornehmen. Achten Sie darauf, dass Any als Cluster ausgewählt ist Zuzulassende Zone Dataproc – automatische Zonenplatzierung um die Zone mit der besten Verfügbarkeit VM-Typen, die in Ihren flexiblen VM-Listen angegeben sind.

  3. Wählen Sie den Bereich Knoten konfigurieren aus. In den sekundären Worker-Knoten die Anzahl und Abrufbarkeit der sekundären Worker angeben.

    • Klicken Sie für jeden Rang sekundärer Worker auf Sekundären Worker hinzufügen. Angabe eines oder mehrerer Maschinentypen, die in jeden Rang einbezogen 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 sekundäre Dataproc-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, um sekundäre Worker zuerst mit n2-standard-8 VMs 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="": Das flexible VM-Feature benötigt Automatische Zonenplatzierung von Dataproc für Dataproc die Auswahl der Zone gestatten, in der sich Ihre Verfügbare VM-Typen. Wenn Sie dem Flag --zone einen leeren Wert („"") übergeben, wird jede Zonenauswahl überschrieben, die in Ihrem Standardgcloud config list angegeben ist.

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

    --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 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 den instanceFlexibilityPolicy.instanceSelectionList. als Teil einer Dataproc API clusters.create Anfrage zum Angeben einer Rangliste von machineTypes für sekundäre Worker.

Beispiel:

Das folgende JSON-Snippet aus einem Dataproc-clusters.create Anfragetext gibt sekundäre Worker-Maschinentypen für Rang 0 und 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
        }
      ]
    }
  }
}

Mit Clusterattributen Komponentenrollen anpassen: Dataproc generiert die Attribute der role-Komponente basierend auf VM-Kernen und Arbeitsspeicher. Sie können diese vom System generierten Attribute überschreiben, SoftwareConfig.properties in Ihre clusters.create-Anfrage mit der folgenden key=value-Syntax ein:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

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

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"