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.
AWS Glue Streaming
AWS Glue Streaming, eine Komponente von AWS Glue, ermöglicht es Ihnen, Streaming-Daten nahezu in Echtzeit effizient zu verarbeiten, sodass Sie wichtige Aufgaben wie Datenaufnahme, Verarbeitung und maschinelles Lernen ausführen können. Mithilfe des Apache Spark-Streaming-Frameworks bietet AWS Glue Streaming einen serverlosen Dienst, der Streaming-Daten in großem Umfang verarbeiten kann. AWS Glue bietet zusätzlich zu Apache Spark verschiedene Optimierungen wie serverlose Infrastruktur, automatische Skalierung, visuelle Auftragsentwicklung, Instant-On-Notebooks für Streaming-Jobs und andere Leistungsverbesserungen.
Anwendungsfälle für Streaming
Zu den häufigsten Anwendungsfällen für Streaming gehören: AWS Glue
Near-real-time Datenverarbeitung: AWS Glue Streaming ermöglicht es Unternehmen, Streaming-Daten nahezu in Echtzeit zu verarbeiten, sodass sie Erkenntnisse ableiten und zeitnahe Entscheidungen auf der Grundlage der neuesten Informationen treffen können.
Betrugserkennung: Sie können AWS Glue Streaming für die Echtzeitanalyse von Streaming-Daten verwenden. Dadurch ist es für die Erkennung betrügerischer Aktivitäten wie Kreditkartenbetrug, Netzwerkeinbrüche oder Online-Betrug von großem Nutzen. Durch die kontinuierliche Verarbeitung und Analyse der eingehenden Daten können Sie verdächtige Muster oder Anomalien schnell erkennen.
Social-Media-Analysen: AWS Glue Streaming kann Social-Media-Daten wie Tweets, Posts oder Kommentare in Echtzeit verarbeiten, sodass Unternehmen Trends verfolgen, Stimmungsanalysen durchführen und den Ruf ihrer Marke in Echtzeit verwalten können.
Analysen im Internet der Dinge (IoT): AWS Glue Streaming eignet sich für die Verarbeitung und Analyse von Datenströmen mit hoher Geschwindigkeit, die von IoT-Geräten, Sensoren und vernetzten Maschinen generiert werden. Es ermöglicht Echtzeit-Überwachung, Anomalie-Erkennung, prädiktive Wartung und andere IoT-Analytik-Anwendungen.
Clickstream-Analyse: AWS Glue Streaming kann Clickstream-Daten von Websites oder mobilen Anwendungen in Echtzeit verarbeiten und analysieren. Dies ermöglicht es Unternehmen, Einblicke in das Benutzerverhalten zu gewinnen, das Benutzererlebnis zu personalisieren und Marketingkampagnen auf der Grundlage von Clickstream-Daten in Echtzeit zu optimieren.
Protokollüberwachung und -analyse: AWS Glue Streaming kann Protokolldaten von Servern, Anwendungen oder Netzwerkgeräten kontinuierlich in Echtzeit verarbeiten und analysieren. Dies hilft bei der Erkennung von Anomalien, der Behebung von Problemen und der Überwachung von Systemzustand und Leistung.
Empfehlungssysteme: AWS Glue Streaming kann Benutzeraktivitätsdaten in Echtzeit verarbeiten und Empfehlungsmodelle dynamisch aktualisieren. Dies ermöglicht personalisierte Empfehlungen in Echtzeit, die auf dem Verhalten und den Vorlieben der Benutzer basieren.
Dies sind einige Beispiele für die vielfältigen Anwendungsfälle, in denen AWS Glue Streaming angewendet werden kann. Die Integration in das AWS Ökosystem und die verwalteten Dienste machen es zu einer bequemen Wahl für die Stream-Verarbeitung und -Analyse in Echtzeit in der Cloud.
Was sind die Vorteile der Verwendung AWS Glue Streamen?
Die Verwendung von AWS Glue Streaming bietet folgende Vorteile:
Serverlos: AWS Glue Streaming ist serverlos, sodass die Infrastruktur nicht verwaltet werden muss. Dadurch wird der betriebliche Aufwand reduziert und Benutzer können sich auf die Datenverarbeitung und Analyseaufgaben konzentrieren, anstatt die Infrastruktur verwalten zu müssen.
Autoscaling: AWS Glue Streaming bietet Autoscaling-Funktionen, mit denen die Verarbeitungskapazität dynamisch an die Arbeitslast angepasst wird. Es wird automatisch auf- oder abskalieren, um Schwankungen im Datenvolumen auszugleichen und eine optimale Leistung und Ressourcennutzung zu gewährleisten.
Visuelle Entwicklung: Die Jobentwicklung per Streaming kann komplex sein. AWS Glue Streaming begegnet dieser Herausforderung, indem es AWS Glue Studio, ein visuelles Authoring-Tool, anbietet. AWS Glue Studio vereinfacht den Prozess der Erstellung von Streaming-Workflows und ermöglicht es Entwicklern, Streaming-Anwendungen visuell zu entwerfen und zu verwalten, wodurch die Lernkurve reduziert und die Produktivität gesteigert wird.
Cost-effective: Als serverloser Dienst bietet AWS Glue Streaming Kosteneffizienz, da die Bereitstellung und Wartung der Infrastruktur überflüssig wird. Die Abrechnung erfolgt auf der Grundlage der bei der Ausführung von Streaming-Aufträgen verbrauchten Ressourcen. Dies ermöglicht eine Kostenoptimierung und Skalierung anhand der tatsächlichen Nutzung.
Bewältigt komplexe Workloads: AWS Glue Streaming ist für die Bewältigung komplexer Streaming-Workloads konzipiert. Es kann große Mengen an Echtzeitdaten verarbeiten und analysieren, fortschrittliche Transformationen unterstützen und sich in andere AWS Dienste integrieren, wodurch ausgefeilte Streaming-Daten-Pipelines und Analyse-Workflows ermöglicht werden.
Keine Abhängigkeit: AWS Glue Streaming bietet Flexibilität und vermeidet eine Anbieterbindung. Nutzer können AWS Glue Streaming als Teil des breiteren AWS Ökosystems nutzen und es nahtlos in andere AWS Dienste integrieren. Dies ermöglicht eine einfache Integration mit bestehenden Datenquellen, Anwendungen und Services, ohne an eine bestimmte Technologie oder Plattform gebunden zu sein.
Wann sollte dies verwendet werden? AWS Glue Streaming?
Es gibt viele Optionen, wenn es um Streaming-Anwendungsfälle geht. Wir empfehlen, in den folgenden Szenarien zu AWS Glue streamen.
Wenn Sie Spark bereits für die Stapelverarbeitung verwenden AWS Glue , ist AWS Glue Streaming die ideale Wahl für Sie. Es bietet einen nahtlosen Übergang zur Erstellung von Streaming-Aufträgen, ohne dass Sie eine neue Sprache oder ein neues Framework lernen müssen. AWS Glue Streaming nutzt Ihr vorhandenes Wissen und Ihre Infrastruktur und vereinfacht den Prozess der Auftragsentwicklung und ermöglicht es Ihnen, Ihre Datenverarbeitungsfunktionen problemlos auf Streaming-Szenarien in Echtzeit auszudehnen.
Wenn Sie einen einheitlichen Service oder ein einheitliches Produkt für Batch-, Streaming- und ereignisgesteuerte Workloads benötigen, ist AWS Glue Streaming die richtige Lösung für Sie. Mit AWS Glue Streaming können Sie Ihre Datenverarbeitungsanforderungen in einem einzigen Framework konsolidieren, wodurch die Komplexität der Verwaltung mehrerer Systeme entfällt. Dies ermöglicht eine effiziente Entwicklung und Pflege verschiedener Daten-Workflows und gewährleistet gleichzeitig Konsistenz und Kompatibilität über verschiedene Workload-Typen hinweg.
AWS Glue Streaming eignet sich gut für Szenarien mit extrem großen Streaming-Datenmengen und komplexen Transformationen, wie z. B. Verknüpfungen zwischen Streams oder relationalen Datenbanken. Es kann riesige Datenströme effizient verarbeiten und analysieren, so dass Sie auch anspruchsvolle Workloads mühelos bewältigen können. Ganz gleich, ob es sich um eine schnelle Datenaufnahme oder um komplizierte Datenmanipulationen handelt, die Skalierbarkeit und die fortschrittlichen Verarbeitungsfunktionen von AWS Glue Streaming sorgen für optimale Leistung und genaue Ergebnisse.
Wenn Sie bei der Erstellung von Streaming-Jobs einen visuellen Ansatz bevorzugen, AWS Glue bietet AWS Glue Studio, mit dem Sie Ihre Streaming-Anwendungen visuell entwerfen und verwalten und so den Entwicklungsprozess vereinfachen können. Diese intuitive Oberfläche ermöglicht es Entwicklern, Streaming-Workflows über eine visuelle Oberfläche zu erstellen, zu konfigurieren und zu überwachen, wodurch die Lernkurve gesenkt und die Produktivität erhöht wird.
AWS Glue Streaming ist eine hervorragende Wahl für Anwendungsfälle nahezu in Echtzeit, in denen strenge SLAs (Service Level Agreements) gelten, die länger als 10 Sekunden sind.
Wenn Sie einen transaktionalen Data Lake mit Apache Iceberg, Apache Hudi oder Delta Lake erstellen, bietet AWS Glue Streaming native Unterstützung für diese offenen Tabellenformate. Diese nahtlose Integration ermöglicht es Ihnen, Streaming-Daten direkt aus diesen transaktionalen Data Lakes zu verarbeiten und so die Datenkonsistenz, -integrität und -kompatibilität sicherzustellen.
Wenn Streaming-Daten für eine Vielzahl von Datenzielen aufgenommen werden müssen: AWS Glue Streaming bietet native Ziele für eine Vielzahl von Datenzielen wie Amazon Redshift, Amazon RDS, Amazon Aurora, Oracle, SQL Server und andere Ziele.
Unterstützte Datenquellen
AWS Glue Streaming unterstützt die folgenden Datenquellen:
Amazon Kinesis
Amazon MSK (Managed Streaming für Apache Kafka)
Self-managed Apache Kafka
Unterstützte Datenziele
AWS Glue Streaming unterstützt eine Vielzahl von Datenzielen wie:
Datenziele, die von AWS Glue Data Catalog unterstützt werden
Amazon S3
Amazon Redshift
MySQL
PostgreSQL
Oracle
Microsoft SQL Server
Snowflake
Jede Datenbank, die mit JDBC verbunden werden kann
Apache Iceberg, Delta und Apache Hudi
AWS Glue Marketplace-Konnektoren
Aktivierung des Echtzeitmodus für Streaming-Jobs
Real-time mode (RTM) ist ein neues Ausführungsmodell für Spark Structured Streaming, das in 6.0 verfügbar ist. AWS Glue RTM reduziert die Ende-zu-Ende-Latenz von Sekunden oder Minuten auf Sekundenbruchteile. Real-time Der Modus gilt nur für Spark Structured Streaming-Jobs. Er gilt nicht für ältere Spark Streaming (dStreams) oder andere Jobtypen.
RTM verwendet. Trigger.RealTime Aufgaben werden kontinuierlich innerhalb eines Batch-Fensters (standardmäßig 5 Minuten) ausgeführt und verarbeiten Datensätze, sobald sie eintreffen, anstatt Daten über Intervalle hinweg anzuhäufen. Dies unterscheidet sich vom Standard-Micro-Batch-Modell, bei dem forEachBatch /Aufgaben in jedem Intervall Trigger.ProcessingTime abfragt, verarbeitet, festschreibt und neu startet.
Wichtig
RTM erfordert ein ausdrückliches Opt-In über ein Job-Argument. Wenn nicht genügend Taskslots vorhanden sind, um alle Quellpartitionen abzudecken, löscht RTM stillschweigend nicht zugewiesene Partitionen. Sie müssen genügend Worker bereitstellen, um alle Ihre Kafka-Partitionen abzudecken.
Voraussetzungen
Bevor Sie den Echtzeitmodus aktivieren, stellen Sie sicher, dass Ihr Job die folgenden Anforderungen erfüllt:
-
AWS Glue Version 6.0
-
Job muss Spark Structured Streaming verwenden. Real-time Der Modus gilt nicht für ältere Spark Streaming (dStreams) oder andere Jobtypen.
-
Der Jobtyp muss Spark Streaming (
gluestreamingBefehl) sein -
Die Arbeitssprache muss Scala (
--job-language scala) sein. PySpark RTM-Unterstützung ist erst mit Spark 4.2 verfügbar. -
Nur Kafka-Quelle. Amazon Kinesis wird für RTM in 6.0 nicht unterstützt. AWS Glue
-
Nur statusfreie Operationen (auswählen, filtern, projizieren, zuordnen). Zustandsbehaftete Operationen wie Aggregationen, Verknüpfungen, Deduplizierung und Fensteroperationen werden nicht unterstützt.
-
Der Ausgabemodus muss Update sein. Der Anfügemodus wird mit RTM nicht unterstützt.
-
Auto-scaling ist nicht mit dem Echtzeitmodus kompatibel. Aktivieren Sie die automatische Skalierung nicht für RTM-Jobs. Konfigurieren Sie eine feste Anzahl von Workern, die ausreicht, um alle Kafka-Partitionen in Ihrem Quellthema abzudecken.
Wann sollte der Echtzeitmodus verwendet werden
Real-time Der Modus ist für eine bestimmte Klasse von Streaming-Workloads konzipiert. Erwägen Sie, den Echtzeitmodus zu verwenden, wenn:
-
Sie benötigen eine Ende-zu-Ende-Latenz von unter einer Sekunde und die Microbatch-Latenz (1—2 Sekunden oder mehr) ist für Ihren Anwendungsfall zu hoch.
-
Ihre Pipeline führt zustandslose Transformationen durch, z. B. das Filtern, Projizieren, Anreichern oder Weiterleiten von Datensätzen von Kafka nach Kafka oder einer anderen Quelle.
-
Sie haben eine feste, vorhersehbare Anzahl von Kafka-Partitionen und können entsprechend Workers bereitstellen.
-
Ihre Jobs sind in Scala geschrieben.
Verwenden Sie den Micro-Batch-Modus weiterhin, wenn:
-
Sie benötigen statusbehaftete Operationen wie Aggregationen, Verknüpfungen, Deduplizierung oder Fensterberechnungen.
-
Sie verwenden Amazon Kinesis als Quelle.
-
Du schreibst PySpark Jobs.
-
Sie verlassen sich auf die automatische Skalierung, um variable Datenmengen zu verarbeiten.
-
Sie verwenden die
forEachBatchoder GlueContext Streaming-API. -
Second-level Die Latenz ist für Ihren Anwendungsfall akzeptabel.
Wie funktioniert der Echtzeitmodus
Im Folgenden wird der Unterschied zwischen dem Micro-Batch-Modell und dem Echtzeitmodus beschrieben:
- Micro-batch Modus
-
In jedem Intervall werden Aufgaben gestartet, gesammelte Daten gelesen, die Daten verarbeitet, der Checkpoint festgeschrieben, Aufgaben beendet und wiederholt. Die Mindestlatenz beträgt ca. 1—2 Sekunden.
- Real-time Modus
-
Aufgaben werden einmal gestartet und für die Dauer von
batchDurationMs(standardmäßig 5 Minuten) ausgeführt. Aufgaben verarbeiten Datensätze, sobald sie ankommen, mit einer Latenz von unter einer Sekunde. Zum Stichtag werden die Aufgaben gemeinsam beendet. Der Treiber bestätigt den Checkpoint, und der nächste Batch startet die Aufgaben neu.
Beide Modi verwenden dasselbe Checkpoint-Format und denselben Wiederherstellungsmechanismus. Der entscheidende Unterschied ist die Lebensdauer der Aufgaben. Micro-batch Der Modus beendet die Aufgaben und startet sie in jedem Intervall neu. Real-time Der Modus sorgt dafür, dass Aufgaben innerhalb eines längeren Batch-Fensters kontinuierlich ausgeführt werden.
Wichtig
Wenn nicht genügend Taskslots vorhanden sind, um alle Quellpartitionen zu verarbeiten, löscht RTM automatisch die nicht zugewiesenen Partitionen. Stellen Sie sicher, dass Sie genügend Arbeitskräfte bereitstellen, um alle Partitionen abzudecken.
Um den Echtzeitmodus zu aktivieren
Sie aktivieren den Echtzeitmodus, indem Sie das --enable-real-time-mode Job-Argument auf setzentrue. Sie können dieses Argument in der AWS Glue Konsole oder über die API festlegen.
Um den Echtzeitmodus zu aktivieren (Konsole)
-
Öffnen Sie die AWS Glue Konsole
und öffnen Sie Ihren Streaming-Job. -
Wählen Sie die Registerkarte Job details (Auftragsdetails) aus.
-
Wählen Sie für die Glue-Version Glue 6.0. Wählen Sie für Type die Option Spark Streaming aus.
-
Scrollen Sie zum Abschnitt Job-Parameter.
-
Wählen Sie Neuen Parameter hinzufügen.
-
Geben Sie für Key (Schlüssel)
--enable-real-time-modeein. Geben Sie für Werttrueein. -
Wählen Sie Speichern.
Anmerkung
Die führenden Gedankenstriche sind erforderlich. Bei den Jobparametern handelt es sich um die Konsolenansicht von. DefaultArguments
Um den Echtzeitmodus (API) zu aktivieren
Das --enable-real-time-mode Flag wird in der DefaultArguments Map der Jobdefinition gespeichert. Sie können es festlegen, wenn Sie einen Job erstellen oder aktualisieren.
Um einen neuen Job zu erstellen (AWS CLI)
Führen Sie den folgenden Befehl aus:
aws glue create-job \ --name my-rtm-job \ --role arn:aws:iam::123456789012:role/MyGlueRole \ --glue-version 6.0 \ --worker-type G.1X --number-of-workers 4 \ --command '{"Name":"gluestreaming","ScriptLocation":"s3://my-bucket/scripts/rtm-job.scala"}' \ --default-arguments '{ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/" }' \ --region us-east-2
Um einen neuen Job zu erstellen (boto3)
Verwenden Sie folgenden Code:
import boto3 glue = boto3.client("glue", region_name="us-east-2") glue.create_job( Name="my-rtm-job", Role="arn:aws:iam::123456789012:role/MyGlueRole", GlueVersion="6.0", WorkerType="G.1X", NumberOfWorkers=4, Command={ "Name": "gluestreaming", "ScriptLocation": "s3://my-bucket/scripts/rtm-job.scala", }, DefaultArguments={ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/", }, )
Um einen vorhandenen Job zu aktualisieren (AWS CLI)
Führen Sie den folgenden Befehl aus:
aws glue update-job \ --job-name my-existing-job \ --job-update '{ "GlueVersion": "6.0", "DefaultArguments": { "--enable-real-time-mode": "true", "--job-language": "scala" } }'
Schreiben Sie Ihr Streaming-Skript
Das Job-Argument deklariert die Absicht, den Echtzeitmodus zu verwenden. Ihr Script wählt den Trigger aus.
Das folgende Scala-Beispiel zeigt eine Streaming-Abfrage, die Folgendes verwendetTrigger.RealTime:
import org.apache.spark.sql.streaming.Trigger val query = df.writeStream .format("kafka") .outputMode("update") .trigger(Trigger.RealTime(60000L)) // checkpoint interval in milliseconds .start() query.awaitTermination()
Trigger.RealTimebenötigt ein Checkpoint-Intervall in Millisekunden. Der Aktualisierungs-Ausgabemodus ist erforderlich. Der Modus „Anhängen“ wirft OUTPUT_MODE_NOT_SUPPORTED aus.
Sie können Modi in einem Skript mischen, solange das Flag gesetzt ist:
dfA.writeStream.outputMode("update").trigger(Trigger.RealTime(60000L)).start() dfB.writeStream.outputMode("append").trigger(Trigger.ProcessingTime("30 seconds")).start()
Verhalten, wenn das Flag fehlt
Im Folgenden wird beschrieben, wie sich der Job verhält, wenn das --enable-real-time-mode Flag nicht gesetzt ist:
-
Ein Job, der eine Echtzeitabfrage ohne das
--enable-real-time-modeFlag startet, schlägt beim Abfragestart fehl. Die Fehlermeldung weist Sie an, das Argument hinzuzufügen. -
Micro-batch-only Jobs sind niemals vom Fehlen dieses Flags betroffen.
-
Ein Job, der das Kennzeichen setzt, aber nur Micro-Batch-Abfragen verwendet, ist ebenfalls nicht betroffen.
Überlegungen und Einschränkungen
Beachten Sie Folgendes, wenn Sie den Echtzeitmodus verwenden:
- Die Partition fällt ab
-
Wenn nicht genügend Taskslots vorhanden sind, um alle Quellpartitionen abzudecken, werden nicht zugewiesene Partitionen nicht verarbeitet. Stellen Sie Mitarbeiter zur Verfügung, um alle Kafka-Partitionen abzudecken.
- Keine automatische Skalierung
-
Aktivieren Sie die automatische Skalierung nicht für Jobs im Echtzeitmodus. Auto-scalingist nicht mit RTM kompatibel und führt eine Latenz ein, die den Vorteilen niedriger Latenz entgegenwirkt. Stellen Sie eine feste Anzahl von Workern bereit, die der Anzahl der Kafka-Partitionen in Ihrem Quellthema entspricht oder diese übersteigt.
- Nur Kafka
-
Die Amazon Kinesis-Quelle unterstützt RTM in 6.0 nicht. AWS Glue
- Nur Scala
-
PySpark wird für RTM erst in Spark 4.2 unterstützt.
- Nur staatenlos
-
Aggregationen, Verknüpfungen, Deduplizierung und Fensteroperationen werden nicht unterstützt.
transformWithState - für inkompatible EachBatch
-
RTM verwendet das
forEachBatchModell nicht.Trigger.RealTimeDirektwriteStreammit verwenden. - Checkpoint-Wiederherstellung
-
Beim Neustart des Jobs wird RTM vom letzten Checkpoint wiederhergestellt. Checkpoints treten alle auf.
batchDurationMsWorst-case Die Wiederaufbereitung ist die Dauer eines Batch-Fensters (Semantik „mindestens einmal“).