Vous êtes sur la page 1sur 43

BIG DATA

Chapitre 1 : Hadoop et MapReduce


Dr. Najar Yousra
Email : yousra.najar@isi.utm.tn
Plan du chapitre
 Introduction

 Hadoop (HDFS)

 Map reduce (Bash processing)

 Exemple d’application

 Hadoop 1.0 vs Hadoop 2.0 (Architecture)


BIG DATA dans notre vie quotidienne

Diviser le travail sur plusieurs chefs cuisiniers : spécialisés dans la


préparation des sauces / des viandes :

Faire du Map mappers : diviser une tâche en des sous tâches traitées
d’une manière distribuée
Chaque préparateur à besoin de son système de stockage  Système
distribué de stockage : hadoop hdfs

Besoin d’un cuisinier pour assembler les sous tâches et pour assembler
les composants : Reduce. Prendre les résultats en vue de fournir la
commande
Distribution de données et traitements
 Le traitement d’aussi grandes quantités de données
des méthodes particulières. Un SGBD classique est
dans l’incapacité de traiter autant d’informations.
1. Répartir les données sur plusieurs machines ( des millions
d’ordinateurs) dans des Data Centers :
- Systèmes de fichiers spécial permettant de ne voir qu’un
seul espace pouvant contenir des fichiers gigantesques
ou très nombreux (HDFS)
- Bases de données spécifiques (Hbase, Cassandra…)

2. Traitements de type « map-reduce »


- Algorithmes faciles à écrire
- Exécutions faciles à paralléliser
Hadoop

Hadoop est un système de gestion de données et de traitements


distribués. C est un framework libre développé en Java.
Il contient plusieurs composants dont :
- HDFS un système de fichiers qui répartit les données
sur de nombreuses machines (Storage)

- Mapreduce/YARN traitements de données (Bach


processisng) et gestion des ressources (Resource manager)

Il garantit la haute disponibilité, la tolérance au pannes, sécurité.. :


High performance computing.
Hadoop
Un framework qui permet de stocker et de traiter une très grande
quantité de données d’une manière distribuée.
Hadoop framework
Il fait du
traitements
Hadoop 1.0
distribués des
données (Bach
HDFS processing)
Map
Reduce Hadoop 2.0

HDFS

Others Map
:SPARK Reduce

YARN
Mapreduce : gère les
ressources/faire des
traitements (Bach processing) YARN : gère les ressources des
clusters : attribution/gestion
des nœuds
Hadoop écosystème Stream Processing
•Apache storm
•Apache Spark
•Apache Kafka streams
Apache zookeeper :

Bach Processing
• Mapreduce
• SPARK

Apache zookeeper
• Gère la coordination entre
les noeuds

NOSQL
• Hbase
• Cassandra

PIG
HIVE
……
Hadoop (Storage)
Nœuds
( machines)
Cluster

Rack

Cluster
Nœuds ( machines) : un Rack: un ensemble de machine
ensemble de ressources ayant le même routeur
matérielles : CPU, RAM, HDD,
……
Hadoop (Storage)
Il est composé en deux parties :
- HDFS : responsable du stockage distribués
- Mapreduce/Yarn : responsable du traitement de données

Principe :
- Diviser les fichiers
- Les sauvegarder dans des collections de machines
(nœuds) : Cluster
- Traiter les données dans leurs emplacements.
Nœuds
( machines)

Rack

Cluster
Hadoop
Hadoop
Hadoop File System (HDFS)
HDFS est un système de fichiers distribués. C’est-à-dire :
 Les fichiers et dossiers sont organisés en arbre (Comme
UNIX)
 Ces fichiers sont stockés sur un grand nombre de machines
de manière à rendre invisible la position exacte d’un fichier.

 Les fichiers sont copiés en plusieurs exemplaires pour la


fiabilité et permettre des accès simultanés multiples.

 HDFS permet de voir tous les dossiers et fichiers de ces


milliers de machines comme un seul arbre, contenant des Po de
données comme s’ils étaient sur le disque dur local.
Hadoop File System (HDFS)
Un cluster HDFS est constitué de machines jouant différents rôles
exclusifs entre eux :

 L’une des machines est le maître HDFS, appelé le namenode.


Cette machine contient tous les noms et blocs des fichiers, comme
un gros annuaire téléphonique.

Une autre machine est le secondary namenode, une sorte de


namenodede secours, qui enregistre des sauvegardes de l’annuaire
à intervalles réguliers.

Toutes les autres machines sont des datanodes. Elles stockent les
blocs du contenu des fichiers
Hadoop File System (HDFS)
 Comme avec de nombreux systèmes, chaque fichier HDFS
est découpé en blocs de taille fixe. Un bloc HDFS = 64 Mo.
Selon la taille d’un fichier, il lui faudra un certain nombre de
blocs. Sur HDFS, le dernier bloc d’un fichier fait la taille
restante.
 Les blocs d’un même fichier ne sont pas forcément tous sur
la même machine. Ils sont copiés chacun sur différentes
machines afin d’y accéder simultanément par plusieurs
processus. Par défaut, chaque bloc est copié sur 3 machines
différentes (c’est configurable).
 Cette réplication des blocs sur plusieurs machines permet
aussi de se prémunir contre les pannes. Chaque fichier se
trouve donc en plusieurs exemplaires et à différents endroits.
Hadoop File System (HDFS)

Les datanodes contiennent des blocs (A, B, C. . . ), le


namenode sait où sont les fichiers : quels blocs et sur quels
datanodes.
Hadoop File System (HDFS)
Exemple : Soit un fichier myfile.txt qui contient des données et sa
taille est de 207 Mo.
207 Mo 207 Mo
Blk_4
192 Mo
Blk_3 Duplication et
128 Mo enregistrement des
Division Blk_2 blocs dans le DVFS
64 Mo
0 Blk_1
0
Myfile.txt Myfile.txt
DN1:1,2
DN2:1,4
DN3:3,4 Blk_4
Myfile.txt : Blk_4
DN4:2,4 1,2,3,4 Blk_2 Blk_1
DN5:1,3 Blk_3
Blk_1
DN6:2,3 DN2
DN3
Name Node DN1
DN1:1,2
DN2:1,4 Blk_3 Blk_4
DN3:3,4 Blk_2
Blk_3 Blk_1
DN4:2,4
DN5:1,3 Blk_2 DN4
DN6:2,3
DN5

Secondary DN6
NN
Hadoop File System (HDFS)
Avec cette architecture, on peut avoir les problèmes suivants :
- Panne du réseau : Perte temporaire d’accès au fichier

- Panne du disque sur le Namenode : les données sur


l’emplacement des blocs sont perdues ( C’est pour la raison pour
laquelle le secondary namenode est conçu). Lorsque le secondary
namenode est également en panne, les données sont perdues à jamais

- Panne de disque sur le Datanode : les données seront


perdues ( c’est la raison pour laquelle les blocs sont dupliqués).
Hadoop File System (HDFS)
Vu de l’utilisateur, HDFS ressemble à un système de fichiers Unix : il y a une racine,
des répertoires et des fichiers. Les fichiers ont un propriétaire, un groupe et des
droits d’accès.

Sous la racine /, il y a :

 Des répertoires pour les services Hadoop : /tmp,/var

 /var/lib contient les librairies installées

 Un répertoire pour les fichiers personnels des utilisateurs :/home

 Un répertoire pour déposer des fichiers à partager avec tous les utilisateurs
:/share

Vous devrez distinguer les fichiers HDFS des fichiers « normaux »


Hadoop File System (HDFS)
La commande hdfs dfs ou bien hadoop fs et ses options
permettent de gérer les fichiers et dossiers (commande dans
le terminal):
◦hdfs dfs –help // hadoop fs -help
◦hdfs dfs -ls [noms...](pas d’option-l)
◦hdfs dfs -cat nomfichier
◦hdfs dfs -mv anciennf nouveaunf
◦hdfs dfs -cp anciennf nouveaunf
◦hdfs dfs -mkdir dossier

Il faut noter que les commandes mettent un certain temps à


réagir : ce sont des logiciels écris en Java avec chargement de
très nombreux jars. Et les machines ne sont pas trop rapides.
Hadoop (HDFS) : Fonctionnement
Les caracteristiques de HDFS:

• Il est distribué: les données sont réparties sur tout le cluster de


machines.

• Il est repliqué: si une des machines du cluster tombe en panne,


aucune donnee n'est perdue.
• Il est conscient du positionnement des serveurs sur les racks.
HDFS va repliquer les donnees sur des racks differents, pour
etre certain qu'une panne affectant un rack de serveurs entier
(par exemple un incident d'alimentation) ne provoque pas non
plus de perte de donnees, meme temporaire. Par ailleurs,
HDFS peut aussi optimiser les transferts de donnees pour
limiter la « distance » à parcourir pour la replication (et donc
les temps de transfert).
Hadoop (HDFS) : Fonctionnement
Par ailleurs, le système de gestion des taches de
Hadoop, qui distribue les fragments de données d'entrée
au cluster pour l'opération MAP ou encore les couples
(clef;valeur) pour l'opération REDUCE, est en
communication constante avec HDFS.
Il peut donc optimiser le positionnement des données a
traiter de telle sorte qu'une machine puisse accéder aux
données relatives a la tache qu'elle doit effectuer
localement, sans avoir besoin de les demander a une
autre machine.
Ainsi, si on a par exemple 6 fragments en entrée et 2
machines sur le cluster, Hadoop estimera que chacune
des 2 machines traitera probablement 3 fragments
chacune, et positionnera les fragments/distribuera les
taches de telle sortes que les machines y aient accés
directement, sans avoir a effectuer d’accés sur le réseau.
Hadoop (HDFS) : Opérations
Opération de lecture
Hadoop (HDFS) : Opérations
Opération de lecture

La lecture d’un fichier en HDFS est assez simple, et se résume sur figure suivante.
- Le code client commence par créer un objet local de la classe
DistributedFileSystem, qui agira comme un stub ou proxy avec le système de
fichier HDFS. Le code client s’adresse donc à cet objet local et demande à ouvrir
un fichier (étape 1, commande open).
- Le stub s’adresse alors au NameNode d’HDFS pour connaître l’emplacement des
réplicats de tous les blocs du fichier (étape 2a). Ensuite le stub crée un autre
objet local, de la classe FSDataInputStream (étape 2b), qui agira comme un
lecteur spécialisé dans la lecture du fichier visé, ayant connaissance des nœuds à
contacter.
- Le client fera alors des opérations read sur ce lecteur spécialisé (étape 3), qui ira
interroger un des noeuds stockant le premier bloc du fichier (étape 4). Une fois
le premier bloc lu, si les opérations de lecture continuent de la part du client, le
lecteur spécialisé ira interroger un nœud contenant le second bloc (étape 5) et
ainsi de suite.
- Finalement, le client demandera à fermer le fichier ouvert en lecture auprès du
lecteur spécialisé (étape 6, opération close). A noter que le lecteur spécialisé
vérifie l’intégrité des données lues (calculs de checksum) et signale toute
anomalie au stub, qui les retransmet au NameNode.
Hadoop (HDFS) : Opérations
Opération de lecture
Hadoop (HDFS) : Opérations
Opération de lecture
Hadoop dfs -get livre.txt livre.txt
Pour stocker le fichier livre.txt du HDFS dans le local

Hadoop dfs -cat /data_input/livre.txt


Hadoop dfs -tail /data_input/livre.txt
Hadoop dfs -head /data_input/livre.txt
Pour lire le fichier dans hdfs
Hadoop (HDFS) : Opérations
Opération d’écriture

Si on souhaite ecrire un fichier au sein de HDFS, on va utiliser la commande


principale de gestion de Hadoop: hadoop, avec I'option dfs.Mettons qu'on
souhaite stocker un fichier page_livre.txt sur HDFS.

Le programme va diviser le fichier en blocs de 64MB (ou autre, selon la


configuration) - supposons qu'on ait ici 2 blocs. Il va ensuite annoncer au
NameNode: « Je souhaite stocker ce fichier au sein de HDFS, sous le nom
page_livre.txt ».
Le NameNode va alors indiquer au programme qu'il doit stocker le bloc 1 sur le
DataNode numero 3, et le bloc 2 sur le DataNode numero 1.
Le client hadoop va alors contacter directement les DataNodes concernes et
leur demander de stocker les deux blocs en question.
Par ailleurs, les DataNodes s'occuperont - en informant le NameNode - de
repliquer les donnees entre eux pour eviter toute perte de donnees.
Hadoop (HDFS) : Opérations
Opération d’écriture
Hadoop (HDFS) : Opérations
Opération d’écriture
- Le client crée un objet local DistributedFileSystem servant de stub ou proxy
envers le système de fichier HDFS, comme c’était déjà le cas pour une opération
de lecture (voir la section précédente).
- Dès lors, le client peut demander au stub de créer un nouveau fichier HDFS
(étape 1, opération create sur la figure). Le stub s’adresse alors au NameNode
d’HDFS pour obtenir le droit de créer un tel fichier (étape 2a), et pouvoir créer
en local un objet FSDataOutputStream (étape 2b) qui jouera le rôle d’un
écrivain spécialisé dans l’écriture du fichier visé. Par la suite, le client s’adresse
localement à cet écrivain spécialisé pour lui demander d’écrire des données dans
ce fichier (étape 3, opération write).
- L’écrivain dialogue alors avec le NameNode d’HDFS pour savoir où créer un
premier bloc et ses réplicats (étape 4a), puis commence à écrire le premier
réplicat du premier bloc sur un nœud de données (étape 4b). Un mécanisme de
pipeline se met alors en place : le nœud du premier réplicat retransmet ses
données au nœud choisi pour héberger le deuxième réplicat (étape 4c), qui les
retransmet lui même au nœud choisi pour héberger le troisième réplicat (étape
4d), et le processus se poursuit si plus de 3 réplicats par bloc sont spécifiés.
Quand l’écriture sur le dernier réplicat est terminée, un message d’acknowledge
remonte vers le nœud du réplicat précédent (étape 5a), et ainsi de suite jusqu’à
atteindre le nœud du premier réplicat (étapes 5b).
Hadoop (HDFS) : Opérations
Opération d’écriture
- Ce nœud retourne alors un acknowledge à l’écrivain spécialisé (étape 5c), et si
tout s’est bien passé, l’écrivain enchaînera en traitant la demande suivante
d’écriture de données. Quand le premier bloc est plein, l’écrivain demande à
nouveau au NameNode d’HDFS un ensemble de nœuds où écrire un deuxième
bloc et ses réplicats (étape 6a), et le processus d’écriture pipelinée se reproduit
(étapes 6b à 6d, puis 7a à 7c).
- Une fois toutes les écritures de données terminées, le client demande à
l’écrivain de refermer le nouveau fichier (étape 8, opération close sur la figure).
Celui-ci en informe alors le stub (étape 9a), qui en informe à son tour le
NameNode d’HDFS (étape 9b), qui met à jour ses metadonnées avec un
nouveau fichier dans sa cartographieet ainsi de suite jusqu’à atteindre le nœud
du premier réplicat (étapes 5b).
Hadoop (HDFS) : Opérations
Opération d’écriture
Hadoop (HDFS) : Opérations
Opération d’écriture
Hadoop (HDFS) : Opérations
Opération d ecriture
Hadoop dfs -put livre.txt /data_input/livre.txt
Pour stocker le fichier livre.txt sur HDFS dans le repertoire
/data_input.
Hadoop (HDFS) : Opérations
Remarques :
- Vous ne pouvez pas éditer des fichiers, qui sont tous déjà dans
HDFS. Il ne supportera pas. HDFS fonctionne sur "Écris une fois, lis
plusieurs". Donc, si vous souhaitez modifier un fichier, apportez des
modifications à votre copie locale, puis déplacez-le vers HDFS. On
peut également ajouter à un fichier existant.

$ hadoop dfs -appendToFile <local_file> <hdfs_file>

- Vous ne pouvez pas vous déplacer dans le cluster avec la


commande cd, HDFS ne mémorise pas la position.
Hadoop (HDFS) : Opérations
Les mécanismes de lecture et d’écriture de fichiers HDFS présentées
sont très séquentiels, menés par un programme client qui écrit ou lit des
données dans le système HDFS les unes après les autres.

Cette démarche permet par exemple d’importer ou d’exporter des


données entre le système de fichier d’Hadoop et celui d’un simple PC,
mais elle n’est pas adaptée pour exploiter intensivement des données
déjà présentes dans des fichier HDFS.

Au contraire, une application Map-Reduce va déployer plusieurs


processus sur différents nœuds de données et accéder en parallèle à
divers blocs d’un même fichier HDFS (ou de plusieurs fichiers HDFS).
L’architecture d’une application Map-Reduce est conçue pour tirer un
maximum de performances d’un système de fichier distribué comme
HDFS.
Hadoop File System (HDFS)

Pour placer un fichier dans HDFS, deux commandes


équivalentes :

 hdfs dfs –copyFromLocal fichiersrc fichierdst


 hdfs dfs –put fichiersrc fichierdst

Pour extraire un fichier de HDFS, deux commandes


possibles :
 hdfs dfs -copyToLocal fichiersrc fichierdst
 hdfs dfs -get fichiersrc fichierdst
Hadoop File System (HDFS):
La plate forme Cloudera
Cloudera est une société Américaine qui
fournit des outils et une solution
complète autour du Big Data, du
traitement et de l’analyse de la donnée…

La Cloudera Data Plateform permet une


gestion unifiée, centralisée et hybride
des infrastructures Big Data pour toutes
les entreprises souhaitant traiter de la
donnée. Orientée aussi bien IT que
métiers, elle élargie pour ses clients les
capacités d’analyse de la donnée sur
tous les cas d’usage Data existant.

Concrètement Cloudera vous apporte


une étagère remplie d’outils de
traitement et d’analyse de
données interconnectés les uns aux
autres, pour répondre à vos besoins
projet.
Hadoop File System (HDFS)
La plate forme Cloudera

Le HDFS a une racine


Hadoop File System (HDFS)
La plate forme Cloudera

home est l espace


personnel des utilisateurs
Hadoop File System (HDFS)

Home est l espace


personnel des utilisateurs
Hadoop File System (HDFS)
Hadoop File System (HDFS)
Hadoop File System (HDFS)

Vous aimerez peut-être aussi