La base du Big Data : Hadoop (HDFS) et MapReduce

Share on LinkedIn9Tweet about this on TwitterShare on Facebook0Email this to someone

Texte de Romain Thomas, Conseiller principal, Analytique des données chez Larochelle Groupe Conseil.

Quand l’éléphant dépasse la souris… cette série de 3 courts articles explique les origines et les raisons des mégas données.

 

Hadoop est sans doute le terme technique le plus courant que vous rencontrerez dans votre exploration du Big Data, comme s’ils étaient synonymes. Pourtant le Big Data ne se limite pas à cette technologie, mais elle est la plus répandue. Intéressons-nous aux entrailles de cet animal : au-delà du petit éléphant jaune, sur quoi repose Hadoop ?

 

Avant d’entrer dans la technique, rappelons que le terme Big Data, devenu fortement marketing, est la réalisation de trois objectifs de l’intelligence d’affaires : stocker, transformer et analyser les données. Le Big Data n’est donc pas qu’une affaire de Volume, mais apporte bien des solutions Véloces pour traiter des données Variées (ces fameux 3 V).

 

Le profil des données Big Data

 

Il est intéressant, avant de parler des fondements d’Hadoop, d’ouvrir une petite parenthèse sur les caractéristiques des données utilisées dans le Big Data, en quoi diffèrent-elles ou complètent-elles celles de l’intelligence d’affaires dite « traditionnelle ».

Les types des données

 

Face aux RDBMS classiques, les outils Big Data présentent l’avantage de pouvoir traiter différents types de données :

  • Structurées - elles répondent aux contraintes d’un schéma ;
  • Semi-structurées - par exemple json, xml ;
  • Non structurées - des fichiers binaires comme des images jpeg, des fichiers audio, PDF.

 

Dans le BI classique, nous parlons de schema-on-write – des données sont stockées de manière structurée et intelligible, alors que pour le Big Data nous parlons de schema-on-read – les données sont stockées « telles quelles » et on leur applique une structure que lors de leur lecture.

 

Le lien de la donnée au temps

 

Dans le Big Data, une donnée est immuable et valide pour un certain temps. Il est donc très important de garder le lien au temps pour chaque donnée, chaque enregistrement. En effet, une donnée peut changer dans le temps, mais sa valeur précédente reste toujours valable au moment dans le temps où elle a été valide.

 

Exemple : j’aime le café au lait de janvier à février 2017. J’aime la café glacé à partir de mars 2017. Si je suis en avril, il reste toujours vrai que j’aimais le café au lait en février.

 

Les genres de données

 

Le Big Data peut stocker n’importe quel genre de données. Typiquement, six genres reviennent régulièrement dans les cas d’usages :

  • Les sentiments : les tweets sont l’exemple classique de données massives reflétant des sentiments à un instant T ;
  • Les ClickStream : il s’agit des données journal (ou logs) des sites web, permettant d’analyser leur trafic ;
  • Les données de capteur/machine : il s’agit de données de mesure provenant de capteurs ou de machine de tout type (médical, commercial, etc.), généralement sous forme de flux continu ;
  • Géographique : les applications, notamment mobiles, géolocalisées sont également génératrices de flux de données importants permettant d’analyser les données en fonction du temps et de leur situation dans l’espace ;
  • Les journaux de serveur : application typique de surveillance des systèmes, le Big Data permet d’analyser finement la sécurité et la fiabilité des systèmes ;
  • Les textes : il s’agit de texte en tout genre (articles, blogues, littérature) permettant par exemple de déterminer des modèles et théories.

HDFS

 

HDFS est la fondation d’Hadoop puisqu’il est responsable du stockage. C’est un système de fichier distribué dont la gestion est facilitée par le framework qu’il intègre. Ce dernier par exemple intègre des commandes familières aux utilisateurs Linux, telles que ls, mkdir, rm ou cp. La seule différence est que ces commandes doivent être précédées de hdfs dfs.

 

Exemple d’une commande : hdfs dfs –ls /data/financial/

 

HDFS est un système de fichier distribué : premièrement, les données sont stockées sous forme de fichiers. Deuxièmement, les données ou fichiers sont découpés en blocs, répliqués sur les différents serveurs composant la grappe (cluster). Ces caractéristiques permettent donc de paralléliser les opérations sur les données, d’être résistant aux pannes (grâce à la réplication) et d’être facilement évolutif. C’est l’avantage de HDFS sur un RDBMS classique.

 

HDFS est constitué de deux types de composants :

  • Le NameNode : c’est le composant « maître » de HDFS, qui contrôle la répartition des données et leur localisation ;
  • Le/les DataNode(s) : responsable du stockage des données sur sa propre machine et de la réplication sur les autres DataNode(s).

MapReduce

 

HDFS permet de stocker efficacement les données volumineuses, de les lire et les écrire avec robustesse et vélocité. Mais il n’en fait rien. MapReduce est un framework permettant d’écrire des applications traitant de gros volumes de données et parallélisant les traitements sur HDFS.

 

Le concept du MapReduce est de décomposer le traitement des données en deux phases :

  • La phase Map : les données sont extraites par les mappers, transformées puis préparées pour les reducers.
  • La phase Reduce : les données sont collectées des mappers puis traitées et analysées.

 

L’exemple typique d’un job MapReduce est une application de dénombrement de mots dans un texte. Considérons la phrase « Lorsque tu ne sais pas où tu vas, regarde d’où tu viens. », stockée dans un fichier d’un cluster Hadoop à 2 nœuds.

 

blogue Romain

 

Prenons comme cas le dénombrement du mot « tu ». Il sera composé de deux mappers et d’un reducer: le premier mapper liera un bloc « Lorsque tu ne sais pas où tu »et enverra (tu, 2) au reducer ; le second mapper liera un autre bloc « vas, regarde d’où tu viens. » et enverra (tu, 1) au reducer. Enfin, le reducer effectuera la somme et retournera le résultat final (tu, 3), soit le nombre de « tu » dans la phrase initiale.

 

Dans cet exemple, les deux mappers sont exécutés en même temps et permettent d’exploiter le contenu d’un texte en parallèle sur deux serveurs indépendants. Ensuite, le reducer a pour rôle de synthétiser / agréger les résultats pour le livrer au HDFS.

 

Cette capacité de paralléliser les traitements sur des gros volumes de données est un des avantages majeurs du MapReduce.

Aller plus loin

 

Tandis que HDFS et MapReduce composaient le cœur même de Hadoop 1.0, la version 2.0 a introduit deux nouvelles technologies majeures :

  • YARN (Yet Another Resource Manager) sert de système d’exploitation distribué par-dessus HDFS,
  • Tez, qui est une évolution de MapReduce, et comble nombre de ses faiblesses, tel le stockage des données intermédiaires en mémoire plutôt que sur HDFS.

 

Lire les 2 autres articles :

Big Data : par où commencer ?

Pourquoi du Big Data?

 

 

Ressources :

YARN

http://www.silicon.fr/big-data-hadoop-2-yarn-mapreduce-90249.html

http://www.lemagit.fr/definition/Apache-Hadoop-YARN-Yet-Another-Resource-Negotiator

 

Tez

http://www.ladonneeintelligente.com/2016/11/apache-tez.html

https://www.infoq.com/articles/apache-tez-saha-murthy