AWS Glue-Streaming-Auto-Scaling
Streaming-ETL-Aufträge in AWS Glue verbrauchen kontinuierlich Daten aus Streaming-Quellen, bereinigen und transformieren die Daten während der Übertragung und machen sie zur Analyse verfügbar. Durch die Überwachung jeder Phase der Auftragsausführung kann die AWS Glue-Autoskalierung Worker deaktivieren, wenn diese sich im Leerlauf befinden, oder Worker hinzufügen, wenn zusätzliche Parallelverarbeitung möglich ist.
In den folgenden Abschnitten finden Sie Informationen zu AWS Glue-Streaming-Auto-Scaling
Aktivieren von Auto Scaling in AWS Glue Studio
Wählen Sie auf der Registerkarte Job details (Auftragsdetails) in AWS Glue Studio als Typ Spark oder Spark Streaming und als Glue version (Glue-Version) Glue 3.0 oder Glue 4.0 aus. Dann erscheint unter Worker-Typ ein Kontrollfeld.
-
Wählen Sie die Option Automatisches Skalieren der Worker-Anzahl aus.
-
Legen Sie die Maximale Worker-Anzahl fest, um die maximale Anzahl von Workern zu definieren, die für die Auftragsausführung ausgegeben werden können.
Aktivieren von Auto Scaling mit AWS-CLI oder -SDK
Um Auto Scaling für die Auftragsausführung über die AWS-CLI zu aktivieren, führen Sie start-job-run mit der folgenden Konfiguration aus:
{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, and R.8X are supported for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }
Wenn die ETL-Auftragsausführung abgeschlossen ist, können Sie auch get-job-run aufrufen, um die tatsächliche Ressourcennutzung der Ausführung in DPU-Sekunden zu prüfen. Hinweis: Das neue Feld DPUSeconds wird nur für Ihre Batch-Aufträge auf AWS Glue 3.0 oder höher angezeigt, die mit Auto Scaling aktiviert sind. Dieses Feld wird für Streaming-Aufträge nicht unterstützt.
$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }
Sie können Auftragsausführungen mit Auto Scaling auch über das AWS Glue-SDK konfigurieren. Die Konfiguration ist dieselbe.
Funktionsweise
Skalieren über Micro-Batches hinweg
Anhand des folgenden Beispiels wird beschrieben, wie Auto Scaling funktioniert.
-
Sie haben einen AWS Glue-Auftrag, der mit 50 DPUs beginnt.
-
Auto Scaling ist aktiviert.
In diesem Beispiel untersucht AWS Glue die Metrik „batchProcessingTimeInMs“ für einige Micro-Batches und stellt fest, ob Ihre Aufträge innerhalb der von Ihnen festgelegten Fenstergröße abgeschlossen werden. Wenn Ihre Aufträge schneller abgeschlossen werden, und je nachdem, wie schnell sie abgeschlossen werden, kann es sein, dass AWS Glue herunterskaliert wird. Diese mit „numberAllExecutors“ aufgezeichnete Metrik kann in Amazon CloudWatch überwacht werden, um zu sehen, wie Auto Scaling funktioniert.
Die Anzahl der Executors skaliert exponentiell nach oben oder unten, nachdem jeder Micro-Batch abgeschlossen ist. Wie Sie aus dem Amazon CloudWatch-Überwachungsprotokoll ersehen können, prüft AWS Glue die Anzahl der benötigten Executors (orangefarbene Linie) und skaliert die Executors (blaue Linie) automatisch entsprechend.
Sobald AWS Glue die Anzahl der Executors herunterskaliert und feststellt, dass die Datenmengen zunehmen, wodurch sich die Verarbeitungszeit für Micro-Batches erhöht, wird AWS Glue auf 50 DPUs hochskaliert, was die festgelegte Obergrenze darstellt.
Skalieren innerhalb von Micro-Batches
Im obigen Beispiel überwacht das System einige abgeschlossene Micro-Batches, um zu entscheiden, ob hoch- oder herunterzuskalieren ist. Längere Zeitfenster erfordern eine Autoskalierung, um innerhalb des Mikrobatches schneller reagieren zu können, anstatt auf mehrere Mikrobatches zu warten. Für diese Fälle können Sie eine zusätzliche Konfiguration --auto-scaIe-within-microbatch zu true verwenden. Sie können dies zu den AWS Glue-Auftragseigenschaften in AWS Glue Studio hinzufügen, wie unten gezeigt.