Vous êtes sur la page 1sur 30

COLLÈGE DE BOIS-DE-BOULOGNE

INTRODUCTION A HADOOP
AHCENE BENDJOUDI, PHD
AHCENE.BENDJOUDI@BDEB.QC.CA
BIG DATA – TOUT LE MONDE EST CONCERNÉ

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


LES V DU BIG DATA

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


CHALLENGES – STOCKAGE
 Le problème : Ce n'est plus l’acquisition des données mais plutôt la gestion de
l'énorme quantité de données (traiter, stocker et réutiliser).
 Comment stocker ces informations : aucun disque dur seul n'est capable de stocker
plusieurs milliers de téraoctets de données
 Comment organiser et rechercher dans ces informations : une machine seule n'a pas la
puissance nécessaire pour effectuer des recherches suffisamment rapides sur les données

 Les entreprises possèdent de grandes masses de


données; d'informations très diverses fournies
par des milliers voir millions d’utilisateurs. Elles
ne se posent plus la question de comment
acquérir les données (les utilisateurs les
fournissent), mais plutôt de comment stocker,
organiser et retrouver des informations dans
ces données.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


CHALLENGES – CALCUL

 Loi de Moore : Le nombre de transistors sur un circuit double


chaque deux ans
 Processeurs mono-Coeur ne peuvent plus répondre au besoin de
calcul actuel
  Faire collaborer plusieurs machines pour une même tâche
 Calcul distribué

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


CHALLENGES - CALCUL DISTRIBUÉ

 Utiliser plusieurs machines en partageant leurs disques


durs
 Les machines forment un groupe de stockage bien plus
grand
 Et en partageant leur processeurs (et/ou leur cartes
graphiques)
 Les machines forment un groupe de calcul bien plus
performant
 Cluster : Ensemble d'ordinateurs connectés entre eux par
un réseau et capables de s'organiser pour se répartir la
charge (de calcul ou de stockage) comme si elles n'en
formaient qu'un. Chaque ordinateur de ce cluster est
appelé un nœud.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


CHALLENGES – SYSTEMES DISTRIBUÉS

 Complexité de la programmation distribuée


 Gestion des données (Quelle données sur quel unité de stockage)
 Gestion du calcul (Quel portion de calcul sur quelle machine)
 Systèmes distribués
 Nœuds : Data Nodes ou Compute Nodes (un à la fois)
 Pour faire un calcul, les données sont copiées du Data Node au Compute Node
 Adéquat pour des masses de données (Bases de données classiques, datawarehouse)
mais pas des grandes masses de données (Big Data)
 Ne peut pas répondre aux besoins des systèmes actuels

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


SYSTEMES DISTRIBUÉS: CHALLENGES

 L’exécution d'un traitement informatique sur une multitude de machines


différentes (un cluster de machines) de manière transparente
 Extensibilité :permettent facilement une expansion si nécessaire
 Hétérogénéité : les composantes peuvent être écrits en différents langages
sur différentes machines. Par exemple, les éléments d’un serveur peuvent
être programmés en C++ et s'exécuter sous Unix, alors que le client peut
être en Java et s'exécuter sous Windows
 Accès aux ressources et partage
 Tolérance aux pannes : répliquer facilement les composantes
 Transparence : le cluster dans son ensemble doit être utilisable comme une
seule et même machine « traditionnelle.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


- LA SOLUTION

 Hadoop apporte un contexte, des outils et des conventions afin de rapidement


pouvoir mettre en place un tel cluster, y stocker des données et y exécuter
des programmes de manière distribuée.
 Scalable
 L’augmentation des ressources doit augmenter la capacité de calcul
 Tolérant aux pannes
 Une panne ne doit pas causer une perte de données ni l’arrêt total du système mais
uniquement une dégradation des performances de l’application
 Si un composant tombe en panne, on doit pouvoir le récupérer sans relancer le
système tout entier
 Implémentation « open source »
 Développé en Java
 L'écriture d'une application Hadoop en Java, plus de contrôle et probablement de
meilleures performances. Mais peut aussi être utilisé dans d'autres langages.
© AHCENE BENDJOUDI & DOMINIQUE TESSIER
HADOOP
 Un système de traitement et de gestion de grandes masses de données
distribuées
 Données distribués sur des systèmes en cluster
 Traitement parallèle des données
 Chaque machine du cluster est indépendante des autres et autonome
 Applications scalables (1000ers de machines)
 Hadoop est basé sur un modèle de programmation appelé MapReduce
 Le framework Hadoop est composé de deux
composantes principales
 Distributed file system (HDFS)
 Execution engine (MapReduce)

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


UN PEU D’HISTOIRE
 2013: Apache Hadoop release 2.2.0 (YARN)
 2013:Yahoo runs Hadoop on 42,000 nodes, computing about 500,000
MapReduce jobs per day
 2012: Le plus grand cluster Hadoop est lancé chez Facebook avec plus de
100TB sauvegardés sur le systeme HDFS
 2011: Apache lance la version Hadoop 1.0.0
 2008: pour la premiere fois un programme Java gagne une competition de tri
du benchmark TeraByte en utilisant Hadoop
 2006:Yahoo a donné le projet a Aache Software Foundation
 2006: Hadoop a été expérimenté sur 5-20 noeuds chez Yahoo
 2005: Doug Cutting et Mike Cafarella (Yahoo) développent Hadoop
(Nutch)
 2004: Dean/Ghemawat de Google publient un article sur MapReduce
 2003: Sanjay Ghemawat et al, publient The Google File System GFS  HDFS
© AHCENE BENDJOUDI & DOMINIQUE TESSIER
HADOOP – ECOSYSTEME

 Sqoop, pour l’intégration RDBMS


 Flume, pour l’ingestion (logs, données
non structurées ou semi-structurées)
 Hive, pour le traitement similaire à
"SQL"
 Pig, une autre approche de
programmation haut niveau (batch)
 Mahout, une librairie Java pour machine
learning sur Hadoop

 HBase, un système de BD "NoSQL"


 Oozie, un workflow manager pour
Hadoop
 ...

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP – COMPOSANTS
Hadoop
Common
• Librairies utiles

HDFS • Hadoop Distributed File System

Hadoop YARN • Yet Another Resource Negotiator

Hadoop • Un modele de Programmation pour le calcul


MapReduce parallele sur les grande masses de données

HADOOP 3.0

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP 1.X

Hadoop 1.x

Stockage Traitement
HDFS MapReduce
Master
NameNode JobTracker

DataNode DataNode
Slaves
TaskTracker TaskTracker

Slave 1 Slave n

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP 1.X
 NameNode:
 Master du système
 Maintient et gère les blocs qui sont présents sur les DataNodes

 DataNodes:
 Slaves déployés sur chaque machine et qui fournissent le stockage
 Responsable pour servir les demandes de read et write en provenance des clients

 JobTracker
 Gestionnaire des TaskTrackers qui sont sur les datanodes

 TaskTracker
 Disponible au niveau de chaque datanode et s'occupe du suivi de la tache d'exécution
dédiée au datanode
 Envoi en continu un feedback au JobTracker

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP 2.X

Hadoop 2.x

Stockage Traitement
HDFS YARN
Master

NameNode Resource Manager

DataNode DataNode
Slaves
Node Manager Node Manager

Slave 1 Slave n

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP 2.X
 NameNode:
 Master du système
 Maintient et gère les blocs qui sont présents sur les DataNodes

 DataNodes:
 Slaves déployés sur chaque machine et qui fournissent le stockage
 Responsable pour servir les demandes de read et write en provenance des clients

 Resource Manager
 Gestionnaire de ressources au niveau du Cluster
 Long Life, High Quality Hardware

 Node Manager
 Un node manager par datanode
 Effectue le monitoring des ressources sur le datanode

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HADOOP 2.X ARCHITECTURE COMPLETE

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HDFS (HADOOP DISTRIBUTED FILE SYSTEM)

 HDFS est résponsable du stockage des données sur le cluster Hadoop


 HDFS (Hadoop Distributed File System) reprend de nombreux concepts
proposés par des systèmes de fichiers classiques comme ext2 pour Linux
ou FAT pour Windows.
 Notion de blocs (la plus petite unité que l'unité de stockage peut gérer)
 Les métadonnées permettent de retrouver les blocs à partir d'un nom de fichier,
les droits ou encore l'arborescence des répertoires.
 HDFS est écrit en Java sur Google’s GFS

HDFS
Système

Infrastructure matérielle

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HDFS

 N'est pas solidaire du noyau du système d'exploitation : Assure une portabilité


et peut être déployé sur différents systèmes d'exploitation.
 C’est un système distribué. Chaque nœud d'un cluster correspond à un sous-
ensemble du volume global de données du cluster. Pour augmenter ce volume
global, il suffira d'ajouter de nouveaux nœuds.
 Ce système de fichiers est distribué sur des centaines voire des milliers de
serveurs.
 Utilise des tailles de blocs largement supérieures à ceux des systèmes classiques.
 Par défaut, la taille est fixée à 64 Mo. Il est toutefois possible de monter à 128
Mo à 1 Go (systèmes classiques, généralement de 4 Ko),
 Avantage : Réduire le temps d'accès à un bloc.
 Note : si la taille du fichier est inférieure à la taille d'un bloc, le fichier n'occupera
pas la taille totale de ce bloc.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


NameNode (Master)
 Gère l'état du système de fichiers : Enregistre les informations du fichier système
HDFS dans fsimage
 Maintient l'arborescence du système de fichiers et les métadonnées de
l'ensemble des fichiers et répertoires du système Hadoop.
 Connaissance des Datanodes dans lesquels les blocs sont stockés.
 Pour récupérer un fichier, c'est au niveau du Namenode que l'information
« quels sont les Datanodes qui contiennent les blocs du fichier désiré ? » est
extraite.
 Tout est chargé en mémoire
 Efficace pour de gros fichiers
 Problématique si énormément de petits fichiers à gérer.

Chaque fichier, répertoire et bloc dans HDFS occupe 150 octets dans la ménoire. Si on a 10
millions de fichiers à gérer, le NameNode devra disposer d'un minimum de 1,5 Go de mémoire.
C'est donc un point important à prendre en compte lors du dimensionnement d’un cluster.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


DataNode (Slave/Worker)

 Les Datanodes sont sous les ordres du Namenode.


 Ils sont sollicités par les Namenodes lors des opérations de lecture et
d'écriture.
 En lecture, les DataNodes vont transmettre les blocs correspondant au fichier
demandé (Chaque DataNode renvoie les blocs qui existent à son niveau)
 En écriture, les DataNodes vont retourner l'emplacement des blocs fraîchement
créés.
 Les Datanodes sont également sollicités lors de l'initialisation du NameNode
 et aussi de manière périodique, afin de retourner la liste des blocs stockés

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


SECONDARY NameNode

 Le Namenode est un point unique de défaillance (Single Point of Failure en


anglais). Si ce service est arrêté, il devient impossible d’extraire les blocs d'un
fichier donné.
 Un Namenode secondaire appelé Secondary Namenode a été mis en place
dans l'architecture Hadoop.
 Le Secondary Namenode vérifie périodiquement l'état du Namenode principal et
copie les métadonnées via les fichiers edits_xxx et fsimage_xxx.
 N’EST pas un a backup du NameNode
 Il permet un redémarage saint au NameNode en cas de panne.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HDFS – STOCKAGE DES FICHIERS
 Les fichiers de données sont Fichier à sauvegarder
divisés en blocs puis distribués
sur l’ensemble des noeuds du 1 2 3 4 5
cluster
 Chaque bloc est répliqué plsieurs
fois sur différents noeuds pour la
tolerance aux pannes.
 Par défaut, chque fichier est
répliqué sur 3 noeuds.
 Le NameNode garde la trace des
blocs qui constituent un fichier et
ou sont ils stockés
41 21 31 11 51 42 12 32 52 13 43 22 53 23 33

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


HDFS – REPLICATION DES DONNÉES

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


MapReduce

 MapReduce
 MapReduce est un modèle de programmation parallèle sur une
infrastructure de calcul distribuée
 Framework
 Implémentation Open-Source Java dans Hadoop Traitement distribué
de données en deux fonctions (Map et Reduce)
 Fonctionnement
 Map : Décompose le problème initial en sous-problèmes de taille
réduites. Les sous-problèmes sont traités d’une manière distribuée
sur l’ensemble des nœuds slaves.
 Reduce : Aggrège les résultats obtenus par l’opération Map et
construit la solution finale
© AHCENE BENDJOUDI & DOMINIQUE TESSIER
MapReduce – JOB TRACKER ET TASK TRACKER

 JobTracker
 Determines the execution plan for the job
 Assigns individual tasks
 Splits up data into smaller tasks(“Map”) and sends it
to the TaskTracker process in each node
 TaskTracker
 Keeps track of the performance of an individual
mapper or reducer
 reports back to the JobTracker node and reports on
job progress, sends data (“Reduce”) or requests
new jobs

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


YARN – YET ANOTHER RESOURCE NEGOCIATOR

 Est un mécanisme qui permet de gérer des tâches (jobs) sur un cluster
 Permet aux utilisateurs de lancer des jobs MapReduce sur des données
présentes dans HDFS, de suivre (monitor) leur avancement, récupérer les
messages (logs) affichés par les programmes.
 Peut déplacer un processus d’une machine à l’autre en cas de défaillance ou
d’avancement jugé trop lent.
 Est transparent pour l’utilisateur. On lance l’exécution d’un programme
MapReduce et YARN fait en sorte qu’il soit exécuté le plus rapidement possible

© AHCENE BENDJOUDI & DOMINIQUE TESSIER


CONFIGURER UN CLUSTER HADOOP

Pour installer un cluster Hadoop, des configurations doivent être renseignées


dans un ensembles de fichiers de configuration

Fichier Description

hadoop-env.sh Contient les variables d’environnement executées par Hadoop.


core-site.xml Configurations du site principal Hadoop Core (HDFS and MapReduce)
hdfs-site.xml Configurations du site HDFS. NameNode, Secondary NameNode et les
DataNodes.

mapred-site.xml Configurations de MapReduce


yarn-site.xml Configurations de Yarn (ResourceManager, NodeManager)
Contient la liste des machines workers. Chacune va lancer un DataNode
slaves et un NodeManager.

© AHCENE BENDJOUDI & DOMINIQUE TESSIER

Vous aimerez peut-être aussi