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 Managed Service for Apache Spark Master-, primäre und sekundäre Worker-Knoten 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 für 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 angehalten werden.
  • Masterknoten in Clustern mit hoher Verfügbarkeit können keine flexiblen VMs verwenden, aber Worker-Knoten von HA-Clustern können flexible VMs verwenden.

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 Masterknoten und mindestens zwei primäre Worker.
  • Sekundäre Worker: Sekundäre Worker sind optional und speichern keine Daten. Sie fungieren nur als Verarbeitungsknoten. Sie können sekundäre Worker verwenden, um die Computing-Skalierung zu skalieren, ohne den Speicher zu skalieren. Der Standardtyp für sekundäre Worker mit flexiblen VMs ist eine Spot-VM, ein Typ auf Abruf (siehe Sekundäre Worker von Managed Service for Apache Spark workers).

Nutzung

  • Flexible VMs sind in Managed Service for Apache Spark in Compute Engine-Imageversionen 2.0.74+, 2.1.76+, 2.2.42+ und höher verfügbar.
  • Das Erstellen von Clustern mit Master- oder primären Worker-Flex-VMs dauert länger (ca. 32 Sekunden zusätzlich).
  • Der Clustername darf maximal 45 Zeichen lang sein.
  • Für alle VM-Typen ist derselbe Laufwerkstyp erforderlich.
  • Sie können bis zu fünf sortierte VM-Typ-Listen mit jeweils bis zu 10 VM-Typen angeben. Weitere Informationen finden Sie unter Flexible VMs anfordern.
  • 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-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-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 Listen flexibler VMs aus, die Sie beim Erstellen des Clusters angegeben haben, und fügt sie hinzu.

Empfehlung: Aktivieren Sie die automatische Zonenauswahl von Managed Service for Apache Spark. Dadurch kann Managed Service for Apache Spark eine Zone mit der Kapazität auswählen, um die angeforderten VMs bereitzustellen.

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 Dataproc API erstellen.

  • Sie können bis zu fünf sortierte VM-Typ-Listen mit jeweils bis zu 10 VM-Typen angeben. Listen mit dem niedrigsten Rang haben die höchste Priorität. Standardmäßig haben Listen flexibler VMs 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:

  1. Öffnen Sie die Seite Cluster erstellen.
  2. Klicken Sie auf Zusätzliche Konfiguration , um den Bereich zu maximieren.
  3. Bearbeiten Sie Primäre Worker oder Sekundäre Worker. Geben Sie unter Worker-Typen hinzufügen zusätzliche sortierte VMs an.

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 Listen flexibler VMs 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 Typ des sekundären Workers 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:

API

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

Beispiel: Im folgenden JSON-Snippet aus einem clusters.create Anfragetext werden Maschinentypen für Master (masterConfig), primäre Worker (workerConfig) und sekundäre Worker (secondaryWorkerConfig) mit den Rängen 0 und 1 angegeben.

{
  "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 vom System generierte Attribute für primäre und sekundäre Worker-Flex-VM-Typen ü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.

Mit dem folgenden Befehl gcloud dataproc clusters create wird die Anzahl der vCPUs überschrieben, 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.

Mit dem folgenden Objekt SoftwareConfig wird die Anzahl der vCPUs überschrieben, 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