Actualités : analyse de données, Business Intelligence, Data Science, Big Data


Initiation à l'écosystème Hadoop


Rédigé par Juvénal CHOKOGOUE le 8 Janvier 2016

Hadoop est une plate-forme qui implémente le modèle de calcul MapReduce et fournit un système de fichier distribué redondant, fiable et optimisé pour la gestion des fichiers volumineux (le HDFS). En réalité, Hadoop est un ensemble de classes écrites en Java pour la programmation des tâches MapReduce et HDFS dont les implémentations sont disponibles en plusieurs autres langages de programmation. Ces classes permettent à l'analyste d'écrire des fonctions qui vont traiter les données sans avoir à savoir comment ces fonctions sont distribués et parallélisés dans le cluster.



Juvénal CHOKOGOUE, Consultant Business Analytics et Big Data
Juvénal CHOKOGOUE, Consultant Business Analytics et Big Data
Pour tirer le meilleur parti d'un cluster Hadoop (c'est-à-dire casiers d'ordinateurs interconnectés sur lesquels Hadoop a été installé), Apache a inclut dans Hadoop une série de logiciels et d'outils. Cet ensemble forme aujourd'hui ce qu'il est judicieux d'appeler l'écosystème Hadoop ou le FrameWork Hadoop. Pourquoi ?
Parce que sans ces outils, il reviendrait à chaque entreprise en fonction de son besoin, de développer elle-même des outils compatibles avec Hadoop afin de déployer ses solutions sur le Cluster; Ce qui serait un "daunting task" comme le disent les anglais. L'objectif de cet article est de vous présenter succinctement les outils qui constitue l'écosystème Hadoop, et leur fonction dans l'écosystème.

Actuellement, pas mal de développeurs sont en train de travailler sur l'écosystème Hadoop et offrent leurs travaux à la fondation Apache. L'écosystème Hadoop fournit une collection d'outils et de technologies spécialement conçus pour faciliter le développement, le déploiement et le support des solutions Big Data. La définition de cet écosystème est importante, car il facilite l'adoption d'Hadoop et permet aux entreprises de surmonter les défis du Big Data. La configuration de base de l'écosystème Hadoop contient les outils suivant : PIG, Hive, HBase, Zookeeper, Sqoop et précédemment Spark et Storm.

- PIG
Pig est un environnement d'exécution de flux interactifs de données sous Hadoop (à la façon d'un ETL). Pour faire simple, c'est l'ETL d'Hadoop (on reviendra sur la notion d'ETL). Pig fournit un langage de flux de données appelé Pig Latin qui permet d'exprimer une série d'opérations à appliquer à des données source pour obtenir des données qu'on va dire "cible". Les opérations que vous définissez en script Pig Latin constitue une séquence de flux de transformation de données. C'est pourquoi il est considéré comme l'ETL d'Hadoop. Pig peut être exécuté soit en local (c'est-à-dire sur un ordinateur), soit sur un cluster Hadoop.

Exemple de script Pig : Trouver la température maximale par année
1 records = LOAD 'data/samples.txt AS (year: chararray, temperature : int, quality: int);
2 filtered_records = FILTER records BY temperature !=9999 AND (quality ==0 OR quality == 4);
3 grouped_records = GROUP filtered_records BY year ;
4 Max_temp = FOREACH grouped_records GENERATE group, MAX (filtered_records.temperature)
5 DUMP max_temp ;

- Hive
Hive est un langage de requêtage basé sur le SQL pour la définition et l'écriture des tâches ('jobs' dans le jargon) MapReduce. Il fonctionne aussi bien en mode interactif qu'en mode Bacth. Il fournit à l'utilisateur familier du SQL (on reviendra sur le SQL) un langage de requêtage similaire appelée "HiveQL".
Avec Hive, vous pouvez à la fois interroger des fichiers structurés et écrire des jobs MapReduce en "SQL".

L'exemple précédent en HiveQL donne ceci :
1 CREATE TABLE records (year string, temperature INT, quality INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ;
2 LOAD DATA LOCAL 'data/sample.txt' OVERWRITE INTO TABLE records ;
3 SELECT year, MAX(temperature) FROM records WHERE temperature !=9999 AND (quality == 0 OR quality == 1) GROUP BY year ;

-HBase
Avant de parler de HBase, je vais rappeler que les SGBDR qui étaient jusque là utilisés pour la gestion des données ont montré très rapidement leurs limites face, d'une part à la forte volumétrie des données, et d'autre part à la diversité des types de données. En effet, les SGBDR sont conçus pour gérer uniquement des données structurées (table de données en ligne/colonnes), de plus l'augmentation du volume des données augmente le temps de latence des requêtes. Cette latence est préjudiciable dans le cadre de nombreux métiers nécessitant des réponses en temps quasi-réel. Autre facteur limitant des SGBDR, ils n'arrivent à assurer la distribution des données que sur 5 nœuds (ordinateurs) tout au plus (les SGBDR ne sont pas évolutifs).
Pour contourner ces limites, de nouveaux SGBD dit "NoSQL" ont vu le jour. Ceux-ci n'imposent pas de structure particulière aux données, sont capables de distribuer le stockage et la gestion des données sur plusieurs nœuds et sont évolutifs (c.-à-d. que la montée en charge se gère en augmentant le nombre de nœuds sur le cluster). HBase fait partie de cette catégorie de SGBD. Nous reviendrons dans un autre article sur ces Systèmes de Gestion de Données d'un nouveau genre.

HBase est un SGBD distribué, orienté-colonne (on y reviendra dans un autre article) qui utilise HDFS comme son système de fichier pour le stockage (persistence dans le jargon technique) des données et supporte le requêtage et le MapReduce. Il a été conçu à partir du SGBD de Google "Big Table" et est capable de stocker de très grosses volumétries de données (milliards de lignes/colonnes). Il ne fonctionne que sur des clusters Hadoop et fournit un accès en temps réel aussi bien pour la lecture que l'écriture des données. Il dépend de Zookeeper, un service de coordination pour le développement d'application distribuées.

- Sqoop
Sqoop ou SQL-to-Hadoop est un outil de l'écosystème qui permet de transférer les données d'une base de données relationnelle au HDFS d'Hadoop et vice-versa. Voyez Sqoop et PIG comme les ETL d'un environnement Hadoop

- Zookeeper
Sans entrer dans les détails complexes de la coordination des données entre les nœuds d'un cluster Hadoop, zookeeper fournit un service de configuration distribué, un service de distribution et un registre de nommage pour les applications distribuées. Zookeeper est le moyen utilisé par Hadoop pour coordonner les jobs distribués.

- Spark
Avant d'expliquer ce que c'est que Spark, rappelons que pour qu'un algorithme analytique puisse s'exécuter sur plusieurs nœuds d'un cluster Hadoop, il faut qu'il soit parallélisable. Ainsi, on dit d'un algorithme qu'il est "scalable" s'il est parallélisable (et peut donc profiter de la scalabilité d'un cluster). C'est l'objectif de Spark.
Spark fournit une bibliothèque de classes d'implémentation Java d'algorithmes analytiques pour l'exécution dans un cluster Hadoop. Ces classes peuvent être exploitées à l'aide d'un langage de programmation comme Scala, Java, Pyhton ou tout autre langage compatible avec Spark.
En réalité, bien que présent dans l'écosystème Hadoop, Spark est un framework indépendant d'Hadoop. Il possède et utilise son propre modèle de calcul indépendamment du MapReduce (ceci est possible grâce au YARN). Comparativement au MapReduce qui fonctionne en mode batch, le modèle de calcul de Spark fonctionne en mode interactif, c'est à dire, monte les données en mémoire avant de les traiter et est de ce fait très adapté au traitement analytique. Spark remplace le modèle de calcul Mahoot, qui lui, utilisait le MapReduce pour l'exécution et la parallélisation des algorithmes analytiques (et de ce fait fonctionnait en mode batch).

- Storm
Pour comprendre STORM, il faut comprendre la notion d'architectures lambda (λ). Certaines problématiques métier comme la lutte contre la fraude, l'analyse des données de réseaux sociaux, la géolocalisation, exigent des temps de réponse très réduits, quasiment de l'ordre de moins d'une seconde : c'est la problématique du temps réel. Pour résoudre cette problématique dans un contexte Big Data, des architectures dites λ ont été mises sur pieds. Ces architectures ajoutent au MapReduce deux couches de traitement supplémentaires pour la réduction des temps de latence.
Storm est une implémentation logicielle de l'architecture λ. Il permet de développer sous Hadoop des applications qui traitent les données en temps réel (ou presque).




Nouveau commentaire :
Twitter

Vous pouvez commenter ou apporter un complément d’information à tous les articles de ce site. Les commentaires sont libres et ouverts à tous. Néanmoins, nous nous réservons le droit de supprimer, sans explication ni préavis, tout commentaire qui ne serait pas conforme à nos règles internes de fonctionnement, c'est-à-dire tout commentaire diffamatoire ou sans rapport avec le sujet de l’article. Par ailleurs, les commentaires anonymes sont systématiquement supprimés s’ils sont trop négatifs ou trop positifs. Ayez des opinions, partagez les avec les autres, mais assumez les ! Merci d’avance. Merci de noter également que les commentaires ne sont pas automatiquement envoyés aux rédacteurs de chaque article. Si vous souhaitez poser une question au rédacteur d'un article, contactez-le directement, n'utilisez pas les commentaires.


Twitter
Rss
LinkedIn
Facebook
Apple Podcast
App Store
Google Play Store