View a markdown version of this page

Gérez de gros enregistrements - Amazon Kinesis Data Streams

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gérez de gros enregistrements

Amazon Kinesis Data Streams prend en charge les enregistrements jusqu'à 10 mégaoctets (). MiBs Cette fonctionnalité est recommandée pour traiter des charges utiles de données intermittentes qui dépassent la limite de taille d'enregistrement par défaut de 1 Mio. La taille d'enregistrement maximale par défaut pour les flux existants et les flux nouvellement créés est fixée à 1 Mio.

Cette fonctionnalité profite aux applications de l'Internet des objets (IoT), aux pipelines de capture des données de modification (CDC) et aux flux de travail d'apprentissage automatique qui nécessitent le traitement de charges utiles de données occasionnellement plus importantes. Pour commencer à utiliser des enregistrements volumineux dans votre flux, mettez à jour la limite de taille d'enregistrement maximale de votre flux.

Important

La limite de débit de partition individuelle de 1 MB/s pour les écritures et de 2 MB/s pour les lectures reste inchangée avec la prise en charge de tailles d'enregistrement plus importantes. Kinesis Data Streams est conçu pour prendre en charge des enregistrements volumineux intermittents ainsi qu'un trafic de base d'enregistrements inférieur ou égal à 1 MiB. Il n'est pas conçu pour permettre l'ingestion prolongée de grands volumes de disques volumineux.

Comment fonctionnent les grands dossiers

Amazon Kinesis Data Streams accepte des enregistrements d'une taille maximale de 10 Mo. Votre flux peut accueillir des enregistrements volumineux en dépassant temporairement son débit d'écriture soutenu, puis en revenant à son débit de référence au fil du temps. Cette capacité de rafale est continuellement réapprovisionnée, de sorte que votre flux peut gérer de gros enregistrements intermittents parallèlement au trafic normal sans aucun ajustement manuel de capacité.

Pour visualiser ce comportement, considérez la capacité d'écriture de votre flux comme un réservoir qui se recharge à un rythme régulier. Lorsque vous envoyez un enregistrement volumineux, tel qu'un enregistrement de 10 MiB, le réservoir est temporairement épuisé. Il commence alors à se remplir immédiatement, ce qui signifie que vous pouvez continuer à envoyer des disques plus petits à mesure que la capacité devient disponible.

Le taux de réapprovisionnement des capacités dépend de plusieurs facteurs :

  • La taille des grands disques

  • Taille des enregistrements de référence

  • Le schéma général du trafic sur le stream

  • La stratégie de clé de partition que vous avez choisie

Pour de meilleurs résultats, utilisez une clé de partition uniformément distribuée pour répartir les enregistrements volumineux sur la capacité disponible du flux.

En mode à la demande, Kinesis Data Streams gère automatiquement la capacité. Votre flux augmente et diminue son débit en fonction de vos modèles de trafic, et une capacité record en rafale est gérée de manière transparente. Vous n'avez pas besoin de provisionner ou de gérer des capacités pour utiliser des enregistrements volumineux. Pour plus d'informations sur l'évolution du mode à la demande, consultez les fonctionnalités du On-demand mode et les cas d'utilisation.

Mettez à jour votre stream pour utiliser des enregistrements volumineux

Pour traiter des enregistrements plus volumineux avec Kinesis Data Streams
  1. Accédez à la console Kinesis Data Streams.

  2. Sélectionnez votre stream, puis accédez à l'onglet Configuration.

  3. Cliquez sur Modifier, qui se trouve à côté de Taille d'enregistrement maximale.

  4. Définissez votre taille d'enregistrement maximale (jusqu'à 10 Mo).

  5. Enregistrez vos modifications.

Ce paramètre ajuste uniquement la taille d'enregistrement maximale pour ce flux de données Kinesis. Avant d'augmenter cette limite, vérifiez que toutes les applications en aval peuvent gérer des enregistrements plus volumineux.

Vous pouvez également mettre à jour ce paramètre à l'aide de l' AWS interface de ligne de commande :

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

Optimisez les performances de votre stream grâce à de grands enregistrements

Les grands disques sont conçus pour une utilisation intermittente. Pour de meilleurs résultats, conservez des enregistrements volumineux à moins de 2 % de votre trafic global. Étant donné que le flux dépasse temporairement son débit soutenu pour fournir un enregistrement volumineux, l'envoi d'enregistrements volumineux trop fréquemment peut réduire la capacité disponible pour votre trafic de base. Pour plus d'informations sur l'optimisation des performances de votre flux avec des enregistrements volumineux, consultez la section Throttling et meilleures pratiques pour des performances optimales.

Atténuez les ralentissements grâce à des enregistrements volumineux

Étant donné que les enregistrements volumineux consomment temporairement de la capacité en rafale, votre flux peut limiter les écritures suivantes jusqu'à ce que la capacité soit reconstituée. Les étapes suivantes permettent de réduire l'étranglement :

Pour atténuer l'étranglement
  1. Implémentez une logique de nouvelle tentative avec un délai d'attente exponentiel dans votre application de production.

  2. Utilisez des clés de partition aléatoires pour distribuer des enregistrements volumineux sur la capacité disponible du flux.

  3. Stockez les charges utiles dans Amazon S3 et envoyez uniquement des références de métadonnées au flux pour les flux continus d'enregistrements volumineux. Pour plus d'informations, consultez la section Traitement d'enregistrements volumineux avec Amazon Kinesis Data Streams.

Gérez des enregistrements volumineux à l'aide des API Kinesis Data Streams

La prise en charge des enregistrements volumineux introduit une nouvelle API et met à jour deux API de plan de contrôle existantes pour gérer jusqu'à 10 enregistrements MiBs.

API pour modifier la taille de l'enregistrement :

  • UpdateMaxRecordSize: configure la limite de taille d'enregistrement maximale pour les flux existants jusqu'à 10 MiBs.

Mises à jour des API existantes :

  • CreateStream: ajoute le MaxRecordSizeInKiB paramètre facultatif permettant de définir les limites de taille d'enregistrement lors de la création du flux.

  • DescribeStreamSummary: Renvoie le MaxRecordSizeInKiB champ pour afficher la configuration actuelle du flux.

Toutes les API répertoriées sont rétrocompatibles avec les flux existants. Pour une documentation complète sur l'API, consultez le manuel Amazon Kinesis Data Streams Service API Reference.

AWS composants compatibles avec les grands disques

Les AWS composants suivants sont compatibles avec les enregistrements volumineux :

Composant Description

AWS SDK

AWS Le SDK prend en charge la gestion des enregistrements volumineux. Vous pouvez mettre à jour la taille d'enregistrement maximale de votre flux jusqu'à 10 Mo à l'aide des méthodes disponibles dans les AWS SDK. Pour plus d'informations, consultez la section Utilisation de ce service avec un AWS SDK.

Bibliothèque grand public Kinesis (KCL)

À partir de la version 2.x, KCL prend en charge la gestion des enregistrements volumineux. Pour utiliser la prise en charge maxRecordSize des enregistrements volumineux, mettez à jour votre stream et utilisez KCL. Pour plus d'informations, consultez la section Utiliser la bibliothèque cliente Kinesis.

Bibliothèque Kinesis Producer (KPL)

À partir de la version 1.0.5, KPL prend en charge la gestion des enregistrements volumineux. Pour utiliser la prise en charge des enregistrements volumineux, mettez à jour le contenu maxRecordSize de votre stream et utilisez KPL. Pour plus d'informations, voir Développer des producteurs à l'aide de la bibliothèque Amazon Kinesis Producer (KPL).

Amazon EMR

Amazon EMR avec Apache Spark prend en charge la gestion d'enregistrements volumineux jusqu'à la limite de Kinesis Data Streams (10 MiBs). Pour utiliser le support d'enregistrements volumineux, utilisez la readStream fonction. Pour plus d'informations, consultez la section Intégration d'Amazon EMR et d'Amazon Kinesis.

Amazon Data Firehose

Lorsqu'il est utilisé avec Kinesis Data Streams, le comportement d'Amazon Data Firehose avec des enregistrements volumineux dépend de la destination de livraison :

  • Amazon S3 : la livraison d'enregistrements volumineux est prise en charge sans aucune configuration supplémentaire. Lorsque vous utilisez la conversion de format de données, la diffusion d'enregistrements volumineux est prise en charge par Firehose. Lorsque vous utilisez le partitionnement dynamique, la diffusion d'enregistrements volumineux n'est pas prise en charge par Firehose.

  • Lambda : Nous ne recommandons pas d'utiliser des enregistrements volumineux avec Firehose lorsqu'il déclenche des fonctions Lambda en aval. Cela peut entraîner des défaillances intermittentes.

  • HTTP : La livraison de gros enregistrements n'est pas prise en charge par Firehose.

  • Snowflake : la livraison de disques volumineux n'est pas prise en charge avec Firehose.

  • Amazon Redshift : la livraison de dossiers volumineux n'est pas prise en charge par Firehose.

Pour les applications nécessitant une diffusion vers Snowflake ou Redshift avec des enregistrements volumineux, transmettez d'abord les données à Amazon S3. Ensuite, utilisez les processus Extract, Transform, Load (ETL) pour charger les données. Pour toutes les autres destinations, testez le comportement avec des enregistrements volumineux dans un environnement de validation de principe avant de passer à l'utilisation en production. La gestion de dossiers volumineux varie selon la destination.

AWS Lambda

AWS Lambda prend en charge jusqu'à 6 MiBs charges utiles. Cette limite inclut la charge utile Kinesis convertie en codage base-64 et les métadonnées associées à Event Source Mapping (ESM). Pour les enregistrements inférieurs à 6 MiBs, Lambda les traite à l'aide d'ESM sans qu'aucune configuration supplémentaire ne soit requise. Pour les enregistrements supérieurs à 6 MiBs, Lambda les traite à l'aide d'une destination en cas de défaillance. Vous devez configurer une destination en cas de défaillance à l'aide d'ESM pour gérer les enregistrements qui dépassent les limites de traitement de Lambda. Chaque événement envoyé à la destination en cas d'échec est un document JSON contenant des métadonnées relatives à l'échec de l'invocation.

Il est recommandé de créer une destination en cas de défaillance dans l'ESM, quelle que soit la taille de l'enregistrement. Cela garantit qu'aucun enregistrement n'est supprimé. Pour plus d'informations, consultez la section Configuration des destinations pour les appels échoués.

Amazon Redshift

Lorsque vous diffusez des données depuis Kinesis Data Streams vers Amazon Redshift, vérifiez la taille d'enregistrement maximale prise en charge par Amazon Redshift. Pour plus de détails, consultez la section Comment démarrer avec l'ingestion de flux de données depuis Amazon Kinesis Data Streams dans le manuel Amazon Redshift Database Developer Guide. Les enregistrements dépassant cette limite ne sont pas traités. Pour plus de détails sur les informations de journalisation pour les enregistrements qui ne sont pas traités, consultez SYS_STREAM_SCAN_ERRORS dans le manuel Amazon Redshift Database Developer Guide.

Connecteur Flink pour Kinesis Data Streams

Il existe deux approches pour consommer des données provenant de Kinesis Data Streams : le connecteur source Kinesis et le connecteur récepteur Kinesis. Le connecteur source prend en charge la gestion des enregistrements inférieurs à 1 Mo et jusqu'à 10 MiBs. N'utilisez pas le connecteur récepteur pour les enregistrements supérieurs à 1 Mio. Pour plus d'informations, voir Utiliser des connecteurs pour déplacer des données dans Amazon Managed Service for Apache Flink avec l' DataStreamAPI.

Régions où les enregistrements volumineux sont pris en charge

Cette fonctionnalité Amazon Kinesis Data Streams est disponible uniquement dans les AWS régions suivantes :

AWS Région Nom de la région

eu-north-1

Europe (Stockholm)

me-south-1

Middle East (Bahrain)

ap-south-1

Asie-Pacifique (Mumbai)

eu-west-3

Europe (Paris)

ap-southeast-3

Asie-Pacifique (Jakarta)

us-east-2

USA Est (Ohio)

af-south-1

Afrique (Le Cap)

eu-west-1

Europe (Irlande)

me-central-1

Moyen-Orient (EAU)

eu-central-1

Europe (Francfort)

sa-east-1

Amérique du Sud (São Paulo)

ap-east-1

Asie-Pacifique (Hong Kong)

ap-south-2

Asie-Pacifique (Hyderabad)

us-east-1

USA Est (Virginie du Nord)

ap-northeast-2

Asie-Pacifique (Séoul)

ap-northeast-3

Asie-Pacifique (Osaka)

eu-west-2

Europe (Londres)

ap-southeast-4

Asie-Pacifique (Melbourne)

ap-northeast-1

Asie-Pacifique (Tokyo)

us-west-2

USA Ouest (Oregon)

us-west-1

USA Ouest (Californie du Nord)

ap-southeast-1

Asie-Pacifique (Singapour)

ap-southeast-2

Asie-Pacifique (Sydney)

il-central-1

Israël (Tel Aviv)

ca-central-1

Canada (Centre)

ca-west-1

Canada-Ouest (Calgary)

eu-south-2

Europe (Espagne)

cn-northwest-1

Chine (Ningxia)

eu-central-2

Europe (Zurich)

us-gov-east-1

AWS GovCloud (US-East)

us-gov-west-1

AWS GovCloud (US-West)