top of page

Meilleures pratiques pour l'utilisation du stockage cloud avec Apache Kafka pour une gestion efficace des données à long terme

Apache Kafka est largement reconnu pour sa capacité à gérer les flux de données en temps réel avec un débit élevé et une faible latence. Cependant, son modèle de stockage natif présente des limitations pour la gestion du stockage de données à long terme. Cet article examine les performances d'Apache Kafka en matière de gestion des données à long terme, le rôle des buckets de stockage cloud comme alternative, et les bonnes pratiques pour combiner Kafka et le stockage cloud afin d'optimiser l'accès et la récupération des données.



Vue à hauteur d'œil d'un centre de données de stockage cloud avec des rangées de serveurs et des lumières clignotantes


Comment Apache Kafka gère le stockage de données à long terme

Apache Kafka stocke les données dans des sujets sous forme de journaux immuables sur les disques locaux des brokers Kafka. Cette architecture permet des écritures et des lectures rapides pour les cas d'utilisation de flux de données. Cependant, le stockage local de Kafka n'est pas optimisé pour la conservation à long terme de grands volumes de données, car :


  • Limites de stockage : les serveurs Kafka disposent d’un espace disque limité, ce qui rend coûteux et complexe le stockage indéfini des données.

  • Politiques de rétention : Kafka utilise généralement une rétention basée sur le temps ou sur la taille pour supprimer automatiquement les anciennes données.

  • Complexité de la récupération : La restauration des données à partir de Kafka après des pannes de broker peut s’avérer complexe pour les très grands ensembles de données.


Le modèle de stockage de Kafka est idéal pour la conservation des données à court et moyen terme, généralement de quelques heures à quelques semaines. Pour une conservation plus longue, les entreprises se tournent souvent vers des solutions de stockage externes.


Utiliser des buckets de stockage cloud au lieu de files d'attente Kafka

Les services de stockage cloud tels qu'Amazon S3, Google Cloud Storage ou Azure Blob Storage offrent des solutions évolutives, durables et économiques pour l'archivage de données à long terme. Au lieu de s'appuyer uniquement sur le stockage interne de Kafka, de nombreuses architectures transfèrent les données Kafka les plus anciennes vers des services cloud.


blob cloud et objets stockés dans des buckets

Efficacité dans la localisation et la récupération des messages

Les compartiments de stockage cloud sont des espaces de stockage d'objets, et non des files d'attente de messages. Cela signifie :


  • Les données sont stockées sous forme de fichiers ou d'objets plutôt que de messages individuels.

  • La récupération de messages spécifiques nécessite des stratégies d'indexation ou de partitionnement.

  • La latence d'accès est plus élevée qu'avec le stockage local de Kafka.


Pour optimiser la récupération des données, celles-ci sont souvent stockées dans des formats et des structures qui permettent des requêtes rapides et l'élagage des partitions.


Formats de données et partitionnement : Parquet et ORC

Apache Kafka n'utilise pas nativement les formats Parquet ou ORC. Ces formats de stockage en colonnes sont répandus dans les écosystèmes Big Data pour leur compression et leur efficacité en matière de requêtes.


Lors de l'exportation de données Kafka vers un stockage cloud, de nombreuses équipes convertissent les messages en fichiers Parquet ou ORC. Cette approche présente les avantages suivants :


  • Une compression efficace réduit les coûts de stockage.

  • La mise en page en colonnes accélère les requêtes en ne lisant que les colonnes pertinentes.

  • Le partitionnement par date, sujet ou autres clés permet un filtrage rapide.


Par exemple, il est courant de regrouper les messages Kafka dans des fichiers Parquet horaires, partitionnés par date et par sujet. Cette structure permet aux outils d'analyse en aval de localiser et d'examiner rapidement les données pertinentes.


Bonnes pratiques pour l'utilisation du stockage cloud avec Apache Kafka


1. Utiliser Kafka Connect avec des connecteurs de destination de stockage cloud

Kafka Connect propose des connecteurs prêts à l'emploi pour exporter les topics Kafka vers le stockage cloud. Ces connecteurs gèrent automatiquement le traitement par lots, la conversion de format de fichier et le partitionnement.


  • Choisissez des connecteurs compatibles avec la sortie Parquet ou ORC.

  • Configurez des schémas de partitionnement alignés sur vos modèles de requêtes.

  • Définissez des intervalles de vidage appropriés pour équilibrer la latence et la taille des fichiers.


2. Mettre en œuvre des architectures de stockage hiérarchisées

Le stockage hiérarchisé sépare les données chaudes (récentes, fréquemment consultées) stockées dans les brokers Kafka des données froides (plus anciennes, rarement consultées) stockées dans des compartiments cloud.


  • Conservez les données récentes dans Kafka pour un traitement et un streaming rapides.

  • Transférez les données les plus anciennes vers un stockage cloud pour une conservation à long terme économique.

  • Utilisez des outils comme la fonctionnalité de stockage hiérarchisé d'Apache Kafka (disponible dans certaines distributions) ou des pipelines personnalisés.


3. Concevoir soigneusement le partitionnement et les conventions de nommage

Un partitionnement efficace est essentiel pour une récupération efficace des données dans le stockage cloud.


  • Partitionnez les données par date/heure pour permettre les requêtes temporelles.

  • Incluez le sujet ou le type d'événement dans les clés de partition pour le filtrage.

  • Utilisez des conventions de nommage de fichiers cohérentes pour simplifier l'indexation.


4. Utiliser les métadonnées et l'indexation pour des recherches rapides

Le stockage cloud n'étant pas une file d'attente de messages, l'indexation des métadonnées est essentielle.


  • Maintenir des index ou des catalogues externes (par exemple, AWS Glue, Apache Hive Metastore).

  • Utilisez les registres de schémas pour suivre les formats et les versions des données.

  • Utilisez des moteurs de requêtes comme Presto ou Apache Spark qui s'intègrent au stockage cloud et aux métadonnées.


5. Surveiller et gérer le cycle de vie des données

Définissez des politiques de cycle de vie pour les compartiments cloud afin de gérer le vieillissement des données et les coûts.


  • Archiver ou supprimer les données après les périodes de conservation.

  • Utilisez des classes de stockage (par exemple, S3 Glacier) pour les données rarement consultées.

  • Automatisez le nettoyage pour éviter les coûts de stockage inutiles.


Exemple concret : Pipeline d’analyse de flux

Une entreprise de vente au détail utilise Apache Kafka pour traiter ses données transactionnelles. Les transactions récentes sont analysées en temps réel pour détecter les fraudes. Les transactions plus anciennes sont exportées toutes les heures vers Amazon S3 au format Parquet, segmentées par date et par magasin.


Les analystes interrogent les données S3 à l'aide d'Amazon Athena, qui lit efficacement les fichiers Parquet. Cette configuration réduit les besoins de stockage du broker Kafka et offre un stockage à long terme évolutif et économique, avec des performances de requête rapides.



bottom of page