Apache Flume

=Présentation :=

Flume est une solution de collecte, agrégation et transfert de gros volumes de données. Il est distribué et tolérant à la panne. La plupart du temps il est utilisé pour l’ingestion des logs de systèmes distribué vers un système de fichiers, mais il peut également faire transiter n’importe quel élément, il joue alors un rôle d’ordonnanceur. Il a été pensé pour gérer des débits importants avec une fonctionnalité native d’écriture dans HDFS au fil de l’eau. Pour gérer ces gros volumes/débits, il se doit d’être très scalable, et donc distribué. L’outil fait partie de l’écosystème Big Data open source Hadoop.

=Utilisation :=

Pour faire transiter des données via Flume, il est nécessaire de définir un agent qui regroupera les composants, à savoir des sources, channels, interceptors et sinks, en charge des tâches suivantes :


 * Récupérer les données depuis une source.


 * Faire transiter les données sur un chemin.


 * Filtrer les données et réaliser des opérations dessus pour l’intercepteur.


 * Envoyer les données vers un sink.

Cet agent, avec ses traitements, est défini dans un fichier de configuration qui est, par la suite, fourni en paramètre à l’exécution de Flume. L’intercepteur qui fait partit de la composition de l’agent doit être présenté sous la forme de librairie java. Les évènements transitant à travers Flume sont constitués d’un en-tête regroupant des informations sur ceux-ci et d’un corps contenant l’élément. L’en-tête est utile pour stocker les informations servant à filtrer et rediriger un évènement vers une destination en particulier.

=Forces de la solution :=


 * Flume est intégré à la plupart des distributions Hadoop open source ou commerciales : Cloudera, HortonWorks, MapR ou encore Greenplum.


 * C’est une solution très simple à installer, configurer et exploiter


 * L’architecture applicative et les interfaces Java fournies permettent d’étendre les capacités fonctionnelles de Flume pour l’intégrer avec n’importe quelle solution, que ce soit en source de données ou en destination.


 * La possibilité de greffer des intercepteurs permet un prétraitement des données avant de les transmettre.


 * Le caractère distribué de la solution permet d’atteindre un bon niveau de performance et scalabilité.