Dataproc-Cluster können nicht nur Standard-Compute Engine-VMs als Managed Service for Apache Spark
Worker (genannt „primäre“ Worker) verwenden, sondern auch Managed Service for Apache Spark-Cluster können
secondary Worker verwenden.
Die folgenden Eigenschaften gelten für alle sekundären Worker in einem Managed Service for Apache Spark-Cluster:
Nur Verarbeitung – Sekundäre Worker speichern keine Daten. Sie funktionieren nur als Knotenknoten. Daher können Sie sekundäre Worker verwenden, um die Computing-Skalierung zu skalieren, ohne den Speicher zu skalieren.
Keine nur sekundäre-Worker-Cluster: Ihr Cluster muss primäre Worker haben. Wenn Sie einen Cluster erstellen und die Anzahl der primären Worker nicht angeben, fügt Managed Service for Apache Spark dem Cluster zwei primäre Worker hinzu.
Maschinentyp: Standardmäßig verwenden sekundäre Worker den Maschinentyp der primären Worker des Clusters. Wenn Sie beispielsweise einen Cluster mit primären Workern erstellen, die
n1-standard-4-Maschinentypen verwenden, werden standardmäßig alle sekundären Worker, die dem Cluster hinzugefügt werden, ebenfallsn1-standard-4-Maschinen verwenden.Statt den Standardmaschinentyp für primäre Worker für sekundäre Worker zu verwenden, können Sie eine oder mehrere Ranglisten von Maschinentypen für sekundäre Worker angeben. Weitere Informationen finden Sie unter Flexible VMs für Managed Service for Apache Spark.
Größe des nichtflüchtigen Speichers – Die sekundären Worker werden standardmäßig mit der kleineren Größe von 1.000 GB oder der Größe des Bootlaufwerks primärer Worker erstellt. Der Speicherplatz wird für das lokale Caching von Daten verwendet und ist nicht über HDFS verfügbar. Sie können die Standardfestplattengröße beim Erstellen des Clusters mit dem
gcloud dataproc clusters create --secondary-worker-boot-disk-sizeBefehl überschreiben. Sie können dieses Flag auch dann angeben, wenn der Cluster beim Erstellen keine sekundären Worker hat.Asynchrone Erstellung: Wenn Sie durch Erstellen oder Skalieren eines Clusters sekundäre Worker hinzufügen, werden die sekundären Worker möglicherweise nicht zum Zeitpunkt der Erstellung oder Aktualisierung bereitgestellt. Das liegt daran, dass Managed Service for Apache Spark sekundäre Worker mithilfe von verwalteten Instanzgruppen verwaltet, die VMs asynchron erstellen, sobald sie bereitgestellt werden können (siehe Status verwalteter Instanzen prüfen).
Sekundäre Worker auf Abruf und nicht auf Abruf
Es gibt drei Arten von sekundären Workern: Spot-VMs, Standard-VMs auf Abruf und nicht auf Abruf verfügbare VMs. Der Standardtyp für sekundäre Worker für Managed Service for Apache Spark ist die Standard-VM auf Abruf. Sie können eine Kombination aus Spot- und nicht auf Abruf verfügbaren sekundären Workern angeben.
Beispiel: Wenn Sie beim Erstellen eines Clusters drei sekundäre Worker auswählen, können Sie drei Spot-VMs, drei VMs auf Abruf, drei nicht auf Abruf verfügbare VMs oder eine Kombination aus Spot- und nicht auf Abruf verfügbaren Workern angeben.
Worker auf Abruf
Obwohl die potenzielle Entfernung von Workern auf Abruf die Jobstabilität beeinträchtigen kann, können Sie Instanzen auf Abruf verwenden, um die Rechenkosten pro Stunde zu senken für nicht kritische Datenverarbeitung oder um sehr große Cluster mit niedrigeren Gesamtkosten zu erstellen. Mit dem Google Cloud-Preisrechner können Sie die Kosten schätzen.
Die besten Ergebnisse erzielen Sie, wenn die Anzahl von Workern auf Abruf in Ihrem Cluster weniger als 50% der Gesamtzahl aller Worker (primäre und alle sekundären Worker) im Cluster beträgt.
Bei der Verwendung von Workern auf Abruf werden Ihre Jobs höchstwahrscheinlich eine größere Anzahl an vorübergehenden Ausfällen einzelner Worker-Aufgaben im Vergleich zu Jobs haben, die mit Workern ausgeführt werden, die nicht auf Abruf sind. Damit die Jobtoleranz für Aufgabenfehler auf niedriger Ebene erhöht wird, können Sie ähnliche Werte für Clusterattribute festlegen wie bei den Standardattributwerten für Autoscaling-Cluster . So werden die maximale Anzahl von Aufgabenwiederholungen erhöht und Job fehler vermieden.
Kostenüberlegungen:Die Verwendung von VMs auf Abruf führt nicht immer zu Kosteneinsparungen, da vorzeitige Beendigungen zu einer längeren Jobausführung und damit zu höheren Jobkosten führen können. Obwohl die Verwendung des Enhanced Flexibility Mode (EFM) mit VMs auf Abruf dieses Ergebnis abmildern kann, variieren die Gesamtkosteneinsparungen von VMs auf Abruf je nach Anwendungsfall. Im Allgemeinen eignen sich kurzlebige Jobs besser für die Verwendung von VMs auf Abruf, da die Wahrscheinlichkeit von vorzeitigen Beendigungen während der Jobausführung geringer ist. Testen Sie verschiedene Joboptionen, z. B. ohne VMs auf Abruf und mit VMs auf Abruf mit EFM, um die Kosten zu schätzen und die beste Lösung zu finden.
Nicht auf Abruf verfügbare Worker
- Sie können einen Cluster mit nicht auf Abruf verfügbaren sekundären Workern erstellen, um die Computing-Funktion zu skalieren, ohne die Stabilität der Jobs zu beeinträchtigen. Geben Sie dazu
non-preemptibleals sekundären Worker-Typ an. Sie können nicht auf Abruf verfügbare sekundäre Worker mit Spot-Workern kombinieren.
Sekundäre Worker auswählen
Sie können die Anzahl und den Typ der sekundären Worker angeben, wenn Sie einen Cluster über die Google Cloud Console, gcloud CLI oder die Managed Service for Apache Spark API erstellen.
- Sie können Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombinieren.
- Sie können den Cluster aktualisieren nachdem er erstellt wurde, um die Anzahl zu ändern, jedoch nicht den Typ der sekundären Worker im Cluster.
- Labelaktualisierungen werden innerhalb von 24 Stunden an alle sekundären Worker auf Abruf übertragen. Labelaktualisierungen werden nicht an vorhandene sekundäre Worker ohne Abruf weitergegeben. Labelaktualisierungen werden an alle Worker weitergegeben, die einem Cluster nach einer Labelaktualisierung hinzugefügt wurden. Wenn Sie beispielsweise den Cluster hochskalieren, haben alle neuen primären und sekundären Worker die neuen Labels.
Console
Beim Erstellen eines Managed Service for Apache Spark Clusters über die Google Cloud Console können Sie die Anzahl der sekundären Worker angeben. Nachdem ein Cluster erstellt wurde, können Sie sekundäre Worker hinzufügen und entfernen, indem Sie die Clusterkonfiguration in der Google Cloud Console bearbeiten.
Cluster mit sekundären Workern erstellen
Sie können die Anzahl und den Typ der sekundären Worker, die auf einen neuen Cluster angewendet werden sollen, im Abschnitt Sekundäre Worker-Knoten des Knoten konfigurieren Steuerfelds auf der Managed Service for Apache Spark Cluster erstellen Seite der Google Cloud Console festlegen. Geben Sie die Anzahl und den Typ der sekundären Worker in den Feldern Sekundäre Worker-Knoten bzw. Abrufbarkeit an.
Cluster mit sekundären Instanzen aktualisieren
Klicken Sie in der Console auf der Seite Cluster auf den Namen des Clusters, um die Anzahl der sekundären Worker in einem Cluster zu aktualisieren. Google Cloud Auf der Seite Clusterdetails. Klicken Sie auf den Tab **Konfiguration** und dann auf Bearbeiten und aktualisieren Sie die Anzahl im Feld „Sekundäre Worker-Knoten“.
Alle sekundären Instanzen aus einem Cluster entfernen
Wenn Sie alle sekundären Worker aus einem Cluster entfernen möchten, aktualisieren Sie die Clusterkonfiguration wie zuvor beschrieben und geben Sie im Feld „Sekundäre Worker-Knoten“ 0 an.
Google Cloud CLI-Befehl
Verwenden Sie den
gcloud dataproc clusters create
Befehl, um einem Cluster bei seiner Erstellung sekundäre Worker hinzuzufügen.
Nachdem ein Cluster erstellt wurde, können Sie mit dem
Befehl
gcloud dataproc clusters update
sekundäre Worker hinzufügen oder aus dem Cluster entfernen (die Zahl, aber nicht der Typ der sekundären Worker kann aktualisiert werden).
Cluster mit sekundären Workern erstellen
Um einen Cluster mit sekundären Workern zu erstellen, verwenden Sie den
gcloud dataproc clusters create
Befehl mit dem --num-secondary-workers Argument. Sekundäre Worker sind standardmäßig Standard-VMs auf Abruf. Sie können nicht auf Abruf verfügbare oder
Spot-Sekundärworker angeben, wenn Sie einen Cluster erstellen,
indem Sie das Flag --secondary-worker-type auf `non-preemptible`
oder `spot` setzen. In den folgenden Beispielen wird gezeigt, wie Sie einen Cluster mit den einzelnen
sekundären Worker-Typen erstellen: `preemptible` (Standard), `spot` (auf Abruf)
und `non-preemptible`. Sie können zusätzliche Flags verwenden, um
Spot- mit nicht auf Abruf verfügbaren sekundären Workern zu kombinieren.
Mit dem folgenden Befehl wird „cluster1“ mit zwei Standard-VM-Workern auf Abruf (Standardtyp) erstellt.
gcloud dataproc clusters create cluster1 \ --num-secondary-workers=2 \ --region=us-central1
Der folgende Befehl verwendet das Flag secondary-worker-type, um „cluster2“ mit zwei Spot-VM-Workern (auf Abruf) zu erstellen.
gcloud dataproc clusters create cluster2 \ --num-secondary-workers=2 \ --secondary-worker-type=spot \ --region=us-central1
Beispiel 3
Der folgende Befehl verwendet das Flag secondary-worker-type, um „cluster3“ mit zwei nicht auf Abruf verfügbaren sekundären Workern zu erstellen.
gcloud dataproc clusters create cluster3 \ --num-secondary-workers=2 \ --secondary-worker-type=non-preemptible \ --region=us-central1
gcloud dataproc clusters create --secondary-worker-boot-disk-size Befehl überschreiben. Dieses Flag kann auch dann angegeben werden, wenn der Cluster beim Erstellen keine sekundären Worker hat.
Anfrage zur Clustererstellung über die Console stellen Google Cloud
Klicken Sie links unten auf der Managed Service for Apache Spark-Seite Cluster erstellen auf die Links Entsprechende REST oder Befehlszeile, damit die Console eine entsprechende API REST-Anfrage oder einen Befehl des gcloud-Tools erstellt. Google Cloud
Cluster mit sekundären Workern aktualisieren
Wenn Sie einen Cluster zum Hinzufügen oder Entfernen sekundärer Worker aktualisieren möchten, verwenden Sie den
gcloud dataproc clusters update
Befehl mit dem --num-secondary-workers Flag.
Mit dem folgenden Befehl wird example-cluster aktualisiert, um vier sekundäre Worker zu verwenden (mit dem Standardtyp oder dem Typ, der beim Erstellen des Clusters angegeben wurde).
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=4 \ --region=us-central1
Alle sekundären Worker aus einem Cluster entfernen
Wenn Sie alle sekundären Worker aus einem Cluster entfernen möchten, verwenden Sie den
gcloud dataproc clusters update
Befehl, wobei --num-secondary-workers auf 0 gesetzt ist.
Mit dem folgenden Befehl werden alle sekundären Worker aus „example-cluster“ entfernt.
gcloud dataproc clusters update example-cluster \ --num-secondary-workers=0 \ --region=us-central1
REST API
Cluster mit sekundären Workern erstellen
Die Managed Service for Apache Spark
clusters.create
fügt sekundäre Worker einem Cluster hinzu, wenn der Cluster erstellt wird. In den folgenden
Beispielen wird gezeigt, wie Sie einen Cluster mit den einzelnen
sekundären Worker-Typen erstellen:
preemptible (Standard), spot (auf Abruf)
und non-preemptible. Sie können zusätzliche Felder verwenden, um
Spot- mit nicht auf Abruf verfügbaren sekundären Workern zu kombinieren.
Mit der folgenden POST-Anfrage wird "cluster1" mit zwei Standard-VM-Workern auf Abruf (Standardtyp) erstellt.
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
{
"clusterName": "cluster1",
"config": {
"secondaryWorkerConfig": {
"numInstances": 2
}
}
}
Mit der folgenden POST-Anfrage wird „cluster2“ mit zwei Spot-VM-Workern (auf Abruf) erstellt.
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
{
"clusterName": "cluster2",
"config": {
"secondaryWorkerConfig": {
"numInstances": 2,
"preemptibility": "SPOT"
}
}
}
Beispiel 3
Mit der folgenden POST-Anfrage wird "cluster3" mit zwei nicht auf Abruf verfügbaren sekundären Workern erstellt.
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
{
"clusterName": "cluster3",
"config": {
"secondaryWorkerConfig": {
"numInstances": 2,
"preemptibility": "NON_PREEMPTIBLE"
}
}
}
Cluster mit sekundären Workern aktualisieren
Mit der Managed Service for Apache Spark clusters.patch API können Sie sekundäre Worker hinzufügen und entfernen.
BeispielMit der folgenden PATCH-Anfrage wird ein Cluster mit vier sekundären Workern aktualisiert (mit dem Standardtyp oder dem Typ, der beim Erstellen des Clusters angegeben wurde).
PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
"config": {
"secondaryWorkerConfig": {
"numInstances": 4
}
}
}
Fehlerbehebung bei sekundären Workern
Probleme mit Dienstkontoberechtigungen: Sekundäre Worker werden über eine verwaltete Instanzgruppe erstellt. Wenn ein Berechtigungsproblem auftritt, melden Managed Service for Apache Spark Logs nicht, dass sekundäre Worker nicht erstellt wurden. Fehlgeschlagene Worker werden jedoch auf dem Tab VM-Instanzen der Seite Clusterdetails in der Google Cloud Console ohne grünes Häkchen aufgeführt. Öffnen Sie die Managed Service for Apache Spark Cluster-Seite und klicken Sie dann auf den Clusternamen, um die Seite Clusterdetails für den Cluster zu öffnen.
Probleme mit Berechtigungen für verwaltete Instanzgruppen:So prüfen Sie, ob ein Problem mit den Berechtigungen für verwaltete Instanzgruppen vorliegt:
- Suchen Sie den Namen der verwalteten Instanzgruppe (
instanceGroupManagerName).Console
- Öffnen Sie die Managed Service for Apache Spark Cluster Seite und klicken Sie dann auf den Clusternamen, um die Seite Clusterdetails für den Cluster zu öffnen.
- Klicken Sie unten auf der Seite auf Entsprechende REST und sehen Sie sich den Wert
config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerNamean.
Google Cloud CLI
Führen Sie dengcloud dataproc clusters describeBefehl mit dem--formatFlag aus, um deninstanceGroupManagerNameanzuzeigen.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION \ --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
REST API
Senden Sie eineclusters.get-Anfrage, um den Wert vonconfig.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerNamezurückzugeben. - Logs im Log-Explorer ansehen
Wählen Sie den Ressourcentyp
Google Compute Engine Instance Groupaus und filtern Sie nach dem Namen der verwalteten Instanzgruppe.Alternativ können Sie einen Logging-Filter für `resource.type="gce_instance_group" and
resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAMEanwenden.
- Suchen Sie den Namen der verwalteten Instanzgruppe (
Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombinieren
Sie können beim Erstellen eines Managed Service for Apache Spark-Clusters eine Kombination aus Spot- und nicht auf Abruf verfügbaren sekundären Workern angeben.
Einstellungen für sekundäre Worker zum Kombinieren von Spot- mit nicht auf Abruf verfügbaren sekundären Workern
Verwenden Sie beim Erstellen eines Managed Service for Apache Spark-Clusters die folgenden Einstellungen für sekundäre Worker, um eine Mindestkapazität für sekundäre Worker zu erhalten und die Kapazität zu erhöhen, wenn Spot-VMs verfügbar sind:
Anzahl der sekundären Worker:Die Gesamtzahl der bereitzustellenden sekundären Worker.
Typ des sekundären Workers:
spotist der Typ des sekundären Workers, wenn Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombiniert werden.standardCapacityBase:Die Anzahl der nicht auf Abruf verfügbaren (Standard-)Sekundärworker, die bereitgestellt werden sollen. Nicht auf Abruf verfügbare sekundäre Worker werden vor anderen Arten von sekundären Workern bereitgestellt.
standardCapacityPercentAboveBase:Nachdem die Anzahl der sekundären Worker für
standardCapacityBaseerreicht wurde, wird die verbleibende Anzahl der sekundären Worker, die erforderlich ist, um die Gesamtzahl der angeforderten sekundären Worker zu erreichen, mit einer Kombination aus nicht auf Abruf verfügbaren und Spot-VMs gefüllt:standardCapacityPercentAboveBase: Der Prozentsatz der verbleibenden sekundären Worker, die mit nicht auf Abruf verfügbaren VMs gefüllt werden sollen.- Die verbleibende Anzahl, die erforderlich ist, um die Gesamtzahl der angeforderten sekundären Worker zu erreichen, wird mit Spot-VMs gefüllt.
Beispiel :
- Anzahl der sekundären Worker: 15
standardCapacityBase: 5standardCapacityPercentAboveBase: 30%
Ergebnis:
- Nicht auf Abruf verfügbar: 8 = 5 (
standardCapacityBase) + 3 (30% der verbleibenden 10) - Spot: 7 (70% der verbleibenden 10)
- Gesamt = 15
Cluster mit einer Kombination aus Spot- und nicht auf Abruf verfügbaren sekundären Workern erstellen
Sie können die gcloud CLI oder die Managed Service for Apache Spark API verwenden, um beim Erstellen eines Clusters Spot- mit nicht auf Abruf verfügbaren sekundären Workern zu kombinieren.
gcloud
Führen Sie den folgenden Befehl lokal oder in Cloud Shell aus, um einen Cluster mit einer Kombination aus Spot- und nicht auf Abruf verfügbaren sekundären Workern zu erstellen.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --secondary-worker-type=spot \ --num-secondary-workers=NUMBER_SECONDARY_WORKERS \ --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \ --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \ OTHER_FLAGS_AS_NEEDED
Hinweise:
- CLUSTER_NAME: Der Name des neuen Clusters.
- PROJECT_ID: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Console- Google Cloud Dashboard aufgeführt.
- REGION: Eine verfügbare Compute Engine Region zum Ausführen der Arbeitslast.
--secondary-worker-type: Wenn Sie Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombinieren, geben Siespotals Typ des sekundären Workers an.- STANDARD_CAPACITY_BASE und STANDARD_CAPACITY_PERCENT_ABOVE_BASE: Weitere Informationen finden Sie unter Einstellungen für sekundäre Worker zum Kombinieren von Spot- mit nicht auf Abruf verfügbaren sekundären Workern.
- OTHER_FLAGS_AS_NEEDED: Weitere Informationen finden Sie unter gcloud dataproc clusters create.
API
Wenn Sie Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombinieren möchten, legen Sie die
Managed Service for Apache Spark preemptibility, standardCapacityBase, und
standardCapacityPercentAboveBase API-Felder als Teil einer
cluster.create
-Anfrage fest, wie im folgenden JSON-Beispiel gezeigt:
{
"clusterName": "CLUSTER_NAME",
"config": {
"secondaryWorkerConfig": {
"numInstances": 15,
"preemptibility": "spot",
"instanceFlexibilityPolicy": {
"provisioningModelMix": {
"standardCapacityBase": STANDARD_CAPACITY_BASE
"standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE
}
}
}
}
}
Hinweise:
- CLUSTER_NAME: Der Name des neuen Clusters.
preemptibility: Wenn Sie Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombinieren, geben Siespotan.- STANDARD_CAPACITY_BASE und STANDARD_CAPACITY_PERCENT_ABOVE_BASE: Weitere Informationen finden Sie unter Einstellungen für sekundäre Worker zum Kombinieren von Spot- mit nicht auf Abruf verfügbaren sekundären Workern.
Kombination von sekundären Workern mit flexiblen VMs
Sie können Spot- mit nicht auf Abruf verfügbaren sekundären Workern kombinieren und flexible VM-Konfigurationen für sekundäre Worker angeben, wenn Sie einen Cluster erstellen.
Beispiel für die gcloud CLI:
gcloud dataproc clusters create cluster-name \ --project=project-id \ --region=us-central1 \ --secondary-worker-type=spot \ --num-secondary-workers=15 \ --secondary-worker-standard-capacity-base=5 \ --secondary-worker-standard-capacity-percent-above-base=30 \ --secondary-worker-machine-types="type=n2-standard-8,rank=0" \ --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1" ...other flags as needed
Merkmale der Kombination von sekundären Workern
In diesem Abschnitt werden einige Verhaltensweisen und Merkmale beschrieben, die mit der Kombination von Spot- und nicht auf Abruf verfügbaren sekundären Workern verbunden sind.
Präferenz für sekundäre Worker
Managed Service for Apache Spark bevorzugt weder Spot- noch nicht auf Abruf verfügbare VMs, wenn Anwendungen auf sekundären Workern geplant werden.
Skalierung von sekundären Workern
Wenn sekundäre Worker durch Autoscaling oder manuelle Skalierung skaliert werden, behält Managed Service for Apache Spark das angeforderte Verhältnis von Spot- zu nicht auf Abruf verfügbaren Workern bei, wenn sekundäre Worker hinzugefügt werden.
Einstellungen für die Kombination von sekundären Workern aktualisieren
Sie geben die Kombination aus Spot- und nicht auf Abruf verfügbaren sekundären Workern an, wenn Sie einen Managed Service for Apache Spark-Cluster erstellen. Nachdem Sie den Cluster erstellt haben, können Sie die Einstellungen für die Kombination von sekundären Workern nicht mehr ändern.
Vorzeitige Beendigung von Spot-Sekundärworkern
- Managed Service for Apache Spark steuert nicht den Zeitpunkt der vorzeitigen Beendigung von Spot-VMs (siehe Vorzeitige Beendigung von Spot-VMs).
- Wenn eine vorzeitige Beendigung von Spot-VMs auftritt, kann die sekundäre Worker-Gruppe vorübergehend mit reduzierter Kapazität ausgeführt werden, bis Compute Engine die vorzeitig beendeten VMs neu bereitstellt.
- Managed Service for Apache Spark fügt einer sekundären Worker-Gruppe keine Kapazität hinzu, die über die ursprünglichen Einstellungen der Gruppe hinausgeht.