VM-Typen mit flexiblen VMs priorisieren

Flexible VMs ist ein Feature von Managed Service for Apache Spark, mit dem Sie priorisierte Listen von VM-Typen für Master-, primäre und sekundäre Worker-Knoten von Managed Service for Apache Spark angeben können, wenn Sie einen Managed Service for Apache Spark-Cluster erstellen.

Warum flexible VMs verwenden?

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 verfügbaren VM-Typ angegeben haben.

Mit dem Feature „Flexible VMs“ von Managed Service for Apache Spark kann Ihre Anfrage zum Erstellen eines Clusters erfolgreich sein, indem Master-, primäre und sekundäre Worker-VM-Typen aus Ihren sortierten VM-Listen ausgewählt und dann Zonen in der angegebenen Clusterregion gesucht werden, in denen die aufgeführten VM-Typen verfügbar sind.

Beschränkungen

Cluster, die flexible VMs verwenden, können nicht beendet werden.

Terminologie

  • VM-Typ: Die Familie, die Arbeitsspeicherkapazität und die Anzahl der CPU-Kerne einer VM-Instanz. Managed Service for Apache Spark unterstützt die Verwendung von vordefinierten und benutzerdefinierten 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 Typ auf Abruf (siehe Sekundäre Worker von Managed Service for Apache Spark).

Nutzung

  • Flexible VMs sind in Managed Service for Apache Spark in Compute Engine 2.0.74+, 2.1.76+, 2.2.42+ und späteren Image-Versionen verfügbar.
  • Das Erstellen von Clustern 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 sortierte VM-Typ-Listen mit jeweils bis zu zehn VM-Typen angeben. Weitere Informationen finden Sie unter Flexible VMs anfordern.
  • Für das Erstellen eines Clusters mit flexiblen VMs ist die automatische Zonenauswahl von Managed Service for Apache Sparkerforderlich. Dadurch kann Managed Service for Apache Spark 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-Richtlinie, enthält, können flexible VMs aus verschiedenen VM-Familien stammen, müssen aber dieselbe Arbeitsspeicher- und Kernanzahl haben.
  • Beim Bereitstellen flexibler VMs verwendet Managed Service for Apache Spark 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.
  • Managed Service for Apache Spark 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 Managed Service for Apache Spark Worker aus den flexiblen VM-Listen 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 Managed Service for Apache Spark-Cluster mit der Google Cloud Console, der Google Cloud CLI oder der Managed Service for Apache Spark API erstellen.

  • Sie können bis zu fünf sortierte VM-Typ-Listen mit jeweils bis zu zehn VM-Typen angeben. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig haben flexible VM-Listen den Rang 0. Innerhalb einer Liste priorisiert Managed Service for Apache Spark 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 Managed Service for Apache Spark.
  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 andere Änderungen vornehmen. Achten Sie darauf, dass Beliebig als Zone des Clusters ausgewählt ist, damit die automatische Zonenauswahl von Managed Service for Apache Spark die Zone auswählen kann, die die beste Verfügbarkeit der in Ihren flexiblen VM-Listen 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 sekundärer Worker 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 sortierte flexible VM-Listen 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:

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

Da der sekundäre Worker-Typ nicht angegeben ist, werden sekundäre Spot- VMs auf Abruf 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 das Feature „Flexible VMs“ ist die automatische Zonenauswahl von Managed Service for Apache Spark erforderlich, damit Managed Service for Apache Spark 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 Managed Service for Apache Spark API clusters.create Anfrage, um eine sortierte Liste von machineTypes 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 den Rängen 0 und 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 flexibler VMs überschreiben

Managed Service for Apache Spark 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 Flag --properties 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 sekundären Worker-VMs vom Typ e2-standard-8 und n2-standard-8 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 für alle sekundären Worker-VMs vom Typ e2-standard-8 und n2-standard-8 auf 6 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