Vertikales Autoscaling ist ein Feature, mit dem Dataflow Prime den für Worker verfügbaren Arbeitsspeicher dynamisch hoch- oder herunterskalieren kann, um die Anforderungen des Jobs zu erfüllen. Dieses Feature ist so konzipiert, dass Jobs gegen Fehler aufgrund mangelnden Arbeitsspeichers (Out-of-memory, OOM) resistent werden und die Pipeline-Effizienz maximiert wird. Dataflow Prime überwacht Ihre Pipeline, erkennt Situationen, in denen die Worker nicht genügend Arbeitsspeicher haben oder diesen überschreiten, und ersetzt sie dann durch neue Worker mit mehr oder weniger Arbeitsspeicher.
Wichtig: Da vertikales Autoscaling vorhandene Worker durch neue Worker ersetzt, empfehlen wir dringend die Verwendung benutzerdefinierter Container, um die Latenz zu verbessern, die sich möglicherweise aus der Größenanpassung der Worker ergibt.
Streaming
Vertikales Autoscaling ist für alle neuen Streamingjobs, die Dataflow Prime verwenden, standardmäßig aktiviert.
Wenn Sie einen Job aus einer Vorlage über die Befehlszeile starten, können Sie das vertikale Autoscaling deaktivieren, indem Sie das Flag --additional_experiments=disable_vertical_memory_autoscaling
übergeben.
Alle Java- und Python-Pipelines mit Dataflow Prime unterstützen vertikales Autoscaling. Sie können Dataflow Prime-Streaming-Java-Pipelines ohne Streaming Engine verwenden. Für ein optimales vertikales Autoscaling wird jedoch die Aktivierung von Streaming Engine empfohlen.
Batch
Bei Dataflow Prime-Batchjobs wird vertikales Autoscaling erst nach vier OOM-Fehlern hochskaliert.
- Beim vertikalen Autoscaling wird nur hochskaliert, um Jobfehler zu vermeiden.
- Der gesamte Pool wird für den Rest des Jobs hochskaliert.
- Wenn Ressourcenhinweise verwendet und mehrere Pools erstellt werden, wird jeder Pool separat hochskaliert.
Bei Batchjobs ist vertikales Autoscaling nicht standardmäßig aktiviert. Legen Sie die folgenden Pipelineoptionen fest, um vertikales Autoscaling für Batchjobs zu aktivieren:
--experiments=enable_batch_vmr
--experiments=enable_vertical_memory_autoscaling
Führen Sie einen der folgenden Schritte aus, um vertikales Autoscaling für Batchjobs zu deaktivieren:
- Legen Sie die Pipelineoption
--experiments=enable_batch_vmr
nicht fest. - Legen Sie die Pipelineoption
--experiments=disable_vertical_memory_autoscaling
fest.
Beschränkungen
- Nur der Arbeitsspeicher der Worker kann vertikal skaliert werden.
- Standardmäßig hat die Arbeitsspeicherskalierung eine Obergrenze von 16 GiB (26 GiB bei Verwendung von GPUs) und eine Untergrenze von 6 GiB (12 GiB bei Verwendung von GPUs). Die Angabe eines Ressourcenhinweises kann sowohl die Ober- als auch die Untergrenze ändern.
- Vertikales Autoscaling wird für Pools mit A100-GPUs nicht unterstützt.
- Bei Batchjobs können Bundles mit einem fehlerhaften Element mehr als viermal wiederholt werden, bevor die Pipeline vollständig fehlschlägt.
- Vertikales Autoscaling wird in VPC Service Controls nicht unterstützt. Wenn Sie Dataflow Prime aktivieren und einen neuen Job in einem VPC Service Controls-Perimeter starten, verwendet der Job Dataflow Prime ohne vertikales Autoscaling.
- Wenn Sie die korrekte Anpassung mit vertikalem Autoscaling verwenden, werden nur Batchpipelines unterstützt.
Vertikales Autoscaling überwachen
Vertikale Autoscaling-Vorgänge werden in den Job- und Worker-Logs veröffentlicht. Informationen zum Anzeigen dieser Logs finden Sie unter Messwerte für Dataflow-Jobs.
Auswirkungen auf horizontales Autoscaling
In Dataflow Prime funktioniert vertikales Autoscaling zusammen mit horizontalem Autoscaling. Durch diese Kombination kann Dataflow Prime Worker nahtlos hoch- oder herunterskalieren und so die Anforderungen Ihrer Pipeline optimal erfüllen sowie die Auslastung der Rechenkapazität maximieren.
Vertikales Autoscaling (das den Worker-Arbeitsspeicher anpasst) erfolgt standardmäßig mit einer niedrigeren Häufigkeit als horizontales Autoscaling (das die Anzahl der Worker anpasst). Das horizontale Autoscaling wird während und bis zu 10 Minuten nach dem Auslösen einer Aktualisierung durch vertikales Autoscaling deaktiviert. Wenn nach dieser 10-Minuten-Grenze ein erheblicher Rückstand an Eingabedaten besteht, ist es wahrscheinlich, dass ein horizontales Autoscaling erfolgt, um diesen Rückstand aufzulösen. Mehr über horizontales Autoscaling für Streamingpipelines erfahren Sie unter Streaming-Autoscaling.
Fehlerbehebung
In diesem Abschnitt finden Sie Anleitungen zur Behebung häufiger Probleme beim vertikalen Autoscaling.
Vertikales Autoscaling scheint nicht zu funktionieren
Wenn vertikales Autoscaling nicht funktioniert, prüfen Sie die folgenden Jobdetails.
Suchen Sie nach der folgenden Jobnachricht, um zu prüfen, ob das vertikale Autoscaling aktiv ist:
Vertical Autoscaling is enabled. This pipeline is receiving recommendations for resources allocated per worker.
Wenn diese Meldung nicht angegeben ist, wird das vertikale Autoscaling nicht ausgeführt.
Prüfen Sie bei Streamingpipelines, ob das Flag
enable_vertical_memory_autoscaling
festgelegt ist. Prüfen Sie bei Batch-Pipelines, ob die Flagsenable_vertical_memory_autoscaling
undenable_batch_vmr
festgelegt sind.Prüfen Sie, ob die Cloud Autoscaling API für Ihr Google Cloud-Projekt aktiviert ist. API aktivieren
Prüfen Sie, ob Ihr Job Dataflow Prime ausführt. Weitere Informationen finden Sie unter Dataflow Prime aktivieren.
Der Job beobachtet einen hohen Rückstand und ein hohes Wasserzeichen
Diese Anleitung gilt nur für Streamingjobs. Wenn die vertikale Anpassung der Worker länger als ein paar Minuten dauert, kann der Job einen hohen Rückstand an Eingabedaten und ein hohes Wasserzeichen aufweisen. Zur Lösung dieses Problems in Python-Pipelines empfehlen wir dringend die Verwendung benutzerdefinierter Container, da diese die Latenz verbessern können, die sich aus der Umformung der Worker ergeben kann. Zur Behebung dieses Problems empfehlen wir Ihnen dringend, Streaming Engine und Runner v2 zu aktivieren. Wenn das Problem nach dem Aktivieren dieser Features weiterhin besteht, wenden Sie sich an den Kundendienst.
Vertikales Autoscaling hat die Speicherkapazität erreicht.
Wenn keine Ressourcenhinweise angegeben sind, skaliert vertikales Autoscaling den Arbeitsspeicher standardmäßig nicht über 16 GiB pro Worker (26 GiB bei Verwendung von GPUs) oder weniger als 6 GiB pro Worker (12 GiB bei Verwendung von GPUs). Wenn diese Limits erreicht sind, wird in Cloud Logging eine der folgenden Lognachrichten generiert.
Streamingjobs:
Vertical Autoscaling has a desire to upscale memory, but we have hit the memory
scaling limit of X GiB. This is only a problem if the pipeline continues to see
memory throttling and/or OOMs.
Batchjobs:
Vertical Autoscaling has a desire to upscale memory, but we have hit the memory
scaling limit of 16.0 GiB. Job will fail because we have upsized to maximum size,
and the pipeline is still OOMing.
Wenn Ihre Pipeline weiterhin OOM-Fehler anzeigt, können Sie die richtige Anpassung (Ressourcenhinweise) verwenden, um die Speicheranforderungen für Ihre Transformation zu definieren. Geben Sie dazu min_ram="numberXB"
an. Durch diese Einstellung kann Dataflow eine Erstkonfiguration für Ihre Worker auswählen, die eine höhere Speicherkapazität unterstützen können. Wenn Sie diese Erstkonfiguration ändern, kann dies jedoch die für Ihre Pipeline verfügbare latente Parallelität erhöhen. Wenn Sie eine speicherintensive Transformation haben, kann dies dazu führen, dass Ihre Pipeline aufgrund der höheren verfügbaren Parallelität mehr Arbeitsspeicher als zuvor verwendet. In solchen Fällen kann es erforderlich sein, Ihre Transformation zu optimieren, um ihren Speicherbedarf zu reduzieren.
Das Arbeitsspeicherlimit des Workers stabilisiert sich nicht und variiert im Laufe der Zeit trotz konstanter Speichernutzung an.
Diese Anleitung gilt nur für Streamingjobs. Aktivieren Sie für Java-Pipelines Streaming Engine und Runner v2. Wenn das Problem weiterhin besteht oder Sie dieses Verhalten in Python-Pipelines beobachten, wenden Sie sich an den Kundendienst.
Häufig genutzte Logeinträge
In diesem Abschnitt werden die allgemeinen Logeinträge beschrieben, die beim Aktivieren des vertikalen Autoscalings generiert werden.
Vertikales Autoscaling ist aktiviert. Diese Pipeline erhält Empfehlungen für Ressourcen, die pro Worker zugewiesen werden.
Diese Nachricht gibt an, dass vertikales Autoscaling aktiv ist. Das Fehlen dieser Nachricht zeigt an, dass vertikales Autoscaling nicht im Worker-Pool aktiv ist.
Wenn vertikales Autoscaling nicht aktiv ist, finden Sie unter Vertikales Autoscaling scheint nicht zu funktionieren. Was soll ich prüfen? eine Anleitung zur Fehlerbehebung.
Aktualisierung des vertikalen Autoscalings ausgelöst, um das Limit des Worker-Speichers für einen Pool von X GiB auf Y GiB zu ändern.
Diese Nachricht gibt an, dass vertikales Autoscaling eine Größenänderung des Worker-Pools ausgelöst hat.