Erste Schritte mit Amazon Kinesis Data Streams

Erste Schritte

Amazon Kinesis Data Streams ist ein extrem skalierbarer, äußerst robuster Datenerfassungs- und -verarbeitungsservice, der für Datenstreaming optimiert ist. Sie können Hunderttausende von Datenproduzenten so konfigurieren, dass sie kontinuierlich Daten in Ihren Amazon Kinesis-Daten-Stream einleiten. Daten stehen Ihren Amazon-Kinesis-Anwendungen innerhalb von Millisekunden zur Verfügung. Die Anwendungen erhalten die Datensätze in der Reihenfolge, in der sie generiert wurden.

Amazon Kinesis Data Streams ist in eine Reihe von AWS-Services integriert, darunter Amazon Kinesis Data Firehose zur Umwandlung von Streaming-Daten in nahezu Echtzeit und zur Bereitstellung von Streaming-Daten in einem AWS Data Lake wie Amazon S3, Amazon Managed Service für Apache Flink für verwaltete Stream-Verarbeitung, AWS Lambda zur Ereignis- oder Datensatzverarbeitung, AWS PrivateLink für eine private Konnektivität, Amazon Cloudwatch zur Verarbeitung von Metriken und Protokollen und AWS KMS zur serverseitigen Verschlüsselung.

Amazon Kinesis Data Streams wird als Gateway für eine Big-Data-Lösung verwendet. Daten aus verschiedenen Quellen werden in einen Amazon Kinesis-Stream eingeleitet und anschließend werden die Daten von verschiedenen Amazon Kinesis-Anwendungen aus dem Stream konsumiert. In diesem Beispiel führt eine Anwendung (gelb) ein Echtzeit-Dashboard mit den Streaming-Daten aus. Eine weitere Anwendung (rot) führt eine einfache Aggregation aus und übermittelt verarbeitete Daten an Amazon S3. Die Daten in S3 werden weiterverarbeitet und für komplexe Analysen in Amazon Redshift gespeichert. Die dritte Anwendung (grün) gibt Rohdaten in Amazon S3 aus, die dann zur kostengünstigeren Langzeitspeicherung in Amazon Glacier archiviert werden. Beachten Sie, dass diese drei Datenverarbeitungswege gleichzeitig und parallel ausgeführt werden.

Erste Schritte mit Amazon Kinesis Data Streams

Neuigkeiten bei Amazon Kinesis Data Streams

Fordern Sie Unterstützung für Ihre Machbarkeitsstudie und Bewertung an

Videos

Verwenden von Kinesis Data Streams

Nachdem Sie sich bei Amazon Web Services angemeldet haben, können Sie Amazon Kinesis Data Streams wie folgt verwenden:

  • Indem Sie einen Amazon Kinesis-Daten-Stream entweder über die Amazon Kinesis Management Console oder über die Amazon Kinesis-API CreateStream erstellen.
  • Indem Sie Ihre Datenproduzenten so konfigurieren, dass sie kontinuierlich Daten in Ihren Amazon Kinesis-Daten-Stream einleiten.
  • Indem Sie Ihre Amazon Kinesis-Anwendungen so aufbauen, dass sie Daten aus Ihrem Amazon Kinesis-Daten-Stream lesen und verarbeiten.

Wichtige Konzepte

Ein Datenproduzent ist eine Anwendung, die generierte Datensätze in der Regel in einen Kinesis-Daten-Stream ausgibt. Datenproduzenten weisen Datensätze Partitionsschlüssel zu. Partitionsschlüssel entscheiden letztlich, welcher Shard den Datensatz für einen Daten-Stream aufnimmt.

Ein Datenkonsument ist eine verteilte Kinesis-Anwendung oder ein AWS-Service, die bzw. der Daten aus allen Shards in einem Daten-Stream abruft, wenn dieser generiert wird. Die meisten Datenkonsumenten rufen die neuesten Daten in einem Shard ab und ermöglichen so eine Analyse oder eine Verarbeitung der Daten in Echtzeit.

Ein Daten-Stream ist eine logische Gruppierung von Shards. Es gibt keine Grenzen in Bezug auf die Anzahl der Shards innerhalb eines Daten-Streams (fordern Sie eine Limiterhöhung an, wenn Sie mehr benötigen). Ein Daten-Stream bewahrt Daten standardmäßig für 24 Stunden oder optional bis zu 365 Tage auf.

Ein Shard ist die Basiseinheit für den Durchsatz eines Amazon Kinesis-Daten-Stream.

  • Ein Shard ist ein "Append-only"-Protokoll und eine Einheit für die Streaming-Fähigkeit. Ein Shard enthält eine Folge von Datensätzen, die nach der Ankunftszeit geordnet sind.
  • Ein Shard kann bis zu 1 000 Datensätze pro Sekunde oder 1 MB/s aufnehmen. Fügen Sie weitere Shards hinzu, um die Aufnahmefähigkeit zu erhöhen.
  • Mit der AWS-Konsole, der UpdateShardCount API, durch Auslösen einer automatischen Skalierung über AWS Lambda oder mit einem Auto-Scaling-Dienstprogramm können Sie Shards dynamisch zu Ihrem Stream hinzufügen oder daraus entfernen, während sich der Datendurchsatz ändert.
  • Wenn Konsumenten ein erweitertes Fanout verwenden, stellt ein Shard für jeden Datenkonsumenten, der für ein erweitertes Fanout registriert ist, 1 MB/s für die Dateneingabe und 2 MB/s für die Datenausgabe bereit.
  • Wenn Konsumenten das erweiterte Fanout nicht nutzen, stellt ein Shard 1 MB/s für die Dateneingabe und 2 MB/s für die Datenausgabe bereit. Die Ausgabe wird von allen Konsumenten gemeinsam genutzt, die kein erweitertes Fanout verwenden.
  • Die Anzahl der erforderlichen Shards wird beim Erstellen eines Streams angegeben; die Menge lässt sich jederzeit ändern. Beispielsweise können Sie einen Stream mit zwei Shards einrichten. Wenn Sie 5 Datenkonsumenten haben, die das erweiterte Fanout nutzen, kann dieser Stream insgesamt bis zu 20 MB/s für die Datenausgabe bereitstellen (2 Shards x 2 MB/s x 5 Datenkonsumenten). Wenn die Datenkonsumenten das erweiterte Fanout nicht nutzen, hat dieser Stream einen Durchsatz von 2 MB/s für die Dateneingabe und 4 MB/s für die Datenausgabe. In jedem Fall erlaubt dieser Stream bis zu 2000 PUT-Datensätze pro Sekunde bzw. 2 MB/s für die Eingabe, je nachdem, welches Limit zuerst erreicht wird.
  • In Amazon Kinesis Data Streams können Sie Metriken auf Shard-Ebene überwachen.

Ein Datensatz ist die Dateneinheit, die in einem Amazon Kinesis-Stream gespeichert ist. Ein Datensatz besteht aus einer Sequenznummer, einem Partitionsschlüssel und einem Daten-Blob. Ein Daten-Blob sind die Daten von Interesse, die Ihr Datenproduzent einem Stream hinzufügt. Die maximale Größe eines Daten-Blobs (Nutzdaten nach der Base64-Decodierung) beträgt 1 MB.

Ein Partitionsschlüssel ist in der Regel eine aussagekräftige Kennung, wie z. B. eine Benutzer-ID oder ein Zeitstempel. Er wird von Ihrem Datenproduzenten festgelegt, während Daten in einen Amazon Kinesis-Daten-Stream eingeleitet werden. Er ist für Konsumenten nützlich, weil sie mit dem Partitionsschlüssel einen mit dem Partitionsschlüssel verbundenen Verlauf wiedergeben oder erstellen können. Der Partitionsschlüssel wird auch benutzt, um Datensätze zu trennen und an verschiedene Shards eines Streams zu routen. Angenommen, Sie haben einen Amazon Kinesis-Daten-Stream mit zwei Shards (Shard 1 und Shard 2). Nun können Sie Ihren Datenproduzenten so konfigurieren, dass er zwei Partitionsschlüssel verwendet (Schlüssel A und Schlüssel B), sodass alle Datensätze mit dem Schlüssel A zu Shard 1 und alle Datensätze mit Schlüssel B zu Shard 2 hinzugefügt werden.

Eine Sequenznummer ist eine eindeutige Kennung für jeden einzelnen Datensatz. Sequenznummern werden von Amazon Kinesis Data Streams zugewiesen, wenn ein Datenproduzent den API-Befehl PutRecord oder PutRecords aufruft, um einem Amazon Kinesis-Daten-Stream Daten hinzuzufügen. Sequenznummern für denselben Partitionsschlüssel steigen im Allgemeinen mit der Zeit. Je länger der Zeitraum zwischen PutRecord- oder PutRecords-Anforderungen, desto größer die Sequenznummer.

Daten in Streams einleiten

Datenproduzenten können Daten über Amazon Kinesis Data Streams-APIs, Amazon Kinesis Producer Library (KPL) oder Amazon Kinesis Agent in Amazon Kinesis-Daten-Streams einlesen.

Leiten Sie Beispieldaten in einen Kinesis-Daten-Stream oder ein Kinesis Data Firehose mit dem Amazon Kinesis Data Generator ein.

Amazon Kinesis Data Streams stellt zwei APIs bereit, um Daten in einen Amazon Kinesis-Daten-Stream einzulesen: PutRecord und PutRecords. Mit PutRecord ist ein einzelner Datensatz in einem API-Aufruf möglich. PutRecords lässt mehrere Datensätze in einem API-Aufruf zu.

Bei der Amazon Kinesis Producer Library (KPL) handelt es sich um eine bedienfreundliche und hochkonfigurierbare Bibliothek, mit der Sie Daten in den Amazon Kinesis-Datenstrom einleiten können. Die Amazon Kinesis Producer Library (KPL) ist eine einfache, asynchrone und verlässliche Oberfläche, mit der Sie unter Einsatz minimaler Client-Ressourcen schnell einen höheren Produzentendurchsatz erzielen.

Amazon Kinesis Agent ist eine fertige Java-Anwendung, die eine einfache Methode zur Erfassung von Daten und deren Einspielen in Ihren Amazon Kinesis-Stream ermöglicht. Sie können den Agenten in Serverumgebungen auf Linux-Basis, auf Protokollservern und Datenbankservern installieren. Der Agent überwacht bestimmte Dateien und sendet fortlaufend Daten in Ihren Datenstrom.

Anwendungen ausführen oder erstellen

Vollständig verwaltete Stream-Verarbeitungsanwendungen mit AWS-Services ausführen oder eigene Stream-Verarbeitungsanwendungen erstellen

Amazon Kinesis Data Firehose bietet die einfachste Methode zum zuverlässigen Umwandeln und Laden von Streaming-Daten in Datenspeicher und Analyse-Tools. Sie können einen Kinesis-Daten-Stream als Quelle für ein Kinesis Data Firehose nutzen.

Mit Amazon Managed Service für Apache Flink können Sie ganz einfach Streaming-Daten abfragen oder Streaming-Anwendungen mit Apache Flink erstellen, sodass Sie umsetzbare Erkenntnisse gewinnen und umgehend auf Ihre Geschäfts- und Kundenanforderungen reagieren können. Sie können einen Kinesis-Datenstream als Quelle und Ziel für eine Anwendung von Amazon Managed Service für Apache Flink verwenden.

Sie können Lambda-Funktionen abonnieren, um automatisch Datensätze aus Ihrem Kinesis-Daten-Stream zu lesen. AWS Lambda wird im Allgemeinen für die datensatzweise Stream-Verarbeitung (auch als ereignisbasierte Stream-Verarbeitung bezeichnet) genutzt.

Die Amazon Kinesis Client Library (KCL) ist eine vorgefertigte Bibliothek, mit deren Hilfe Sie bequem Amazon Kinesis-Anwendungen zum Lesen und Verarbeiten von Daten aus einem Amazon Kinesis-Daten-Stream aufbauen können. Die KCL übernimmt automatisch komplexe Aufgaben wie die Anpassung an Änderungen beim Stream-Volumen, den Lastausgleich für Streaming-Daten, die Koordination verteilter Services und fehlertolerante Datenverarbeitung. Dank KCL können Sie sich beim Entwickeln von Amazon Kinesis-Anwendungen auf die Geschäftslogik konzentrieren. Ab KCL 2.0 können Sie eine HTTP/2-Streaming-API mit geringer Latenz und erweitertem Fanout nutzen, um Daten aus einem Stream abzurufen.

Die Amazon Kinesis Connector Library ist eine vorgefertigte Bibliothek, mit deren Hilfe Sie Amazon Kinesis bequem in andere AWS-Services und Tools anderer Hersteller integrieren können. Die Amazon Kinesis Client Library (KCL) ist erforderlich, um die Amazon Kinesis Connector Library zu verwenden. Die aktuelle Version dieser Bibliothek bietet Konnektoren für Amazon DynamoDB, Amazon Redshift, Amazon S3 und Amazon Elasticsearch Service. Die Bibliothek umfasst auch Muster-Konnektoren für jeden Typ sowie Apache Ant-Build-Dateien zum Ausführen der Muster.

Amazon Kinesis Storm Spout ist eine vorgefertigte Bibliothek, mit deren Hilfe Sie Amazon Kinesis Data Streams bequem in Apache Stormintegrieren können. Die aktuelle Version von Amazon Kinesis Storm Spout ruft Daten aus dem Kinesis-Daten-Stream ab und gibt diese als Tupel aus. Sie fügen Spout Ihrer Storm-Topologie hinzu, um Amazon Kinesis Data Streams als zuverlässigen, skalierbaren, Stream-Erfassungs-, Speicher- und Wiedergabeservice zu nutzen.

Streams verwalten

Sie können privat über Ihre Amazon Virtual Private Cloud (VPC) auf die Kinesis Data Streams-APIs zugreifen, indem Sie VPC-Endpunkte erstellen. Mit VPC-Endpunkten wird das Routing zwischen der VPC und Kinesis Data Streams durch das AWS-Netzwerk gesteuert, ohne dass ein Internet-Gateway, ein NAT-Gateway oder eine VPN-Verbindung erforderlich ist. Die neueste Generation der von Kinesis Data Streams verwendeten VPC-Endpunkte wird von AWS PrivateLink unterstützt. Diese Technologie ermöglicht die private Konnektivität zwischen AWS-Services, indem Elastic Network-Schnittstelle (ENI) mit privaten IP-Adressen in Ihren VPCs genutzt werden. Weitere Informationen zu PrivatLink erhalten Sie in der Dokumentation zu AWS PrivateLink.

Ein erweitertes Fan-out bietet Kunden die Möglichkeit, die Anzahl der Konsumenten zu skalieren, die parallel aus einem Stream lesen, während die Leistung erhalten bleibt. Sie können mit dem erweiterten Fanout und einer HTTP/2-Datenabruf-API Daten in der Regel innerhalb von 70 Millisekunden des Eintreffens auf mehrere Anwendungen auffächern.

Sie können die Daten, die Sie mit Kinesis Data Streams nutzen, auf dem Server oder auf dem Client verschlüsseln. Sie können serverseitige Verschlüsselung verwenden; dabei handelt es sich um eine voll-verwaltete Funktion, die Daten automatisch ver- und entschlüsselt, während Sie diese in den Daten-Stream einleiten oder herausholen. Alternativ können Sie Ihre Daten auf dem Client verschlüsseln, bevor Sie sie in den Daten-Stream einleiten. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der häufig gestellten Fragen zu Kinesis-Datenströmen.

Verwenden Sie einen Datenstrom als Quelle für ein Kinesis Data Firehose, um Ihre Daten umzuwandeln, während sie auf S3, Redshift, Elasticsearch und Splunk bereitgestellt werden. Schließen Sie eine Anwendung von Amazon Managed Service für Apache Flink an, um Streaming-Daten in Echtzeit mit Standard-SQL zu verarbeiten, ohne neue Programmiersprachen oder Verarbeitungs-Frameworks lernen zu müssen.

Amazon Kinesis Data Streams ist in Amazon CloudWatch integriert, sodass Sie CloudWatch-Metriken für Ihre Amazon Kinesis-Daten-Streams und die darin enthaltenen Shards problemlos sammeln, anzeigen und analysieren können. Weitere Informationen über Amazon Kinesis Data Streams-Metriken finden Sie unter Überwachen von Amazon Kinesis mit Amazon CloudWatch.

Amazon Kinesis Data Streams ist mit AWS Identity and Access Management (IAM) kombiniert, einem Service, mit dessen Hilfe Sie den Zugriff auf Ihre AWS-Services und Ressourcen für Ihre Benutzer sicher steuern können. Sie können zum Beispiel eine Richtlinie einrichten, der zufolge nur ein bestimmter Benutzer bzw. eine Gruppe Daten in den Amazon Kinesis-Daten-Stream einleiten kann. Weitere Informationen über Zugriffsverwaltung und -steuerung für Ihren Amazon Kinesis-Daten-Stream finden Sie unter Steuerung des Zugriffs auf Amazon Kinesis-Ressourcen mithilfe von IAM.

Amazon Kinesis Data Streams ist in AWS CloudTrail integriert. Dieser Service zeichnet Aufrufe von AWS-APIs für Ihr Konto auf und übermittelt Protokolldateien an Sie. Weitere Informationen über die Protokollierung von API-Aufrufen sowie eine Auflistung der unterstützten Amazon Kinesis-APIs finden Sie unter Protokollieren von Amazon Kinesis-API-Aufrufen mithilfe von AWS CloudTrail.

Sie können Ihre Amazon Kinesis-Daten-Streams mit Tags versehen, wodurch die Ressourcen- und Kostenverwaltung vereinfacht wird. Ein Tag ist ein benutzerdefiniertes Label in Form eines Schlüssel-Wert-Paares, mit dessen Hilfe Sie AWS-Ressourcen organisieren können. Sie können Ihre Amazon Kinesis-Daten-Streams zum Beispiel nach Kostenstellen mit Kategorien versehen, anhand derer Sie Ihre Amazon Kinesis Data Streams-Kosten kategorisieren und nachverfolgen können. Weitere Informationen finden Sie unter Verwenden von Tags für Ihre Amazon Kinesis-Daten-Streams.

Tutorials

In diesem Tutorial erfahren Sie, wie Sie einen Amazon Kinesis-Daten-Stream erstellen, simulierte Wertpapierdaten in den Daten-Stream senden und eine Anwendung zur Verarbeitung der Daten aus dem Daten-Stream schreiben.  

Vorgestellte Präsentationen

Vorgestellte Lösungen

Die AWS-Streaming-Daten-Lösung für Amazon Kinesis bietet AWS-CloudFormation-Vorlagen, in denen Daten durch Produzenten, Streaming-Speicher, Konsumenten und Ziele fließen. Um mehrere Anwendungsfälle und Geschäftsanforderungen zu unterstützen, bietet diese Lösung vier AWS-CloudFormation-Vorlagen. Die Vorlagen sind so konfiguriert, dass Best Practices zur Überwachung der Funktionalität mithilfe von Dashboards und Alarmen sowie zur Sicherung der Daten angewendet werden.