Photo by Markus Spiske on Unsplash

Hadoop pour les nuls – Présentation de l’écosystème

Hadoop ou Apache Hadoop est un framework libre et open source écrit en Java destiné à faciliter la création d’applications distribuées et permettant de traiter aisément des pétaoctets de données.

Hadoop est un outil incontournable dans le monde du Big Data!

Petite parenthèse pour le Big data
Le Big Data est un terme utilisé pour décrire une collection de données de grande taille et qui croît de façon exponentielle avec le temps. En fait, ces données sont si volumineuses et complexes qu’aucun des outils traditionnels de gestion des données n’est capable de les stocker ou de les traiter efficacement (coucou excel 😁) .

guru99

On peut ainsi dire qu’Hadoop est tout un écosystème ou un ensemble de plusieurs services qui permettent l’ingestion, le stockage et l’analyse de gros volumes de données.

L’écosystème Hadoop est composé des éléments suivants :

  • HDFS : le système de fichier distribué d’Apache Hadoop
  • YARN : le gestionnaire de ressources et des tâches dans un cluster Hadoop
  • MapReduce : un framework pour le traitement de grands ensembles de données en parallèle
  • Spark : un moteur d’analyse unifié pour le traitement de données à grande échelle
  • PIG, HIVE : Services de traitement de données à l’aide de requêtes du type SQL
  • HBase : système de gestion de base de données non-relationnelles distribué
  • Mahout, Spark MLlib : des services pour faire du Machine Learning
  • Apache Drill : Moteur de requête SQL sur Hadoop
  • Zookeeper : Pour la gestion de Cluster
  • Oozie : Système de planification de workflow pour gérer les jobs Hadoop
  • Flume, Sqoop : Services d’ingestion de données
  • Solr & Lucene : Pour la recherche et l’indexation
  • Ambari :  Mise à disposition, monitoring et maintenance de cluster
Quelques outils de l'écosystème Hadoop
Quelques outils de l’écosystème Hadoop – source : http://blog.newtechways.com/2017/10/apache-hadoop-ecosystem.html

HDFS – Hadoop Distributed File System

HDFS est système de fichiers d’Hadoop. Il est l’élément clé de l’écosystème Hadoop car il permet de stocker de façon distribuées de gros volumes de données de différents types  (données structurées, non structurées et semi-structurées).

NB : stocker des données selon une architecture distribuée veut simplement dire que les données ne se trouvent pas au même endroit ou sur la même machine.

Le système de fichiers HDFS  comporte deux principaux composants qui sont le NameNode et les DataNodes.

  • Le NameNode est le nœud (ou machine) principal et il ne stocke pas les données réelles. Vu que dans Hadoop les données ne sont pas au même endroit et pire elles sont découpées morceaux et dupliquées, le travail du NameNode est de savoir à tout instant où se trouve la données. On peut dire qu’il stocke des métadonnées sur les machines (ou noeud) où se trouve véritablement les données. Par conséquent, il nécessite moins de stockage et des ressources de calcul élevées.
  • Vous l’avez surement deviné, de l’autre côté il y a les DataNodes qui se chargent du stockage des données et nécessitent donc plus de ressources de stockage

Ainsi, l’accès, l’écriture et la modification des données passera forcément par le NameNode qui est un peu comme le chef d’orchestre. Il fera ensuite toute la moulinette pour savoir où se trouve la donnée, comment la stocker … et enverra des requêtes aux DataNodes afin de récupérer/stocker les données.

HDFS -Hadoop
NameNode – DataNodes

 

YARN – Yet Another Resource Negotiator

YARN est un gestionnaire de ressources au sein d’un cluster Hadoop. Il a pour but de planifier et allouer les ressources au sein des clusters Hadoop. Un peu comme HDFS qui se charge de la gestion du stockage, YARN se charge de la puissance de calcul.

YARN est l’ensemble de trois principaux composants :

  • Le « resource manager » qui est chargé de recevoir les demandes de calculs et de les dispatcher aux nodes managers
  • Les « nodes managers » qui sont installés sur chaque datanode se chargeront d’effectuer des calculs au sein de ce datanode.
  • L’application manager qui fonctionne comme une interface de négociation de ressource entre le resource manager et des nodes managers. C’est grâce à lui que le resource manager arrive à connaitre la puissance de calcul disponible dans chaque conteneur (l’environnement dans lequel les processus de chaque datanode sont exécutés).

Illustration avec l’image suivante :

YARN - Hadoop
Source : https://www.researchgate.net/figure/Apache-Hadoop-Yarn-Architecture_fig5_329387483

MapReduce

C’est un modèle de programmation présent au sein d’Hadoop qui permet d’effectuer des calculs en parallèle. L’idée derrière MapReduce est de pouvoir diviser tous les traitements en deux parties (Map et Reduce) *pour faire simple *. Les opérations de Map consistent à filtrer, trier et regrouper les données sous forme de clé-valeur (tuple). Ensuite, les opérations de Reduce auront pour but de combiner ces tuples afin d’obtenir le résultat souhaité.

Un exemple concret :

Imaginons qu’on aimerait compter l’occurrence de chaque mot dans un texte de façon distribuée. L’objectif sera de découper le texte en petit morceau et compter l’occurrence des mots de chaque morceau du texte et en faire la somme. C’est le rôle de MapReduce.

mapreduce

Apache PIG

Apache PIG permet d’effectuer des opérations (MapReduce) sans écrire de code Java (Hadoop c’est en java). De plus, PIG propose un langage de programmation assez proche du SQL (PIG Latin). En effet, les requêtes ou scripts  écrits en PIG Latin lors de leur exécution seront interprétés par Apache PIG qui les convertira en MapReduce.

Apache Hive – L’entrepôt de données sur Hadoop

Apache Hive est une infrastructure d’entrepôt de données intégrée sur Hadoop permettant l’analyse, le requétage via un langage proche syntaxiquement de SQL (appelé HiveQL ou HQL)  ainsi que la synthèse de données. Comme PIG, Hive traduit automatiquement les requêtes en tâches MapReduce qui s’exécuteront sur Hadoop.

Mahout

Mahout, permet de faire du machine learning sur Hadoop. Plusieurs fonctionnalités sont disponibles telles que le filtrage collaboratif, le clustering et la classification.

Apache Spark

Apache Spark est un moteur d’analyses unifiées ultra-rapide pour le big data et le machine learning. En d’autres termes Spark est une suite d’outils permettant d’effectuer différents traitements sur des données. La grande particularité de Spark est qu’il permet de traiter les données plus rapidement (vraiment plus rapidement) et est facile à utiliser. Spark propose une grande variété de fonctionnalités allant de l’accès aux données via des requêtes SQL (Spark SQL) au Machine learning grâce à MLlib.

Apache Spark Ecosystem
Spark Ecosystem – source : https://databricks.com/spark/about

Apache HBase – Le NoSQL sur Hadoop

Apache HBase comme « Hadoop Base » est une base de données non relationnelle sur Hadoop inspiré de Big Table de Google. Le point fort de cette base est sa capacité  à stocker de très grandes tables, des milliards de lignes, des millions de colonnes et surtout le fait de pouvoir accéder en temps réel aux données Hadoop.

Comme présenté plus haut l’écosystème Hadoop est composé d’un grand nombre d’outils (bien plus que ceux présentés dans cet article) qui permettent le stockage, l’accès et le traitement de gros volume de données.

Vous pouvez laisser un commentaire si vous avez des questions !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.