Überwachung für die DPU-Kapazitätsplanung - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überwachung für die DPU-Kapazitätsplanung

Sie können die Auftragsmetriken in AWS Glue verwenden, um die Anzahl der Datenverarbeitungseinheiten (DPUs) zu schätzen, die zur Skalierung eines AWS Glue-Auftrags verwendet werden können.

Anmerkung

Diese Seite trifft nur auf AWS Glue-Versionen 0.9 und 1.0 zu. Neuere Versionen von AWS Glue enthalten kostensparende Funktionen, die zusätzliche Überlegungen bei der Kapazitätsplanung mit sich bringen.

Profilierter Code

Das folgende Skript liest eine Amazon Simple Storage Service (Amazon S3)-Partition mit 428 gezippten JSON-Dateien. Das Skript wendet ein Mapping an, um die Feldnamen zu ändern, und konvertiert und schreibt sie in Amazon S3 im Apache-Parquet-Format. Sie stellen standardmäßig 10 DPUs bereit und führen diesen Auftrag aus.

datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json") applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec]) datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")

Visualisieren der profilierten Metriken auf der AWS Glue-Konsole

Auftragsausführung 1: In dieser Auftragsausführung zeigen wir, wie Sie feststellen, ob zu wenige DPUs im Cluster bereitgestellt werden. Die Auftragsausführungsfunktionalität in AWS Glue zeigt die Gesamtzahl der aktiven Executors, die Anzahl der abgeschlossenen Phasen und die Anzahl der maximal benötigten Executors.

Die Anzahl der maximal benötigten Executors wird berechnet, indem die Gesamtzahl der laufenden Aufgaben und anstehenden Aufgaben addiert und durch die Aufgaben pro Executor dividiert wird. Dieses Ergebnis ist ein Maß für die Gesamtanzahl der Executors, die erforderlich sind, um die aktuelle Last zu erfüllen.

Im Gegensatz dazu misst die Anzahl der aktiven Executors, wie viele aktive Apache-Spark-Aufgaben ausgeführt werden. Im weiteren Verlauf des Auftrags können sich die maximal benötigten Executors ändern und gehen in der Regel gegen Ende des Auftrags zurück, da die Warteschlange der anstehenden Aufgaben abnimmt.

Die horizontale rote Linie im folgenden Diagramm zeigt die Anzahl der maximal zugewiesenen Executors, die von der Anzahl der DPUs abhängig, die Sie für den Auftrag zuweisen. In diesem Fall weisen Sie 10 DPUs für die Auftragsausführung zu. Eine DPU ist für die Verwaltung reserviert. Neun DPUs führen zwei Executors aus, und ein Executor ist für den Spark-Treiber reserviert. Der Spark-Treiber wird in der primären Anwendung ausgeführt. Die Anzahl der maximalen zugewiesenen Executors ist also 2* 9 – 1 = 17 Executors.

Die Auftragsmetriken, die die aktiven Executors und die maximal benötigten Executors zeigen.

Wie der Graph zeigt, beginnt die Anzahl der maximal benötigten Executors bei 107 zu Beginn des Auftrags, während die Anzahl der aktiven Executors bei 17 bleibt. Dies ist die gleiche wie die Anzahl der maximalen zugewiesenen Executors bei 10 DPUs. Das Verhältnis zwischen den maximal benötigten Executors und den maximal zugewiesenen Executors (zu beiden wird für den Spark-Treiber 1 addiert) ergibt den Faktor für die zu niedrig ausgelegte Bereitstellung: 108/18 = 6x. Sie können 6 (unter Bereitstellungsverhältnis) * 9 (aktuelle DPU-Kapazität - 1) + 1 DPUs = 55 DPUs bereitstellen, um den Auftrag zu skalieren, um ihn mit maximaler Parallelität auszuführen und schneller zu beenden.

Die AWS Glue-Konsole zeigt die detaillierten Auftragsmetriken als statische Linie an, die die ursprüngliche Anzahl der maximal zugeteilten Executors darstellt. Die Konsole berechnet die maximal zugeteilten Executors aus der Auftragsdefinition für die Metriken. Im Fall detaillierter Auftragsausführungsmetriken berechnet die Konsole hingegen die maximal zugeteilten Executors aus der Auftragsausführungsdefinition, insbesondere die für die Auftragsausführung zugeteilten DPUs. Um Metriken für eine einzelne Auftragsausführung anzuzeigen, wählen Sie die Auftragsausführung und anschließend View run metrics (Ausführungsmetriken anzeigen) aus.

Die Auftragsmetriken, die die ETL-Datenbewegung zeigen.

Bei der Betrachtung der gelesenen und geschriebenen Amazon-S3-Bytes erkennen Sie, dass der Auftrag alle sechs Minuten parallel Daten aus Amazon S3 streamt und schreibt. Alle Kerne der zugewiesenen DPUs führen Lese- und Schreiboperationen für Amazon S3 aus. Die maximale Anzahl an benötigten Executors von 107 entspricht auch der Anzahl der Dateien im Amazon-S3-Eingangspfad 428. Jeder Executor können vier Spark-Aufgaben zur Verarbeitung von vier Eingangsdateien (gezippte JSON-Dateien) starten.

Bestimmen der optimalen DPU-Kapazität

Basierend auf den Ergebnissen der vorherigen Aufgabenausführung können Sie die Gesamtzahl der zugewiesenen DPUs auf 55 erhöhen und beobachten, welche Leistung der Auftrag erbringt. Der Auftrag wird in weniger als drei Minuten abgeschlossen – der Hälfte der Zeit, die zuvor erforderlich war. Die Auftragsskalierung erfolgt in diesem Fall nicht linear, da es sich um einen kurzen Auftrag handelt.. Aufträge mit langdauernden Aufgaben oder einer großen Anzahl von Aufgaben (eine große Anzahl maximal benötigter Executors) profitieren von einer annähernd linearen DPU-Skalierung für die Leistungsbeschleunigung.

Graph, der die Gesamtzahl der zugewiesenen DPUs zeigt

Wie die folgende Abbildung zeigt, erreicht die Gesamtzahl der aktiven Executors die maximale Anzahl zugewiesener Executors107. Ebenso liegt die maximale Anzahl benötigter Executors nie über den maximal zugewiesenen Executors. Die maximale Anzahl erforderlicher Executors wird anhand der Anzahl der aktiven und ausstehenden Aufgaben berechnet, sie könnte also kleiner sein als die Anzahl der aktiven Executors. Dies liegt daran, dass es Executors geben kann, die für einen kurzen Zeitraum teilweise oder vollständig im Leerlauf sind und noch nicht außer Betrieb genommen wurden.

Graph, der die Gesamtzahl aktiver Executors zeigt, die die maximal zugewiesene Anzahl erreicht.

Dieser Auftrag nutzt sechsmal mehr Executors für parallele Lese- und Schreibvorgänge in Amazon S3. Dies hat zur Folge, dass diese Auftragsausführung mehr Amazon-S3-Bandbreite für Lese- und Schreibvorgänge verwendet und schneller fertiggestellt wird.

Identifizieren zu viel bereitgestellter DPUs

Als Nächstes können Sie bestimmen, ob die Skalierung des Auftrags mit 100 DPUs (99* 2 = 198 Executors) eine weitere Verbesserung unterstützt. Wie der folgende Graph zeigt, dauert die Fertigstellung des Auftrags immer noch drei Minuten. In ähnlicher Weise skaliert der Auftrag nicht über 107 Executors (Konfiguration mit 55 DPUs), und die restlichen 91 Executors sind überschüssig und werden überhaupt nicht verwendet. Dies zeigt, dass eine Erhöhung der Anzahl der DPUs möglicherweise nicht immer die Leistung verbessert, wie die maximale Anzahl benötigter Executors zeigt.

Graph der zeigt, dass die Auftragsleistung nicht immer besser wird, wenn die Anzahl der DPUs erhöht wird.

Vergleich von Zeitunterschieden

Die drei in der folgenden Tabelle gezeigten Auftragsausführungen fassen die Ausführungszeiten für 10 DPUs, 55 DPUs und 100 DPUs zusammen. Sie finden die DPU-Kapazität zur Verbesserung der Auftragsausführungszeit unter Verwendung der Schätzungen, die Sie bei der Überwachung der ersten Auftragsausführung eingerichtet haben.

Auftrags-ID Anzahl der DPUs Execution time (Ausführungszeit)
jr_c894524c8ef5048a4d9... 10 6 Minuten
jr_1a466cf2575e7ffe6856... 55 3 Minuten
jr_34fa1ed4c6aa9ff0a814... 100 3 Minuten