Pourquoi Kinesis Data Firehose crée-t-il autant de petits fichiers dans S3 ?

Date de la dernière mise à jour : 10/11/2020

J'essaie d'envoyer des données depuis Amazon Kinesis Data Firehose vers Amazon Simple Storage Service (Amazon S3). Cependant, j'ai remarqué que Kinesis Data Firehose crée de nombreux petits fichiers dans mon compartiment Amazon S3. Pourquoi ?

Brève description

Kinesis Data Firehose fournit des enregistrements plus petits que ceux spécifiés (dans l'API BufferingHints) pour les raisons suivantes :

  • La compression est activée.
  • Le flux de diffusion Kinesis Data Firehose a été mis à l'échelle.
  • Le flux de données Amazon Kinesis est répertorié comme source de données.

Solution

La compression est activée

Si la compression est activée sur votre flux de diffusion Kinesis Data Firehose, les deux paramètres BufferingHints sont appliqués avant la compression. Vérifiez les paramètres SizeInMBS et IntervalinSeconds pour le déterminer.

Une fois chaque lot d'enregistrements mis en mémoire tampon, les paramètres sont appliqués. Lorsque les enregistrements de données sont mis en tampon et compressés, des fichiers plus petits sont créés dans Amazon S3.

Le flux de diffusion Kinesis Data Firehose a été mis à l'échelle

Si une augmentation de la limite a été demandée ou que Kinesis Data Firehose est automatiquement mise à l'échelle, le flux de diffusion Data Firehose peut être mis à l'échelle. Par défaut, Kinesis Data Firehose met automatiquement à l'échelle les flux de diffusion jusqu'à une certaine limite. Le comportement de mise à l'échelle automatique d'Amazon Kinesis réduit la probabilité de limitation sans nécessiter une augmentation de la limite.

Lorsque le flux de diffusion Kinesis Data Firehose est mis à l'échelle, cela peut avoir un effet sur les conseils de mise en mémoire tampon de Data Firehose. La taille globale du tampon (SizeinMBS) du flux de diffusion est mise à l'échelle proportionnellement, mais inversement. Par exemple, si la capacité de Kinesis Data Firehose augmente de deux fois la limite de taille de tampon d'origine, la taille du tampon est réduite de moitié. Si Kinesis Data Firehose évolue jusqu'à quatre fois, la taille du tampon est réduite à un quart de la taille globale du tampon.

Il existe également un nombre proportionnel de tampons parallèles dans le flux de diffusion Kinesis Data Firehose, où les données sont distribuées simultanément à partir de tous ces tampons. Par exemple, Kinesis Data Firehose peut mettre en mémoire tampon les données et créer un seul fichier en fonction de a limite de taille de tampon. Si Kinesis Data Firehose évolue pour doubler la limite de la mémoire tampon, deux canaux distincts créeront les fichiers dans le même intervalle de temps. Si Kinesis Data Firehose évolue jusqu'à quatre fois, quatre canaux différents créeront quatre fichiers dans S3 pendant le même intervalle de temps.

Exemple : Calcul de la limite de flux de données

Supposons un flux de données Amazon Kinesis qui a un débit initial (t) et crée une taille de fichier (s) par intervalle de (x) secondes. Le même flux de diffusion Kinesis Data Firehose (avec un débit de 4 t) crée désormais un fichier (d'une taille de s 4) dans le même intervalle de temps. Il existe également quatre tampons parallèles fournissant les données. Par conséquent, les données fournies par Kinesis Data Firehose restent à peu près de la même taille :

4 * (s/4) = s

Supposons un flux de données Kinesis dont le débit initial (t) est de 5 Mo/s. Le flux Kinesis crée une taille de fichier (s) de 40 Mo par intervalles de 60 (x) secondes :

4 * (40MB/4) = 40MB

Si le flux de données Kinesis est mis à l'échelle jusqu'à 20 Mo/s (quatre fois), le flux crée quatre fichiers différents d'environ 10 Mo chacun. Par conséquent, la taille totale des données distribuées par le flux de diffusion Kinesis Data Firehose est d'environ 40 Mo.

Vérifiez que le flux de diffusion Kinesis Data Firehose n'a pas dépassé la limite par défaut. Pour afficher la limite actuelle de votre flux de diffusion Kinesis Data Firehose, vérifiez les mesures Amazon CloudWatch suivantes :

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

Si les valeurs de ces mesures diffèrent des limites de quota par défaut, cela indique que le flux de diffusion de Kinesis Data Firehose a été mis à l'échelle.

Kinesis Data Stream est répertorié comme source de données

Lorsqu'un flux de données Kinesis est répertorié comme source de données de Kinesis Data Firehose, Data Firehose est mis à l'échelle en interne. Par défaut, Kinesis Data Firehose tente de respecter la capacité de volume du flux de données Kinesis. Cette mise à l'échelle entraîne une modification de la taille de la mise en mémoire tampon et peut entraîner la diffusion d'enregistrements de plus petite taille.

Remarque : les options de conseil de mise en mémoire tampon ne sont que des cpnseils. Par conséquent, Kinesis Data Firehose peut choisir d'utiliser différentes valeurs pour optimiser la mise en mémoire tampon.</p


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?