Accéder au contenu principal

Apache Kafka pour les débutants : Un guide complet

Découvrez Apache Kafka avec notre guide du débutant. Apprenez les bases, démarrez et découvrez les fonctionnalités avancées et les applications concrètes de cette puissante plateforme de diffusion d'événements.
Actualisé 16 janv. 2025  · 8 min de lecture

Le paysage applicatif moderne a été complètement transformé par les microservices et les architectures applicatives basées sur les événements. L'époque du traitement par lots est révolue. Pour répondre aux exigences de rapidité et de disponibilité, les développeurs visent une rapidité quasi réelle et une architecture d'application entièrement découplée.

Un système de gestion des événements est généralement utilisé par des applications découplées pour faciliter l'intégration de différents services. Une autre application d'un magasin d'événements se trouve dans les architectures basées sur l'approvisionnement en événements, où toute la logique de l'application est exprimée en termes d'événements. C'est ici qu'intervient Apache Kafka.

Apache Kafka est un framework open-source de flux d'événements distribués développé chez LinkedIn par une équipe comprenant Jay Kreps, Jun Rao et Neha Narkhede. L'outil a été optimisé pour ingérer et traiter des données en continu en temps réel ; il peut donc être utilisé pour mettre en œuvre des pipelines de données à haute performance, des applications d'analyse en continu et des services d'intégration de données.

Essentiellement, Kafka est un cadre pour les magasins d'événements distribués et le traitement des flux, qui peut être utilisé comme courtier de messages, magasin d'événements, système de gestion des files d'attente, etc. Vous pouvez lire notre comparaison entre Kafka et Amazon SQS dans un guide séparé et découvrir le fonctionnement des partitions Kafka dans notre tutoriel. 

Pourquoi Kafka ?

Après avoir stocké les événements, la plateforme de streaming d' événements les dirige vers les services concernés. Les développeurs peuvent faire évoluer et maintenir un tel système sans dépendre d'autres services. Étant donné que Kafka est un logiciel tout-en-un qui peut être utilisé comme courtier de messages, magasin d'événements ou cadre de traitement de flux, il répond parfaitement à ce type d'exigence.

Avec un débit et une durabilité élevés, des centaines de sources de données peuvent fournir simultanément d'énormes flux de données continus qui peuvent être traités de manière séquentielle et progressive par le système de courtier en messages d'Apache Kafka.

De plus, les avantages d'Apache Kafka sont les suivants :

Haut débit

L'architecture bien conçue de Kafka, qui comprend le partitionnement des données, le traitement par lots, les techniques de copie zéro et les journaux de type append-only, lui permet d'atteindre un débit élevé et de gérer des millions de messages par seconde, ce qui répond aux scénarios de données à grande vitesse et à grand volume. Ainsi, le protocole de communication léger qui facilite l'interaction efficace entre le client et le courtier rend possible la diffusion de données en temps réel.

Évolutivité

Apache Kafka permet d'équilibrer la charge entre les serveurs en divisant un sujet en plusieurs partitions. Cela permet aux utilisateurs de répartir les grappes de production entre les zones géographiques ou les zones de disponibilité et de les augmenter ou de les réduire en fonction de leurs besoins. En d'autres termes, Apache Kafka peut être facilement mis à l'échelle pour gérer des billions de messages par jour à travers un grand nombre de partitions.

Faible latence

Apache Kafka utilise une grappe de serveurs à faible latence (aussi peu que 2 millisecondes) pour transmettre efficacement des messages à un débit limité par le réseau en découplant les flux de données.

Durabilité et fiabilité

Apache Kafka améliore la tolérance aux pannes et la durabilité des données de deux manières principales :

  • Il distribue le stockage des flux de données dans un cluster tolérant aux pannes afin de se prémunir contre les défaillances des serveurs.
  • Il enregistre les messages sur disque et offre une réplication intra-groupe.

Haute disponibilité

Grâce à ses brokers basés sur des clusters, Kafka reste opérationnel lors d'une panne de serveur. Cela fonctionne parce que lorsque l'un des serveurs rencontre des problèmes, Kafka est suffisamment intelligent pour envoyer des requêtes à différents courtiers.

Composants principaux de Kafka

Apache Kafka permet aux utilisateurs d'analyser les données en temps réel, de stocker les enregistrements dans l'ordre où ils ont été créés, de les publier et de s'y abonner.

Les principaux composants d'Apache Kafka

Les principaux composants d'Apache Kafka | Source : Démarrez votre pipeline temps réel avec Apache Kafka par Alex Kam

Apache Kafka est une grappe de serveurs de commodités évolutive horizontalement qui traite des données en temps réel provenant de plusieurs systèmes et applications "producteurs" (par exemple, des applications de journalisation, de surveillance, de capteurs et de l'internet des objets) et les met à la disposition de plusieurs systèmes et applications "consommateurs" (par exemple, des applications d'analyse en temps réel) avec un temps de latence très faible, comme le montre le diagramme ci-dessus.

Notez que les applications qui dépendent du traitement des données en temps réel et des systèmes d'analyse peuvent toutes deux être considérées comme des consommateurs. Par exemple, une application de micromarketing ou de logistique basée sur la localisation.

Voici quelques termes clés à connaître pour mieux comprendre les principaux composants de Kafka :

  • Les courtiers sont des serveurs de la grappe qui stockent les données et servent les clients.
  • Les thèmes sont des catégories ou des flux dans lesquels les enregistrements sont publiés. Notez qu'il existe deux types de sujets : compacts et réguliers. Les documents stockés dans des thèmes compactés ne sont pas limités par le temps ou l'espace. Les anciens messages de sujet ayant la même clé sont mis à jour par les nouveaux messages, et Apache Kafka ne supprime pas le message le plus récent à moins que l'utilisateur ne le fasse. En revanche, les enregistrements stockés dans des rubriques régulières peuvent être configurés pour expirer, ce qui permet de supprimer les données obsolètes et de libérer de l'espace de stockage.
  • Les producteurs sont des applications clientes qui publient (écrivent) des événements dans les sujets Kafka.
  • Les consommateurs sont des applications qui lisent et traitent les événements des sujets Kafka. Les programmes Java qui récupèrent des données à partir de Topics et renvoient les résultats à Apache Kafka peuvent être écrits grâce à l'API Streams pour Apache Kafka. Les systèmes de traitement de flux externes comme Apache Spark, Apache Apex, Apache Flink, Apache NiFi et Apache Storm peuvent également traiter ces flux de messages.
  • Kafka utilise une bibliothèque client appelée "Streams" pour créer des microservices et des applications où les données sont stockées dans des clusters pour l'entrée et la sortie.

Démarrer avec Kafka

Il est souvent recommandé de démarrer Apache Kafka avec Zookeeper pour une compatibilité optimale. Par ailleurs, Kafka peut rencontrer plusieurs problèmes lorsqu'il est installé sous Windows, car il n'est pas conçu à l'origine pour être utilisé avec ce système d'exploitation. Par conséquent, il est conseillé d'utiliser ce qui suit pour lancer Apache Kafka sur Windows :

  • WSL2 si vous utilisez Windows 10 ou une version ultérieure, ou Docker
  • Docker Si vous utilisez Windows 8 ou une version antérieure

Il n'est pas conseillé d'utiliser la JVM pour exécuter Kafka sous Windows, car elle ne possède pas certaines des caractéristiques POSIX propres à Linux. Vous rencontrerez éventuellement des difficultés si vous essayez d'exécuter Kafka sur Windows sans WSL2.

Cela dit, la première étape de l'installation d'Apache Kafka sous Windows consiste à installer WSL2.

Étape 1 : Install WSL2

WSL2, ou Windows Subsystem for Linux 2, permet à votre PC Windows d'accéder à un environnement Linux sans avoir besoin d'une machine virtuelle.

La plupart des commandes Linux sont compatibles avec WSL2, ce qui rapproche le processus d'installation de Kafka des instructions proposées pour Mac et Linux.

Conseil : Assurez-vous que vous utilisez Windows 10 version 2004 ou supérieure (Build 19041 et plus) avant d'installer WSL2. Appuyez sur la touche du logo Windows + R, tapez "winver", puis cliquez sur OK pour connaître votre version de Windows.

La manière la plus simple d'installer Windows Subsystem for Linux (WSL) est d'exécuter la commande suivante dans un PowerShell administrateur ou une invite de commande Windows, puis de redémarrer votre ordinateur :

wsl --install

Notez que vous serez invité à créer un compte d'utilisateur et un mot de passe pour votre distribution Linux nouvellement installée.

Suivez les étapes du site web Microsoft Docs si vous êtes bloqué.

Étape 2 : Install Java

Si Java n'est pas installé sur votre machine, vous devez télécharger la dernière version.

Étape 3 : Installer Apache Kafka

Au moment de la rédaction de cet article, la dernière version stable d'Apache Kafka est la 3.7.0, publiée le 27 février 2024. Cela peut changer à tout moment. Pour vous assurer que vous utilisez la version la plus récente et la plus stable de Kafka, consultez la page de téléchargement.

Téléchargez la dernière version à partir des téléchargements binaires.

Une fois le téléchargement terminé, accédez au dossier dans lequel Kafka a été téléchargé et extrayez tous les fichiers du dossier zippé. Notez que nous avons nommé notre nouveau dossier "Kafka".

Étape 3 : Démarrer Zookeeper

Zookeeper est nécessaire pour la gestion des clusters dans Apache Kafka. Par conséquent, Zookeeper doit être lancé avant Kafka. Il n'est pas nécessaire d'installer Zookeeper séparément car il fait partie d'Apache Kafka.

Ouvrez l'invite de commande et naviguez jusqu'au répertoire racine de Kafka. Une fois sur place, exécutez la commande suivante pour démarrer Zookeeper :

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

Début 4 : Démarrez le serveur Kafka

Ouvrez une autre invite de commande et exécutez la commande suivante à partir de la racine d'Apache Kafka pour démarrer Apache Kafka :

.\bin\windows\kafka-server-start.bat .\config\server.properties

Étape 5 : Créer un sujet

Pour créer un sujet, démarrez une nouvelle invite de commande à partir du répertoire racine de Kafka et exécutez la commande suivante :

.\bin\windows\kafka-topics.bat --create --topic MyFirstTopic --bootstrap-server localhost:9092

Cela créera un nouveau sujet Kafka appelé "MyFirstTopic".

Note : pour confirmer qu'il a été créé correctement, l'exécution de la commande renverra le message suivant : "Create topic <name of topic>" (Créer le sujet <nom du sujet>).

Étape 6 : Démarrer le producteur Kafka

Un producteur doit être démarré pour placer un message dans le sujet Kafka. Pour ce faire, exécutez la commande suivante :

.\bin\windows\kafka-console-producer.bat --topic MyFirstTopic --bootstrap-server localhost:9092

Étape 7 : Démarrer le consommateur Kafka

Ouvrez une autre invite de commande à partir du répertoire racine de Kafka et exécutez la commande suivante pour envoyer à stat le consommateur Kafka :

.\bin\windows\kafka-console-consumer.bat --topic MyFirstTopic --from-beginning --bootstrap-server localhost:9092

Désormais, lorsqu'un message est produit par le producteur, il est lu par le consommateur en temps réel.

Un message produit par le producteur et lu par le consommateur Kafka en temps réel.

Un GIF montre un message produit par le producteur et lu par le consommateur Kafka en temps réel.

Et voilà... Vous venez de créer votre premier sujet Kafka.

Fonctionnalités avancées de Kafka

Voici quelques fonctionnalités avancées de Kafka...

Flux Kafka

En utilisant Apache Kafka, les développeurs peuvent créer des applications robustes de traitement de flux à l'aide de Kafka Streams. Il propose des API et un langage de haut niveau spécifique au domaine (DSL) pour la manipulation, la conversion et l'évaluation de flux continus de données.

Parmi les principales caractéristiques, citons

Traitement des flux

Le traitement en temps réel des flux d'enregistrements est rendu possible par Kafka Streams. Il vous permet de recevoir des données des sujets Kafka, de les traiter et de les transformer, puis de renvoyer les informations traitées vers les sujets Kafka. Le traitement en continu permet des analyses, un contrôle et un enrichissement des données en temps quasi réel. Elle peut être appliquée à des enregistrements individuels ou à des agrégations fenêtrées.

Traitement des événements

En utilisant les horodatages attachés aux enregistrements, vous pouvez traiter les enregistrements hors ordre grâce à la prise en charge par Kafka Streams du traitement des événements. Il fournit des opérations de fenêtrage à la sémantique événementielle, permettant la jonction de fenêtres, la sessionnalisation et les agrégations basées sur le temps.

Opérations temporelles et fenêtrage

Kafka Streams propose un certain nombre d'opérations de fenêtrage qui permettent aux utilisateurs d'effectuer des calculs sur des fenêtres de session, des fenêtres mobiles, des fenêtres coulissantes et des fenêtres temporelles fixes.

Les procédures fenêtrées permettent de déclencher des événements, d'effectuer des analyses sensibles au temps et des agrégations temporelles.

Traitement par état

Pendant le traitement des flux, Kafka Streams permet aux utilisateurs de conserver et de mettre à jour l'état. Une prise en charge intégrée des magasins d'État est prévue. Notez qu'une mémoire d'état est une mémoire clé-valeur qui peut être mise à jour et interrogée au sein d'une topologie de traitement.

Les fonctions avancées de traitement des flux, telles que les jointures, les agrégations et la détection des anomalies, sont rendues possibles par les opérations avec état.

Traitement en une seule fois

Kafka Streams fournit une sémantique de bout en bout pour le traitement "exactly-once", garantissant que chaque enregistrement est traité précisément une fois, même en cas de défaillance. Pour ce faire, vous pouvez utiliser les solides garanties de durabilité et les fonctions transactionnelles de Kafka.

Kafka Connect

Le cadre d'intégration de données déclaratif et enfichable pour Kafka s'appelle Kafka Connect. Il s'agit d'un composant libre et gratuit d'Apache Kafka qui agit comme un hub de données centralisé pour une intégration simple des données entre les systèmes de fichiers, les bases de données, les index de recherche et les magasins de valeurs clés.

La distribution Kafka inclut Kafka Connect par défaut. Pour l'installer, il vous suffit de lancer un processus de travailleur.

Utilisez la commande suivante à partir du répertoire racine de Kafka pour lancer le processus de travailleur Kafka Connect :

.\bin\windows\connect-distributed.bat 
.\config\connect-distributed.properties

Cela lancera le travailleur Kafka Connect en mode distribué, permettant la haute disponibilité et l'évolutivité de l'exécution de nombreux travailleurs dans un cluster.

Note : Le fichier .\config\connect-distributed.properties spécifie les informations du courtier Kafka et d'autres propriétés de configuration pour Kafka Connect.

Les connecteurs sont utilisés par Kafka Connect pour transférer des données entre des systèmes externes et des sujets Kafka. Les connecteurs peuvent être installés et configurés pour répondre à vos besoins spécifiques en matière d'intégration de données.

Pour installer un connecteur, il suffit de télécharger le fichier JAR du connecteur et de l'ajouter au répertoire plugin.path mentionné dans le fichier .\config\connect-distributed.properties.

Un fichier de configuration du connecteur doit être créé, dans lequel la classe du connecteur et d'éventuelles autres caractéristiques doivent être spécifiées. L'API REST Kafka Connect et les outils de ligne de commande peuvent être utilisés pour construire et maintenir les connecteurs.

Ensuite, pour combiner des données provenant d'autres systèmes, vous devez configurer le connecteur Kafka. Kafka Connect propose plusieurs connecteurs pour intégrer des données provenant de différents systèmes, tels que les systèmes de fichiers, les files d'attente de messages et les bases de données. Sélectionnez un connecteur en fonction de vos besoins d'intégration - voir la documentation pour la liste des connecteurs.

Applications concrètes de Kafka

Voici quelques cas d'utilisation courants d'Apache Kafka.

Cursus d'activité

Kafka peut être utilisé par une plateforme de commerce en ligne pour suivre l'activité des utilisateurs en temps réel. Chaque action de l'utilisateur, y compris la consultation de produits, l'ajout d'articles au panier, les achats, les commentaires, les recherches, etc., peut être publiée en tant qu'événement dans des thèmes Kafka particuliers.

D'autres microservices peuvent stocker ou utiliser ces événements pour la détection des fraudes en temps réel, les rapports, les offres personnalisées et les recommandations.

Messagerie

Grâce à son débit amélioré, au partitionnement intégré, à la réplication, à la tolérance aux pannes et aux capacités de mise à l'échelle, Kafka est un bon substitut aux courtiers en messages conventionnels.

Une application de covoiturage basée sur des microservices peut l'utiliser pour faciliter les échanges de messages entre différents services.

Par exemple, l'entreprise de réservation de trajets peut utiliser Kafka pour communiquer avec le service de mise en relation avec les chauffeurs lorsqu'un usager effectue une réservation. Le service de mise en relation peut alors, presque en temps réel, localiser un chauffeur dans la région et lui répondre par un message.

Agrégation de journaux

En règle générale, il s'agit d'obtenir des fichiers journaux physiques à partir des serveurs et de les stocker dans un emplacement central pour traitement, tel qu'un serveur de fichiers ou un lac de données. Kafka présente les données sous la forme d'un flux de messages et filtre les informations spécifiques au fichier. Cela permet de traiter les données avec un temps de latence réduit et de s'adapter plus facilement à la consommation de données distribuées et à différentes sources de données.

Une fois les journaux publiés dans Kafka, ils peuvent être utilisés pour le dépannage, la surveillance de la sécurité et les rapports de conformité par un outil d'analyse des journaux ou un système de gestion des informations et des événements de sécurité (SIEM).

Traitement des flux

Plusieurs utilisateurs de Kafka traitent les données dans des pipelines de traitement en plusieurs étapes. Les données brutes sont extraites des sujets Kafka, agrégées, enrichies ou transformées en de nouveaux sujets pour une consommation ou un traitement supplémentaires.

Par exemple, une banque peut utiliser Kafka pour traiter des transactions en temps réel. Chaque transaction lancée par un client est ensuite publiée dans un sujet Kafka en tant qu'événement. Par la suite, une application peut prendre en compte ces événements, vérifier et traiter les transactions, arrêter celles qui sont douteuses et mettre instantanément à jour les soldes des clients.

Métriques

Kafka pourrait être utilisé par un fournisseur de services cloud pour agréger des statistiques provenant d'applications distribuées afin de générer des flux centralisés de données opérationnelles en temps réel. Des mesures provenant de centaines de serveurs, telles que la consommation de CPU et de mémoire, le nombre de requêtes, les taux d'erreur, etc. peuvent être communiquées à Kafka. Les applications de surveillance peuvent ensuite utiliser ces mesures pour identifier les anomalies, lancer des alertes et visualiser les données en temps réel.

Conclusion

Kafka est un cadre de traitement des flux qui permet aux applications de publier, de consommer et de traiter de grandes quantités de flux d'enregistrements de manière rapide et fiable. Compte tenu de la prévalence croissante du flux de données en temps réel, il est devenu un outil essentiel pour les développeurs d'applications de données.

Dans cet article, nous avons abordé les raisons pour lesquelles on peut décider d'utiliser Kafka, les composants de base, la manière de commencer à l'utiliser, les fonctionnalités avancées et les applications du monde réel. Pour poursuivre votre apprentissage, consultez le site :

Obtenez une certification pour le poste de Data Engineer de vos rêves

Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

Obtenez votre certification
Timeline mobile.png

Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Sujets

Commencez dès aujourd'hui votre parcours de Data Engineer !

cursus

Data Engineer

40hrs hr
Gain in-demand skills to efficiently ingest, clean, manage data, and schedule and monitor pipelines, setting you apart in the data engineering field.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus