Tous les produits
Search
Centre de documentation

E-MapReduce:Flume

Dernière mise à jour :Aug 09, 2026

Apache Flume est un système distribué, fiable et hautement disponible. Vous pouvez utiliser Apache Flume pour collecter, agréger et déplacer de grandes quantités de données de journalisation, puis les stocker de manière centralisée. Diverses sources de données sont prises en charge.

Scénarios

Dans la plupart des cas, Flume sert à collecter des données de journalisation. Vous pouvez également personnaliser les sources Flume pour recueillir des événements provenant de diverses sources de données externes.

Flume stocke les données sur une plateforme de calcul en temps réel, une plateforme de calcul hors ligne ou un système de stockage, en vue d'une analyse et d'un nettoyage ultérieurs des données. Une plateforme de calcul en temps réel peut être Flink, Spark Streaming ou Storm. Une plateforme de calcul hors ligne peut être MapReduce, Hive ou Presto. Un système de stockage peut être Hadoop Distributed File System (HDFS), Object Storage Service (OSS), Kafka ou Elasticsearch. Flume 2

Architecture

Un agent Flume est une instance de Flume. Il s'agit essentiellement d'un processus Java VM (JVM) qui contrôle la transmission des événements des producteurs aux consommateurs. Un agent Flume contient une ou plusieurs sources, canaux et puits. Une source peut se connecter à plusieurs canaux. Un canal peut se connecter à plusieurs puits. Flume

Termes

Terme

Description

event

L'unité de base des données circulant dans un agent Flume. Un événement est composé d'un tableau d'octets de données et d'un ensemble facultatif d'attributs de chaîne ajoutés sous forme d'en-têtes.

Exemple :

--------------------------------
| Header (Map) | Body (byte[]) |
--------------------------------
               Flume Event

source

Collecteur de données. Il collecte des événements depuis une source de données externe et envoie simultanément plusieurs événements vers un ou plusieurs canaux.

Sources courantes :

  • Avro Source : écoute sur un port Avro pour recevoir des événements depuis un client Avro. Avro est un framework de sérialisation de données développé dans le cadre d'un projet Apache Hadoop.

  • Exec Source : exécutez une commande spécifiée, telle que tail -f /var/log/messages, pour obtenir la sortie standard de la commande.

  • NetCat TCP Source : écoute sur un port TCP spécifié pour obtenir des données. Elle offre des fonctionnalités similaires à celles de Netcat UDP Source.

  • Taildir Source : surveille plusieurs fichiers stockés dans un répertoire et enregistre le décalage (offset). L'utilisation de Taildir Source garantit qu'aucune donnée n'est perdue. Cette source est couramment utilisée.

channel

Un canal se situe entre une source et un puits pour mettre en cache les événements.

Canaux courants :

  • Memory Channel : agit comme une file d'attente en mémoire pour mettre en cache les événements. Ce composant offre des performances élevées et est couramment utilisé.

  • File Channel : met en cache les événements dans des fichiers de données et écrit des points de contrôle. Ce composant offre une fiabilité élevée mais des performances moindres.

  • JDBC Channel : met en cache les événements dans des bases de données relationnelles.

  • Kafka Channel : met en cache les événements dans Kafka.

sink

Récupère les événements depuis un canal et les valide en tant que transactions vers un stockage externe. Une fois qu'un événement est validé dans un stockage externe, il est supprimé du canal.

Puits courants :

  • Logger Sink : utilisé à des fins de test.

  • Avro Sink : convertit les événements reçus en événements Avro et les envoie à la source de l'agent Flume suivant dans un flux de données.

  • HDFS Sink : écrit les événements dans HDFS. Ce composant est couramment utilisé.

  • Hive Sink : écrit les événements en tant que transactions dans des tables ou partitions Hive.

  • Kafka Sink : écrit les événements dans Kafka.