Umgang mit großen Datensätzen - Amazon Kinesis Data Streams

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.

Umgang mit großen Datensätzen

Amazon Kinesis Data Streams unterstützt Datensätze mit bis zu 10 Mebibyte (). MiBs Diese Funktion wird für die Verarbeitung intermittierender Datennutzlasten empfohlen, die die standardmäßige Datensatzgrößenbeschränkung von 1 MiB überschreiten. Die standardmäßige maximale Datensatzgröße für bestehende und neu erstellte Streams ist auf 1 MiB festgelegt.

Diese Funktion kommt IoT-Anwendungen (Internet of Things), CDC-Pipelines (Change Data Capture) und Workflows für maschinelles Lernen zugute, die gelegentlich die Verarbeitung größerer Datennutzlasten erfordern. Um mit der Verwendung großer Datensätze in deinem Stream zu beginnen, aktualisiere die maximale Datensatzgrößenbeschränkung für deinen Stream.

Wichtig

Das individuelle Shard-Durchsatzlimit von 1 MB/s für Schreibvorgänge und 2 MB/s für Lesevorgänge bleibt unverändert, wobei größere Datensatzgrößen unterstützt werden. Kinesis Data Streams ist darauf ausgelegt, zeitweise große Datensätze zusammen mit einem Basisdatenverkehr von Datensätzen von weniger als oder gleich 1 MiB zu verarbeiten. Es ist nicht für die dauerhafte Aufnahme großer Datenmengen konzipiert.

Aktualisiere deinen Stream, um große Datensätze zu verwenden

Um größere Datensätze mit Kinesis Data Streams zu verarbeiten
  1. Navigieren Sie zur Kinesis Data Streams Streams-Konsole.

  2. Wählen Sie Ihren Stream aus und wechseln Sie zur Registerkarte Konfiguration.

  3. Klicke neben Maximale Datensatzgröße auf Bearbeiten.

  4. Stellen Sie Ihre maximale Datensatzgröße ein (bis zu 10 MiB).

  5. Speichern Sie Ihre Änderungen.

Mit dieser Einstellung wird nur die maximale Datensatzgröße für diesen Kinesis-Datenstrom angepasst. Bevor Sie diesen Grenzwert erhöhen, stellen Sie sicher, dass alle Downstream-Anwendungen größere Datensätze verarbeiten können.

Sie können diese Einstellung auch über die AWS CLI aktualisieren:

aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000

Optimiere deine Stream-Leistung mit großen Datensätzen

Es wird empfohlen, große Datensätze auf weniger als 2% deines gesamten Traffics zu beschränken. In einem Stream hat jeder Shard eine Durchsatzkapazität von 1 MiB pro Sekunde. Um große Datensätze verarbeiten zu können, streamt Kinesis Data bis zu 10 Bursts MiBs, wobei der Durchschnitt bei 1 MiB pro Sekunde liegt. Diese Kapazität zur Unterstützung großer Datensätze wird kontinuierlich wieder in den Stream aufgenommen. Die Geschwindigkeit des Wiederauffüllens hängt von der Größe der großen Datensätze und der Größe des Basisdatensatzes ab. Die besten Ergebnisse erzielen Sie, wenn Sie einen gleichmäßig verteilten Partitionsschlüssel verwenden. Weitere Informationen zur Skalierung von Kinesis On-Demand-Modus finden Sie unter Funktionen und Anwendungsfälle für den On-Demand-Modus.

Reduzieren Sie die Drosselung bei großen Datensätzen

Um der Drosselung entgegenzuwirken
  1. Implementieren Sie die Wiederholungslogik mit exponentiellem Back-off in Ihrer Producer-Anwendung.

  2. Verwenden Sie zufällige Partitionsschlüssel, um große Datensätze auf verfügbare Shards zu verteilen.

  3. Speichern Sie Payloads in Amazon S3 und senden Sie nur Metadatenverweise an den Stream für kontinuierliche Streams großer Datensätze. Weitere Informationen finden Sie unter Verarbeiten großer Datensätze mit Amazon Kinesis Data Streams.

Verarbeiten Sie große Datensätze mit den Kinesis Data Streams APIs

Die Unterstützung großer Datensätze führt eine neue API ein und aktualisiert zwei bestehende Steuerungsebenen, sodass bis APIs zu 10 MiBs Datensätze verarbeitet werden können.

API zum Ändern der Datensatzgröße:

  • UpdateMaxRecordSize: Konfiguriert die maximale Datensatzgrößenbeschränkung für bestehende Streams auf bis zu 10. MiBs

Aktualisierungen APIs vorhandener:

  • CreateStream: Fügt den optionalen MaxRecordSizeInKiB Parameter für die Festlegung von Größenbeschränkungen für Datensätze während der Stream-Erstellung hinzu.

  • DescribeStreamSummary: Gibt das MaxRecordSizeInKiB Feld zurück, das die aktuelle Stream-Konfiguration anzeigt.

Alle APIs aufgelisteten Produkte behalten die Abwärtskompatibilität für bestehende Streams bei. Eine vollständige API-Dokumentation finden Sie in der Amazon Kinesis Data Streams Service API-Referenz.

AWS Komponenten, die mit großen Datensätzen kompatibel sind

Die folgenden AWS Komponenten sind mit großen Datensätzen kompatibel:

Komponente Description

AWS SDK

AWS Das SDK unterstützt den Umgang mit großen Datensätzen. Sie können die maximale Datensatzgröße Ihres Streams auf bis zu 10 MiB aktualisieren, indem Sie die verfügbaren Methoden in der verwenden. AWS SDKs Weitere Informationen finden Sie unter Diesen Dienst mit einem AWS SDK verwenden.

Kinesis Consumer Library (KCL)

Ab Version 2.x unterstützt KCL die Verarbeitung großer Datensätze. Um die Unterstützung großer Datensätze zu verwenden, aktualisieren Sie maxRecordSize den Stream und verwenden Sie KCL. Weitere Informationen finden Sie unter Verwenden der Kinesis-Clientbibliothek.

Kinesis Producer-Bibliothek (KPL)

Ab Version 1.0.5 unterstützt KPL die Verarbeitung großer Datensätze. Um die Unterstützung großer Datensätze zu verwenden, aktualisieren Sie maxRecordSize den Stream und verwenden Sie KPL. Weitere Informationen finden Sie unter Entwickeln von Produzenten mithilfe der Amazon Kinesis Producer Library (KPL).

Amazon EMR

Amazon EMR mit Apache Spark unterstützt die Verarbeitung großer Datensätze bis zum Kinesis Data Streams Streams-Limit (10 MiBs). Verwenden Sie die Funktion, um die Unterstützung großer Datensätze zu verwenden. readStream Weitere Informationen finden Sie unter Integration von Amazon EMR und Amazon Kinesis.

Amazon Data Firehose

Bei Verwendung mit Kinesis Data Streams hängt das Verhalten von Amazon Data Firehose bei großen Datensätzen vom Lieferziel ab:

  • Amazon S3: Die Lieferung großer Datensätze wird ohne zusätzliche Konfiguration unterstützt. Wenn Sie die Datenformatkonvertierung verwenden, wird die Übermittlung großer Datensätze mit Firehose unterstützt. Wenn Sie dynamische Partitionierung verwenden, wird die Übermittlung großer Datensätze mit Firehose nicht unterstützt.

  • Lambda: Wir empfehlen nicht, große Datensätze mit Firehose zu verwenden, wenn dadurch Lambda-Funktionen im Downstream ausgelöst werden. Dies kann zu zeitweiligen Ausfällen führen.

  • HTTP: Die Lieferung großer Datensätze wird mit Firehose nicht unterstützt.

  • Snowflake: Die Lieferung großer Datensätze wird von Firehose nicht unterstützt.

  • Amazon Redshift: Die Lieferung großer Datensätze wird mit Firehose nicht unterstützt.

Bei Anwendungen, die eine Lieferung an Snowflake oder Redshift mit großen Datensätzen erfordern, stellen Sie die Daten zuerst an Amazon S3 bereit. Verwenden Sie anschließend die ETL-Prozesse (Extract, Transform, Load), um die Daten zu laden. Testen Sie bei allen anderen Zielen das Verhalten mit großen Datensätzen in einer proof-of-concept Umgebung, bevor Sie die Skalierung auf die Produktionsnutzung durchführen. Der Umgang mit großen Datensätzen ist je nach Ziel unterschiedlich.

AWS Lambda

AWS Lambda unterstützt bis zu 6 MiBs Nutzlasten. Dieses Limit umfasst die Kinesis-Payload, die in die Base-64-Kodierung konvertiert wurde, und die Metadaten, die mit Event Source Mapping (ESM) verknüpft sind. Bei Datensätzen unter 6 verarbeitet Lambda sie mit ESM MiBs, ohne dass eine zusätzliche Konfiguration erforderlich ist. Bei Datensätzen, die größer als 6 sind MiBs, verarbeitet Lambda sie unter Verwendung eines Ziels für den Fall eines Fehlers. Sie müssen mithilfe von ESM ein Ziel für den Fall eines Fehlers konfigurieren, um Datensätze zu verarbeiten, die die Verarbeitungsgrenzen von Lambda überschreiten. Jedes Ereignis, das an das Ziel bei einem Fehler gesendet wird, ist ein JSON-Dokument, das Metadaten zum fehlgeschlagenen Aufruf enthält.

Es wird empfohlen, unabhängig von der Datensatzgröße ein Ziel für den Fall eines Fehlers im ESM zu erstellen. Dadurch wird sichergestellt, dass keine Datensätze verworfen werden. Weitere Informationen finden Sie unter Ziele für fehlgeschlagene Aufrufe konfigurieren.

Amazon Redshift

Amazon Redshift unterstützt beim Streamen von Daten aus Kinesis Data Streams nur Datensatzgrößen von weniger als 1 MiB. Datensätze, die dieses Limit überschreiten, werden nicht verarbeitet. Datensätze, die nicht verarbeitet werden, werden protokolliert alssys_stream_scan_errors. Weitere Informationen finden Sie unter SYS_STREAM_SCAN_ERRORS.

Flink-Anschluss für Kinesis Data Streams

Es gibt zwei Ansätze für die Nutzung von Daten aus Kinesis Data Streams: den Kinesis-Quellkonnektor und den Kinesis-Sink-Connector. Der Quellanschluss unterstützt die Verarbeitung von Datensätzen mit weniger als 1 MiB und bis zu 10. MiBs Verwenden Sie den Senkenanschluss nicht für Aufzeichnungen, die größer als 1 MiB sind. Weitere Informationen finden Sie unter Verwenden von Konnektoren zum Verschieben von Daten in Amazon Managed Service für Apache Flink mit der DataStream API.

Regionen, in denen große Datensätze unterstützt werden

Diese Amazon Kinesis Data Streams Streams-Funktion ist nur in den folgenden AWS Regionen verfügbar:

AWS Region Name der Region

eu-north-1

Europa (Stockholm)

me-south-1

Middle East (Bahrain)

ap-south-1

Asien-Pazifik (Mumbai)

eu-west-3

Europa (Paris)

ap-southeast-3

Asien-Pazifik (Jakarta)

us-east-2

USA Ost (Ohio)

af-south-1

Afrika (Kapstadt)

eu-west-1

Europa (Irland)

me-central-1

Naher Osten (VAE)

eu-central-1

Europa (Frankfurt)

sa-east-1

Südamerika (São Paulo)

ap-east-1

Asien-Pazifik (Hongkong)

ap-south-2

Asien-Pazifik (Hyderabad)

us-east-1

USA Ost (Nord-Virginia)

ap-northeast-2

Asien-Pazifik (Seoul)

ap-northeast-3

Asien-Pazifik (Osaka)

eu-west-2

Europa (London)

ap-southeast-4

Asien-Pazifik (Melbourne)

ap-northeast-1

Asien-Pazifik (Tokio)

us-west-2

USA West (Oregon)

us-west-1

USA West (Nordkalifornien)

ap-southeast-1

Asien-Pazifik (Singapur)

ap-southeast-2

Asien-Pazifik (Sydney)

il-central-1

Israel (Tel Aviv)

ca-central-1

Kanada (Zentral)

ca-west-1

Kanada West (Calgary)

eu-south-2

Europa (Spain)

cn-northwest-1

China (Ningxia)

eu-central-2

Europa (Zürich)

us-gov-east-1

AWS GovCloud (US-Ost)

us-gov-west-1

AWS GovCloud (US-West)