Apache Flume - Transfert de données dans Hadoop

Big Data,comme nous le savons, est une collection de grands ensembles de données qui ne peuvent pas être traités à l'aide des techniques informatiques traditionnelles. Le Big Data, lorsqu'il est analysé, donne des résultats précieux.Hadoop est un framework open-source qui permet de stocker et de traiter du Big Data dans un environnement distribué sur des clusters d'ordinateurs à l'aide de modèles de programmation simples.

Streaming / Données de journal

En règle générale, la plupart des données à analyser seront produites par diverses sources de données telles que des serveurs d'applications, des sites de réseaux sociaux, des serveurs cloud et des serveurs d'entreprise. Ces données seront sous la forme delog files et events.

Log file - En général, un fichier journal est un filequi répertorie les événements / actions qui se produisent dans un système d'exploitation. Par exemple, les serveurs Web répertorient chaque demande adressée au serveur dans les fichiers journaux.

En récoltant ces données de journal, nous pouvons obtenir des informations sur -

  • les performances de l'application et localiser diverses défaillances logicielles et matérielles.
  • le comportement des utilisateurs et obtenir de meilleures informations commerciales.

La méthode traditionnelle de transfert de données dans le système HDFS consiste à utiliser le putcommander. Voyons comment utiliser leput commander.

Commande put HDFS

Le principal défi dans la gestion des données de journal consiste à déplacer ces journaux produits par plusieurs serveurs vers l'environnement Hadoop.

Hadoop File System Shellfournit des commandes pour insérer des données dans Hadoop et en lire. Vous pouvez insérer des données dans Hadoop à l'aide duput comme indiqué ci-dessous.

$ Hadoop fs –put /path of the required file  /path in HDFS where to save the file

Problème avec la commande put

Nous pouvons utiliser le putcommande de Hadoop pour transférer les données de ces sources vers HDFS. Mais, il souffre des inconvénients suivants -

  • En utilisant put commande, nous pouvons transférer only one file at a timetandis que les générateurs de données génèrent des données à un rythme beaucoup plus élevé. Puisque l'analyse faite sur des données plus anciennes est moins précise, nous devons avoir une solution pour transférer les données en temps réel.

  • Si nous utilisons putcommande, les données doivent être empaquetées et doivent être prêtes pour le téléchargement. Étant donné que les serveurs Web génèrent des données en continu, c'est une tâche très difficile.

Ce dont nous avons besoin ici, c'est de solutions capables de surmonter les inconvénients de put commander et transférer les «données en continu» des générateurs de données vers les magasins centralisés (en particulier HDFS) avec moins de retard.

Problème avec HDFS

Dans HDFS, le fichier existe en tant qu'entrée de répertoire et la longueur du fichier sera considérée comme zéro jusqu'à ce qu'il soit fermé. Par exemple, si une source écrit des données dans HDFS et que le réseau a été interrompu au milieu de l'opération (sans fermer le fichier), les données écrites dans le fichier seront perdues.

Par conséquent, nous avons besoin d'un système fiable, configurable et maintenable pour transférer les données du journal dans HDFS.

Note- Dans le système de fichiers POSIX, chaque fois que nous accédons à un fichier (par exemple, effectuer une opération d'écriture), d'autres programmes peuvent toujours lire ce fichier (au moins la partie sauvegardée du fichier). Cela est dû au fait que le fichier existe sur le disque avant sa fermeture.

Solutions disponibles

Pour envoyer des données en streaming (fichiers journaux, événements etc.,) à partir de diverses sources vers HDFS, nous avons les outils suivants à notre disposition -

Scribe de Facebook

Scribe est un outil extrêmement populaire utilisé pour agréger et diffuser des données de journal. Il est conçu pour s'adapter à un très grand nombre de nœuds et être robuste aux pannes de réseau et de nœud.

Apache Kafka

Kafka a été développé par Apache Software Foundation. C'est un courtier de messages open-source. En utilisant Kafka, nous pouvons gérer des flux à haut débit et à faible latence.

Apache Flume

Apache Flume est un outil / service / mécanisme d'ingestion de données pour collecter l'agrégation et le transport de grandes quantités de données en continu telles que les données de journal, les événements (etc.) de divers serveurs Web vers un magasin de données centralisé.

Il s'agit d'un outil hautement fiable, distribué et configurable qui est principalement conçu pour transférer des données en continu de diverses sources vers HDFS.

Dans ce tutoriel, nous discuterons en détail de l'utilisation de Flume avec quelques exemples.