Apache Flume : Qu’est-ce que c’est ? À quoi ça sert ?

-
4
 m de lecture
-

Toutes les entreprises, quel que soit leur taille ou leur secteur d’activité, utilisent des fichiers logs pour enregistrer l’ensemble des événements qui se déroulent sur le web serveur. Mais à l’heure du tout digital, ces événements sont de plus en plus nombreux. Les logs stockent alors une quantité de données exponentielle. Pour traiter toutes ces données, les administrateurs réseau et les DevOps ont besoin d’outils performants. C’est à cet instant qu’intervient Apache Flume. De quoi s’agit-il ? Ses avantages et ses inconvénients ? Découvrez toutes les réponses dans cet article.

Qu’est-ce qu’Apache Flume ?

Au vu de l’augmentation des données collectées par les logs, de nouveaux outils facilitant leur exploitation émergent. C’est notamment le cas de Flume Apache.

Il s’agit d’un outil permettant de collecter, d’agréger et de déplacer de grandes quantités de logs. Cette solution a été spécialement pensée pour gérer des volumes et des débits importants.

À cette fin, Apache Flume est écrit dans un HDFS. C’est-à-dire, un système de fichiers distribué qui gère de grands ensembles de données.

L’idée est de permettre aux utilisateurs d’accéder aux fichiers présents sur le système de stockage partagé. Et ce, depuis l’un des serveurs du réseau. Toutes les ressources peuvent ainsi être partagées beaucoup plus facilement.

Grâce à sa capacité à gérer de grands volumes de données, Apache Flume est particulièrement adapté en cas de pics de charge.

Après plusieurs remaniements dus à une architecture trop complexe et un code endetté, Flume OG (old Generation) est devenu Flume NG (new generation). Ce qui permet à l’outil d’offrir aux utilisateurs des fonctionnalités plus avancées et une utilisation simplifiée. D’ailleurs, il est classé parmi les Top Level Apache Project en 2012. À savoir, les projets open source qui ont vocation à apporter des changements innovants dans le monde informatique.

LANCEZ VOTRE CARRIÈRE :
DEVENEZ DATA SCIENTIST !

Une reconversion dans le big data vous intéresse, mais vous ne savez pas par où commencer ? Découvrez notre formation de Data Scientist.

LANCEZ VOTRE CARRIÈRE :
DEVENEZ DATA SCIENTIST !

Une reconversion dans le big data vous intéresse, mais vous ne savez pas par où commencer ?

Découvrez notre formation de Data Scientist

Comment fonctionne Flume ?

L’architecture de Flume

Comme vu précédemment, Flume est une solution distribuée. À ce titre, son architecture est constituée de nombreux d’agents.

Il faudra donc définir les agents distribués qui se chargent de :

  • récupérer les données en provenance d’une multitude de sources ;
  • consolider les logs pour les écrire dans un référentiel
  • centralisé (comme un cluster HDFS ou une base HBase).

Nous allons voir plus en détail leur rôle.

Les agents

Traditionnellement, l’agent effectue des routes qui se matérialisent comme cela : Source -> Channel -> Sink.

Chacun de ces éléments remplit une fonction bien particulière :

La source Flume

L’idée est de récupérer le message en provenance d’une source externe, comme une application, le trafic réseau, les médias sociaux, les messages électroniques, et bien d’autres sources.

Il existe différents types de source Flume ; chacune présentant des caractéristiques spécifiques. Les plus courants sont les suivantes :

    • Avro : cela permet de communiquer entre les différents agents de Flume Apache.
    • Spooling Directory Source : facilite la lecture des fichiers entrants.
    • Syslog (TCP ou UDP) : l’idée est de capter les événements d’un serveur syslog.
    • HTTP : il permet de traduire les requêtes POST et GET.

Il s’agit d’une liste non exhaustive. Les agents peuvent en effet utiliser une multitude de sources en fonction des spécificités de l’organisation.

Le channel (ou le chemin)

C’est ici que les logs sont stockés par l’agent. Là encore, il existe différents channels, à savoir :

    • Memory : les évènements sont gardés en mémoire.
    • JDBC : il s’agit du stockage sur une base de données.
    • File : c’est un filesystem qui permet de conserver les logs.
Le sink

C’est ce qui permet de réécrire le log data dans son référentiel de destination. Les événements peuvent alors être poussés vers HDFS, IRC, HBase, ElasticSearch, File (ou fichier local). Il est aussi possible d’utiliser Avro pour faciliter la communication avec un autre agent.

La personnalisation

Si le chemin précédent est le plus classique, il est toujours possible de personnaliser la route. Notamment en ajoutant un intercepteur qui a pour rôle de trier et de filtrer les logs, afin de les orienter vers le bon référentiel.

Dans le même esprit, les équipes IT peuvent créer des liens entre plusieurs agents, ajouter plusieurs channels ou sinks, ou encore implémenter leurs propres sources, channel ou sink à partir d’interfaces Java.

La route peut alors être beaucoup plus complexe que précédemment, mais elle rend le flux de données plus intelligent. Dans tous les cas, l’idée est de réaliser des traitements de logs qui s’adaptent aux besoins de l’organisation.

Quels sont les avantages de Flume ?

Sollicité par de nombreuses entreprises, Apache Flume présente une multitude d’avantages :

  • La simplicité : que ce soit au niveau de l’installation, de la configuration ou de l’exploitation, Apache Flume est très facile à utiliser.
  • La personnalisation : en fonction des spécificités métier, les organisations ont toujours la possibilité d’implémenter des interfaces Java. Ce qui permet de bénéficier de fonctionnalités supplémentaires.
  • La compatibilité : Flume a été développé par un éditeur d’Hadoop, Cloudera, sous licence Apache. C’est donc un outil appartenant à l’écosystème Big Data open source Hadoop. À ce titre, il s’intègre à la plupart des distributions du framework. Ce qui permet alors d’interagir avec de multiples technologies.
  • La performance : comme il s’agit d’une solution distribuée, Flume atteint d’excellents niveaux en termes de performance et de scalabilité. Les entreprises présentant un système d’information complexe (avec plusieurs milliers d’événements par seconde) pourront parfaitement utiliser cet outil.
  • L’accessibilité : comme Apache Flume est un logiciel SaaS, il est supporté par tous les systèmes d’exploitation (Windows, Mac, OS Mobile …), ce qui permet d’y accéder depuis n’importe quel navigateur web.
  • La tolérance à la panne : en cas de détection de composants défaillants, Flume utilise des composants de sauvegarde qui les remplacent automatiquement. Ce qui évite les interruptions de service.

Quels sont les inconvénients ?

Même si Flume présente de nombreux avantages, il présente toutefois quelques faiblesses :

  • La lenteur en écriture sur disque : pour maximiser les performances, il faut privilégier l’écriture de data sur mémoire.
  • Le manque d’élasticité : l’ajout d’un nouveau nœud dans la topologie n’est pas détectable.
  • La configuration : pour optimiser la vitesse du débit, les DevOps doivent configurer autant de routes que de coeurs CPU disponibles. Ce qui implique plusieurs centaines de lignes de configuration identiques (ou presque). Afin d’en simplifier la lecture, il est donc nécessaire de s’équiper d’un script de génération de data.

En quoi se différencie Flume Apache d’autres outils ?

Pour la gestion de logs, il existe d’autres outils comme Logstash, ou encore Kafka. Alors quelles différences entre ces solutions ?

Flume Vs Logstasch

Si Flume et Logstash présentent de nombreuses fonctionnalités similaires, il convient toutefois de rappeler les différences entre les deux.

Côté Flume, l’envoi de données dans un HDFS (Hadoop) est possible nativement, alors qu’il faut installer un plugin avec Logstash. En outre, Flume permet aussi d’utiliser Avro pour optimiser les performances de sérialisation de l’outil.

En revanche, Logstash est beaucoup plus simple à configurer.

Flume vs Kafta

Si Flume et Kafta sont deux outils sous licence Apache, ils présentent plusieurs différences.

En effet, Flume est chargé de collecter, d’agréger et de déplacer de grandes quantités de logs provenant de nombreuses sources différentes. L’outil peut donc recevoir des données en continu de plusieurs sources pour les stocker et les analyser dans Hadoop.

De son côté, Kafka est spécialement conçu pour l’ingestion et le traitement de données en continu en temps réel. Pour cela, il traitera chaque partition de sujet comme un ensemble ordonné de messages.

UNE CARRIÈRE DANS LA DATA VOUS TEND LES BRAS !

Une reconversion dans le big data vous intéresse, mais vous ne savez pas par où commencer ? Découvrez nos formations en Data Science.

Participer à votre première formation data gratuitement !

Assistez aux cours dispensés en live par nos formateurs pour démarrer sur Python, SQL, Power BI…

UNE CARRIÈRE DANS LA DATA VOUS TEND LES BRAS !

Une reconversion dans le big data vous intéresse, mais vous ne savez pas par où commencer

Découvrez nos formations en Data Science.

Participer à votre première formation data gratuitement !

Assistez aux cours dispensés en live par nos formateurs pour démarrer sur Python, SQL, Power BI …
Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?