You are on page 1of 77

Big Data et Cloud

Computing

Présenté par :

Pr. Achraf BERRAJAA


Big Data et Cloud Computing
Pourquoi ce cours ?
Selon LinkedIn, les compétences les plus recherchées depuis plusieurs années sont :

1) Cloud and Distributed Computing (Hadoop, Big Data)

2) Statistical Analysis and Data Mining (R, Python, Data Analysis)

2
Big Data et Cloud Computing
Plan du cours 01
Introduction aux architectures
parallèles.

02 Hadoop et Map Reduce

03 Apache Spark

04 Apache Kafka

Introduction à la programmation
05 des processeurs graphique :
GPU (Graphical Processing Unit)
Introduction aux architectures
parallèles 01
Ch. I. Introduction aux architectures parallèles
1. Introduction :
Le traitement parallèle est une forme de traitement de l’information qui exploite les événements concurrents à
plusieurs niveaux:
• au niveau des programmes,
• au niveau des instructions,
• au niveau des opérations.

Plusieurs niveaux du parallélisme: :


 Parallélisme interne au processeur (pipeline ; unité de calcul ; cœurs)
 Parallélisme interne à une machine (processeurs ou accélérateurs)
 Des machines connectées par un réseau (calculateurs)
 Plusieurs centres de calcul connectés à l'échelle d'Internet (grille)

6
Ch. I. Introduction aux architectures parallèles

Définition 1 : Le calcul parallèle consiste à faire coopérer plusieurs unités de calcul (processeurs, cœurs, …) pour
résoudre le même problème (application). Il consiste à partitionner un gros problème en petits problèmes
indépendants.

Définition 2 : Le calcul parallèle est l’ensemble des techniques logicielles et matérielles permettant l’exécution
d’un programme en utilisant plusieurs unités de calcul plutôt qu’une seule.

Définition 3 : Une machine (un ordinateur) parallèle est une machine composée de plusieurs processeurs qui
peuvent communiquer entre eux.
Architecture mono processeur: Un seul processeur
Les instructions sont exécutées l’une après l’autre.
qui exécute séquentiellement les instructions d’un
programmes.

Architecture parallèle: Plusieurs processeurs Des séquences d’instructions indépendantes sont


exécutent en parallèle le même programme. exécutées simultanément.

7
Ch. I. Introduction aux architectures parallèles
2. Principes :
Le principe général consiste à:

• Décomposer le programme en tâches (séquences d’instructions).

• Rechercher les relations de dépendance entre ces tâches et identifier les tâches indépendantes.

• Affecter les tâches indépendantes à des processeurs différents afin d’être exécutées en parallèle
(simultanément).

• Gérer les communication: Gérer les synchronisations et les échanges d’informations entre processeurs.

8
Ch. I. Introduction aux architectures parallèles
2. Principes :
Il faut faire attention:

 à la distribution des données: communiquer le moins possible.

 à l’équilibrage de charge: il faut que la charge entre les différents processeurs soit équitable.

 à la distribution des tâches: équilibrer entre le calcul et les communications.

La programmation parallèle peut se faire

 au niveau système (parallélisation automatique de programmes, compilateurs)

 au niveau algorithmique.

9
Ch. I. Introduction aux architectures parallèles
3. Avantages et difficultés du parallélisme :
Avantages :
• Gain en rapidité: augmenter la puissance des calculs ce qui entraine la réduction des temps d’exécution.
Théoriquement, avec p processeur on calcule plus vite qu’avec un seul processeur. Dans le cas idéal, avec p
processeurs, le temps d’exécution est p fois plus rapide qu’avec un seul processeur.

• Gain en taille mémoire: Théoriquement , avec p processeurs, on dispose de p fois plus de mémoire, ce qui
permet de résoudre des problèmes de taille plus grande.

• Exploiter les nouvelles plateformes de calcul : exploiter le parallélisme disponibles dans les processeurs
modernes (multi-coeurs, multithreading, GPU).

10
Ch. I. Introduction aux architectures parallèles
3. Avantages et difficultés du parallélisme :
Difficultés :
• Gérer le partitionnement des tâches: Identifier la concurrence ( identifier les tâches indépendantes).

• Gérer l’ordonnancement des tâches: affectation des tâches aux processeurs.

• Gérer les communications/accès mémoire


 Gérer les dépendance des tâches: Gérer l'échange d'information.

11
Ch. I. Introduction aux architectures parallèles
3. Avantages et difficultés du parallélisme :
L’introduction du parallélisme a conduit à :
• tenir compte des nouveaux concepts par rapport au modèle séquentiel:
- La concurrence
- La communication
- La synchronisation

• réévaluer les algorithmes séquentiels pour les adapter aux environnements parallèles.
- Partitionnement.
- Ordonnancement.
- La distribution des données

• tenir compte des facteurs de performance


- Choisir la bonne granularité: Rapport (Ratio) communications/calcul
- Faire attention à l’équilibre de la charge (dynamique ou statique).
- L’extensibilité: si on augment la nombre de processeur est ce on gagne toujours en performances ?

12
Ch. I. Introduction aux architectures parallèles
4. Modèle de programmation :
• La programmation séquentielle est basée sur le modèle Von Neumann (modèle unique):
- un seul flot d’exécution
- une instruction exécutée à la fois
- un processeur
• Pour la programmation parallèle il n’y a pas de modèle unique.
- plusieurs flots d’exécution
- plusieurs instructions exécutées simultanément
- plusieurs processeurs
 Différents aspects à considérer
- au niveau architectures,
- au niveau algorithmique,
- au niveau programmation.

Ceci conduit à une programmation plus difficile que la programmation séquentielle.

13
Ch. I. Introduction aux architectures parallèles
4. Modèle de programmation :

 La façon de programmer n’est pas indépendante de la machine utilisée

• Programmation dans un langage permettant d’exprimer le parallélisme dans une application réelle

• La parallélisation automatique serait la solution idéale, mais c’est très difficile.

14
Ch. I. Introduction aux architectures parallèles
5. Les différents aspects du parallélisme :
Architecture : comment organiser et implanter de multiples processeurs
• Comment organiser et implémenter de multiples processeurs (Unité de contrôle unique / multiples)
• Comment organiser la mémoire: Partagée ou distribuée
• Topologie des réseaux d’interconnexion: gérer les surcoûts dus aux communications et à l’équilibrage de
charge.
Programmation (Logiciel) :
• Approche de la programmation parallèle: parallélisme de données, parallélismes de tâches
• Débogage des programmes parallèles  Correction d’un programme parallèle
• Implémentation
• Environnements et outils spécifiques

Algorithmes :
• Repenser les algorithmes séquentiels pour les adapter aux environnements parallèles afin gagner en
performance.

15
Ch. I. Introduction aux architectures parallèles
6. Modèle des architectures séquentielles :
Les architecture monoprocesseurs sont basées sur le modèle Von
Neumann (1946) qui a donné les grandes lignes pour construire une Mémoire
machine électronique qui est composée de plusieurs blocs
fonctionnels :
• Mémoire : contient le programme (instructions) et les
données. Unité de
UAL
• Unité de contrôle : s’occupe du séquençage des opérations. contrôle
Elle charge les instructions depuis la mémoire.
• Une UAL (Unité Arithmétique et Logique) : Chargée pour
exécuter les instructions.
• I/O : Une unité d’Entrée/Sortie qui sert pour les transferts de I/O
données

Dans une architecture monoprocesseurs les instructions sont


exécutées séquentiellement (une après l’autre).

16
Ch. I. Introduction aux architectures parallèles
7. Classification des architectures parallèles :
Une bonne connaissance du type d’architecture parallèles permet la recherche et la bonne conception de la
solution au problème à paralléliser. La façon de programmer n’est pas indépendante de la machine utilisée.

7.1 Classification de Flynn :


La classification des machines permet une simplification de leur fonctionnement. La plus populaire est la
classification de Flynn (Michael J. FLYNN (1966)) qui est basée sur:

• Le flux (flot) d’instructions : séquence d’instructions exécutées par la machine .

• Le flux (flot) de données : séquence des données appelées par le flux d’instructions.

17
Ch. I. Introduction aux architectures parallèles
7.1 Classification de Flynn :
Deux états possibles pour chacun des flux: « single » ou «multiple ». La combinaison des différentes possibilités
conduit aux modèles d’architectures suivants:
• SISD: Single Instruction, Single Data
=> machines séquentielles

• SIMD: Single Instruction, Multiple Data


=> processeurs vectoriels, GPU

• MISD: Multiple Instruction, Single Data


=> rare

• MIMD: Multiple Instruction, Multiple Data


=> multiprocesseurs, multicores

18
Ch. I. Introduction aux architectures parallèles

Architecture SISD (Single Instruction, Single Data):

Architecture séquentielle avec un seul flot d’instructions (SI) et un Mémoire


seul flot de données(SD). C’est le modèle d’architecture
séquentielle.

 Elle n’exploite aucun parallélisme. Unité de


UAL
contrôle

I/O

19
Ch. I. Introduction aux architectures parallèles
Architecture MISD (Multiple Instruction, Single Data) :
Un seul flot de données (SD) alimente plusieurs unités de traitement (MI). Une même donnée est traitée
par plusieurs processeurs en parallèle. Ce type d’architecture est peu implémenté.
Types :
• Modèle avec redondance: plusieurs unités de traitement.
Exemple d’utilisation : exécution de plusieurs algorithmes sur les mêmes données.
Exemple 2 : exécuter plusieurs algorithmes de cryptographie avec les même données.

• Le modèle vectoriel (macro-pipeline).


Exemple : Les unités de traitement sont découpés en étages. Un seul flot de données est traité
simultanément par les différents étages.

20
Ch. I. Introduction aux architectures parallèles
Architecture SIMD (Single Instruction, Multiple Data) :
Architecture composée de plusieurs unités de traitement supervisées par la
même unité de contrôle.
Unité de contrôle globale
• Toutes les unités de traitement exécutent la même instruction (SI) sur des
données différentes. Chaque unité de traitement exécute la même
instruction au même instant, ce qui conduit à un fonctionnement synchrone
des processeurs. P1 P2 Pn-1 Pn
• La mémoire partagée entre les différents processeurs peut être subdivisée en
plusieurs modules.
• Les processeurs accèdent à la mémoire via un réseau d’interconnexion. Réseau d’interconnexion
Ce type d’architecture est adapté aux traitements réguliers, comme le calcul
matriciel sur des matrices denses ou le traitement d’images. P1 P2 Pn-1 Pn
Deux sous-classes:
• machines SIMD vectorielles — processeurs de tableaux
• machines SIMD parallèles — tableaux de processeurs

21
Ch. I. Introduction aux architectures parallèles
Architecture MIMD (Multiple Instruction, Multiple Data):
Elle est composée de plusieurs processeurs qui fonctionnent de manière asynchrone:
- Chaque unité de traitement peut gérer un flot d’instructions différent.
- Chaque unité peut opérer sur un flot de données différent.
L’exécution peut être synchrone ou asynchrone.

 Mode d’exécution des machine MIMD


• MPMD: Multiple Programme Multiple Data
• SPMD: Single Programme Multiple Data, permet de simplifier la programmation des machine MIMD, on
exécute le même programme sur tous les processeurs.

 Deux variantes du modèle MIMD:


• MIMD à Mémoire partagée
• MIMD à Mémoire distribuée

 On peut combiner les deux pour avoir une architecture MIMD hybride à mémoire partagée-distribuée

22
Ch. I. Introduction aux architectures parallèles
7.2 Architecture MIMD à mémoire partagée :
La conception générale des architectures à mémoire partagées est basée sur le principe suivant:

• Tous les processeurs partagent un espace mémoire globale (une mémoire globale) visible par tous les
processeurs.

• Chaque processeur travaille indépendamment des autres. Les échanges entre processeurs s’effectuent via la
mémoire globale par les opérations lecture/écriture.

• Les modifications effectuées par un processeur en mémoire globale sont visibles par tous les autres.

• Les processeurs ont leur propre mémoire locale (cache) dans laquelle sera copiée une partie de la mémoire
globale.

• La cohérence entre ces mémoires locales devra être gérée par le hardware et parfois par l’utilisateur.

23
Ch. I. Introduction aux architectures parallèles
Modèle d’architecture MIMD à mémoire partagée :

Unité de contrôle globale


(UC)

UC1 UC2 UCn Unités de contrôles locales

P1 P2 Pn Unité traitements: processeurs

Réseau d’interconnexion

M1 M2 Mn Mémoire Globale

24
Ch. I. Introduction aux architectures parallèles
Modèle d’architecture MIMD à mémoire partagée:
Deux classes d’architectures parallèles à mémoire partagée basées sur le temps d’accès à la mémoire:

1. Les architectures UMA (Uniform Memory Access), appelées aussi SMP (Symmetric Multi Processor).

• Des processeurs identiques.

• Tous les processeurs ont le même temps d’accès à la mémoire.

• Gestion de la cohérence des caches CC-UMA (cache coherent UMA) : si un processeur met à jour un
emplacement mémoire partagé, la modification est visible par tous les autres processeurs.

25
Ch. I. Introduction aux architectures parallèles
Modèle d’architecture MIMD à mémoire partagée:
Deux classes d’architectures parallèles à mémoire partagée basées sur le temps d’accès à la mémoire:

2. Les architeures NUMA (Non Uniform Memory Access): signifiant accès mémoire non uniforme et architecture
mémoire non uniforme.

• Conçues pour pallier aux problèmes d’accès mémoire concurrents via un unique bus (Uniform Memory Access).

• En général, c’est un ensemble de plusieurs blocs SMP interconnectés par un lien physique. Un nœud SMP accède
directement à la mémoire d’un autre nœud SMP sans échange de message.

• Le temps d’accès à la mémoire globale n’est pas uniforme, il diffère suivant la zone accédée. Le temps d’accès via
le lien d’interconnexion des blocs SMP est plus lent.

• NUMA représente une position médiane entre le SMP et le clustering (diverses machines).

26
Ch. I. Introduction aux architectures parallèles
7.2 Architecture MIMD à mémoire partagée :

Avantages :
• Programmation simple. Espace d’adresse globale facilite le travail du programmeur.
• Le partage des données entre les tâches est rapide.

Inconvénients :
• Problèmes de conflits d’accès à la mémoire.
• Ne permet pas la scalabilité des accès mémoire: augmenter le nombre de processeurs accroît le trafic sur le
chemin d’accès à la mémoire partagée.
• Le programmeur doit gérer la synchronisation pour un accès correcte à la mémoire globale.
• Construction très couteuse avec un grand nombre de processeurs. Le plus souvent nb proc < 64.

2
Ch. I. Introduction aux architectures parallèles
Mémoire Distribuée :

La conception générale des architectures à mémoire distribuées est basée sur les principes suivants:
• Chaque processeur à sa propre mémoire locale, il n’y a pas de mémoire globale entre les différents processeurs.

• Les processeurs travaillent de manière indépendante. Toute modification d’une mémoire locale n’a pas d’effet
sur les mémoires des autres processeurs.

• Les processeurs sont reliés entre eux par un réseau d’interconnexion pour communiquer entre les mémoires des
différents processeurs. Ces liens sont divers avec des niveaux de performance très variables.

• Les communications entre les processeurs, pour les échanges d’information, s’effectuent via le réseau
d’interconnexion et c’est au programmeur qui doit définir explicitement la communication.

• Les coûts des communications dépendent de la position des processeurs dans le réseau.

28
Ch. I. Introduction aux architectures parallèles
Mémoire Distribuée :
Avantages :
• Scalabilité: on peut augmenter le nombre de processeur et la mémoire proportionnellement.
• Accès rapide à la mémoire locale sur chaque processeur, sans surcoût de gestion de cohérence de cache.
• Coût raisonnable, ex : PCs en réseau.
Inconvénients :
• Surcoût au niveau de développement: Le programmeur doit gérer toutes les communications entre
processeurs.
• Peut être difficile de faire coïncider une structure de données basée sur une mémoire globale, à cette
organisation physique de la mémoire.
• Performance: Pour obtenir des performances, on devra tenir compte du caractère distribué de la mémoire
en utilisant un modèle adapté => algorithme plus compliqué.
• Surcoûts dus aux temps des communications : Les algorithmes utilisés devront minimiser les
communications. En effet l’accès au données, localisées sur les mémoires locales des processeurs, est non-
uniforme. Il dépend de la position du processeur dans le réseau.

29
Ch. I. Introduction aux architectures parallèles
Modèle d’architecture MIMD à mémoire distribuée :

UC1 UC2 UCn Unités de contrôles locales

P1 P2 Pn Unité traitements: processeurs

M1 M2 Mn Mémoire privées

Réseau d’interconnexion

30
Ch. I. Introduction aux architectures parallèles
Architecture à mémoire hybride:

• Les ordinateurs les plus puissants au monde sont aujourd’hui un mixte de mémoire partagée et mémoire
distribuée.

• La brique de base (noeud) est un multiprocesseur à mémoire partagée.

• Ces briques sont interconnectées par un réseau (type ethernet, myrinet, Infiniband, ...)

31
Ch. I. Introduction aux architectures parallèles
8. Les composants d’un supercalculateur actuel:
• Processeur: qui donne la puissance des calculs

• Nœud: contenant plusieurs processeurs partageant une même mémoire.

• Mémoire: dont l’accès depuis le processeur n’est pas uniforme.

• Réseau: relient les noeuds entre eux de plusieurs types

• Accélérateur:
 processeur graphique (GPU) utilisé pour le calcul.

Voir le site www.top500.org pour la liste des machines les plus puissantes au monde.

32
Ch. I. Introduction aux architectures parallèles
9. Bref historique du parallélisme :
• Avant 1980 : accessible uniquement dans quelques pays pour les grosses entreprises (pétrole, automobile),
gouvernement, …
• 1980 – 1990 : premières machines parallèles « abordables »
- Ordinateurs parallèles très performants, mais très peu flexibles
- Problèmes : programmation, portabilité
• 1990 - 2000 : Machines basées sur le regroupement de PC répandus commercialement (Beowulf)
• 2000 - … : SMP, clusters, CC-NUMA, Grilles de calcul
• tendance actuelle :
- Processeurs multi-core.
- Processeurs graphique (GPU): Exploitation des performances des processeurs graphiques.
=> parallélisation obligatoire pour un gain de performance.
=> nécessité d’exploiter le parallélisme aux différents niveaux du hardware.
- Framework de traitement de données en clusters (Hadoop, spark, ….).

33
Ch. I. Introduction aux architectures parallèles

Programmation parallèle

Programmation des machines à mémoires Programmation des machines à mémoires


partagées (OpenMP, multithread). distribuées (MPI)

Framework de traitement de données en clusters

3
Hadoop et Map Reduce 02
Ch. II. Hadoop et Map Reduce

 Chaque jour, nous générons 3 trillions d’octets de données 90% des données dans le monde ont été
créées au cours des quatre dernières années.

 90% des données générées sont non structurées.

 Sources :
• Capteurs utilises pour collecter les informations climatiques.
• Messages sur les médias sociaux.
• Images numériques et vidéos publiées en ligne.
• Enregistrements transactionnels d’achat en ligne.

 Données appelées Big data ou Données massives ou Méga données.

36
Ch. II. Hadoop et Map Reduce
Mégadonnées ?
Les mégadonnées ou Big Data sont des collections d’informations qui auraient été considérées comme
gigantesques, impossible à stocker et à traiter, il y a une dizaine d’années.

Solutions : Distribution données et traitements


Le traitement d’aussi grandes quantités de données impose des méthodes particulières. Un SGBD
classique, même haut de gamme, est dans l’incapacité de traiter autant d’informations.

Répartir les données sur plusieurs machines (jusqu’à plusieurs millions d’ordinateurs) dans des Data Centers
• système de fichiers spécial permettant de ne voir qu’un seul espace pouvant contenir des fichiers
gigantesques et/ou très nombreux (HDFS),
• bases de données spécifiques (HBase, Cassandra, ElasticSearch).

Traitements du type « map-reduce » :


• algorithmes faciles à écrire,
• exécutions faciles à paralléliser.

37
Ch. II. Hadoop et Map Reduce

Un Data Center
Imaginez 5000 ordinateurs connectés
entre eux formant un cluster :

38
Ch. II. Hadoop et Map Reduce
Serveur « lame »

Chacun de ces PC lames (blade computer) peut ressembler à ceci (4 CPU multi-cœurs, 1 To de RAM,
24 To de disques rapides, => 5000 euros) :

Il semble que Google utilise des ordinateurs assez basiques, peu chers mais extrêmement nombreux.

39
Ch. II. Hadoop et Map Reduce

Machines connectées

 Toutes ces machines sont connectées entre elles afin de partager l’espace de stockage et la puissance de
calcul.

 Le Cloud est un exemple d’espace de stockage distribué : des fichiers sont stockés sur différentes
machines, généralement en double pour prévenir une panne.

 L’exécution des programmes est également distribuée : ils sont exécutés sur une ou plusieurs machines du
réseau.

 Tout ce module vise à enseigner la programmation d’applications sur un cluster, à l’aide des outils Hadoop

40
Ch. II. Hadoop et Map Reduce
1. Haddop ?
Hadoop est un système de gestion de données et de traitements distribués.
Hadoop est un framework Java open source utilisé pour le stockage et traitement des big data. Les
données sont stockées sur des serveurs standard peu coûteux configurés en clusters. Le système de
fichiers distribué Hadoop supporte des fonctionnalités de traitement concurrent et de tolérance aux
incidents.
 Le framework Hadoop consiste en deux grandes parties :
• HDFS : stockage des données --> un système de fichier qui répartit les données sur de nombreuses machines,
• YARN : traitement des données --> un mécanisme d’ordonnancement de programmes de type MapReduce ().
Principe :
• Diviser les données,
• Les sauvegarder sur une collection de machines, appelées cluster,
• Traiter les données directement là où elles sont stockées, plutôt que de les copier à partir d’un serveur
distribue.
• Il est possible d’ajouter des machines à votre cluster, au fur et à mesure que les données augmentent.

41
Ch. II. Hadoop et Map Reduce
Présentation du Framework :
La description de Hadoop comme possédant 2 couches (MapReduce et HDFS) est correcte pour la version 1 de Hadoop.

Depuis la version 2, Hadoop a adopté une troisième couche : YARN ("Yet Another Resource Negociator"), un outil de gestion
des ressources distribuée.

YARN provient d'un découpage de la première version de Hadoop


MapReduce en deux sous-couches :

• l'une dédiée à la gestion de la puissance de calcul et de la


répartition de la charge entre les machines d'un cluster (YARN)
• l'autre dédiée à l'implémentation de l'algorithme MapReduce
en utilisant cette première couche.

42
Ch. II. Hadoop et Map Reduce
Présentation du Framework :

En plus des briques de base Yarn Map


Reduce/HDFS, plusieurs outils existent pour
permettre :

• L’extraction et le stockage des données de /


sur HDFS.
• La simplification des opérations de
traitement sur ces données.
• La gestion et coordination de la plateforme.
• Le monitoring du cluster.

43
Ch. II. Hadoop et Map Reduce
Présentation du Framework :
Parmi ces outils, certaines se trouvent au dessus
de la couche Yern/MapReduce, tel que :

• Pig : langage de script


• Hive : langage proche de SQL (Hive QL),
• R Connectors : permet l’accès à HDFS
Map/Reduce à partir du langage R.
• Mahout : bibliothèque de machine learning et
mathematiques.
• Oozie : permet d’ordonnancer les jobs Map
Reduce en definissant des worklfows.

44
Ch. II. Hadoop et Map Reduce
Présentation du Framework :
D’autres outils sont directement au dessus de
HDFS, tel que :

• Hbase : Base de données NoSQL orientée


colonnes.

• Impala (pas représenté dans la figure) :


Permet le requêtage de données directement
à partir de HDFS (ou de Hbase) en utilisant
des requêtes Hive SQL.

45
Ch. II. Hadoop et Map Reduce
Présentation du Framework :

Certains outils permettent de connecter HDFS


aux sources externes, tel que :

Sqoop : Lecture et écriture des données à partir


de bases de données externes.

Flume : Collecte de logs et stockage dans HDFS.

46
Ch. II. Hadoop et Map Reduce
Présentation du Framework :

Enfin, d’autres outils permettent la gestion et


administration de Hadoop, tel que :

Ambari : outil pour le provisionnement, gestion


et monitoring des clusters.

Zookeper : fournit un service centralisé pour


maintenir les information de configuration de
nommage et de synchronisation distribuée.

47
Ch. II. Hadoop et Map Reduce
1.1 Hadoop File System (HDFS)
• HDFS (Hadoop Distributed File System) est un système de
fichiers distribué (ne pas une base de données).

• Ecrit en java.

• Permet de stocker de très gros volumes de données sur un grand


nombre de machines (nœuds) équipées de disques durs
banalises  Cluster.

• Quand un fichier mydata.txt est enregistré dans HDFS, il est


décomposé en grands blocs (par défauts 64Mo), chaque bloc
ayant un nom unique : blk_1, blk_2 …

48
Ch. II. Hadoop et Map Reduce
1.1 Hadoop File System (HDFS)

• Chaque bloc est enregistré dans un nœud différent du cluster.

• DataNode : Démon sur chaque nœud du cluster.

• NameNode :
• Démon s’exécutant sur une machine séparée.
• Contient des métadonnées
• Permet de retrouver les nœuds qui exécutent les blocs d’un
fichier.

49
Ch. II. Hadoop et Map Reduce
1.1 Hadoop File System (HDFS)

Quels sont les problèmes possibles ?

• Panne de réseau ?

• Panne de disque sur les DataNodes ?

• Panne de disque sur les NameNodes ?

50
Ch. II. Hadoop et Map Reduce
1.1 Hadoop File System (HDFS)

Si l’un des nœuds a un problème, les données seront perdues

• Hadoop réplique chaque bloc 3 fois (par défaut)


• Il choisit 3 nœuds au hasard, et place une copie du bloc chacun
d’eux.
• Si le nœud est en panne, le NameNode le détecte, et s’occupe
de répliquer encore les blocs qui y entaient hébergés pour avoir
toujours 3 copies stockées.
• Concept de Rack Awarenss (rack = baie de stockage).

Si le NameNode a un problème ?

51
Ch. II. Hadoop et Map Reduce
1.1 Hadoop File System (HDFS)

Si le NameNode a un probleme :
• Données perdues à jamais.
• Données inaccessibles ?

Si c’est un problème d’accès (réseau) les données sont


temporairement inaccessibles.

Si le disque du NameNode est défaillant, les données seront


perdues à jamais.

52
Ch. II. Hadoop et Map Reduce
1.1 Hadoop File System (HDFS)

Pour éviter cela, le NameNode sera duplique, non seulement sur


son propre disque, mais également quelque part sur le système de
fichiers du réseau.

Définition d’un autre NameNode (standby namenode) pour


reprendre le travail si le NameNode actif est défaillant.

53
Ch. II. Hadoop et Map Reduce

Définition : Map Reduce

Patron d’architecture de développement permettant de traiter des données


volumineuses de manière parallèle et distribuée.

A la base, le langage java est utilisé, mais grâce à une caractéristique de Hadoop appelée
Hadoop Streaming, il est possible d’utiliser d’autre langages comme Python.

Au lieu de parcourir le fichier séquentiellement, il est divisé en morceaux qui sont


parcourus en parallèle.

54
Ch. II. Hadoop et Map Reduce

Exemple :

• Imaginons que vous ayez plusieurs magasins que vous gérez à travers le monde.

• Un très grand livre de comptes contenant toutes les ventes.

• Objectif : Calculer le total des ventes par magasin pour l’année en cours.

• Supposons que les lignes du livre aient la forme suivante : Jour Ville Produit Prix

55
Ch. II. Hadoop et Map Reduce

Exemple :

Possibilité :
• Pour chaque entrée, saisir la ville et le prix de vente.
• Si on trouve une entrée avec une ville déjà saisie, on les regroupe en
faisant la somme des ventes.

Dans un environnement de calcul traditionnel, on utilise généralement des


Hashtables, sous forme de (Clé, valeur).

Dans notre cas, la clé serait l’adresse du magasin, et la valeur c’est le total
des ventes.

56
Ch. II. Hadoop et Map Reduce

Exemple :
• Si on utilise les hashtables sur 1To, problèmes ?
 Problème de mémoire ?
 Temps de traitement long ?

• Le traitement séquentiel de toutes les données peut s’avérer très long.

• Plus on a de magasins, plus l’ajout des valeurs à la table est long.

• Il est possible de tomber à court de mémoire pour enregistrer cette table,


mais cela peut marcher et le résultat sera correct.

57
Ch. II. Hadoop et Map Reduce
Map Reduce :
Exemple :
• Map-Reduce : Moyen plus efficace et rapide de traiter ces données.

• Au lieu d’avoir un seul processus qui parcourt le livre, si on en lance plusieurs ?

• Appeler un premier groupe les Mappers et un autre les Reducers.

• Diviser le livre en plusieurs parties, et en donner une à chaque Mapper.

 Les Mappers peuvent travailler en même temps, chacun sur une partie des
données.

58
Ch. II. Hadoop et Map Reduce

Exemple :
Mappers :
• Pour chaque entrée, saisir la ville, et le total des ventes et les
enregistrer dans une fiche.
• Rassembler les fiches du même magasin dans une même pile.
Reducers :
• Chaque Reducer sera responsable d’un ensemble de magasins, il
collectent les fiches qui leurs sont associées des différents Mappers.
• Ils regroupent les petites piles d’une même ville en une seule.
• Ils parcourent ensuite chaque pile par ordre alphabétique des villes
(L.A avant Miami), et font la somme de l’ensemble des
enregistrements.

59
Ch. II. Hadoop et Map Reduce
Map-Reduce :
Fonctionnement : Mappers
• Les Mappers sont de petits programmes qui commencent par traiter
chacun une petite partie des données.

• Ils fonctionnent en parallèle. Mélange et Tri

• Leurs sorties représentent les enregistrements intermédiaires : sous


forme d’un couple (clé, valeur).

• Une étape de Mélange et Tri s’ensuit Reducers


 Mélange : Sélection des piles de fiches à partir des Mappers
 Tri : Rangement des piles par ordre au niveau de chaque Reducer.

• Chaque Reducer traite un ensemble d’enregistrements à la fois, pour Résultat


générer les résultats finaux

60
Ch. II. Hadoop et Map Reduce
Résultat de l’exemple :

61
Ch. II. Hadoop et Map Reduce
Map-Reduce :
Mappers
Résultat :

Pour avoir un résultat trie par ordre, on doit :


• Soit avoir un seul Reducer, mais ça ne se met pas bien à l’échelle. Mélange et Tri
• Soit ajouter une autre étape permettant de faire le tri final.

Si on a plusieurs Reducers, on ne peut pas savoir lesquels traitent quelles


clefs : le partitionnement est aléatoire.
Reducers

Résultat

62
Ch. II. Hadoop et Map Reduce
Map-Reduce (Version 1):

MapReduce v1 intègre trois composants : MapReduce v1

• API : pour permettre au programmeur l’écriture d’applications


MapReduce. API

• Framework : Services permettant l’exécution des jobs MapReduce, le


Shuffle/sort …. Framework

• Resource Management : Infrastructure pour générer les nœuds du cluster,


allouer des ressources et ordonnancer les jobs. Resource
Management

63
Ch. II. Hadoop et Map Reduce
Map-Reduce (Version 1):

MapReduce v1 offre :

JobTracker : C’est un processus qui va s’exécuter sur la même machine que le NameNode,
il divise le travail sur les Mappers et Reducers, s’exécutant sur les différents nœuds.

TaskTracker :
S’exécute sur chacun des nœuds (DataNode) pour exécuter les vraies taches de Map-
Reduce, donc il va s’exécuter pour pouvoir réaliser les taches d’exécution de calcul et de
parcours des fichiers.

64
Ch. II. Hadoop et Map Reduce
Map-Reduce (Version 1):
Fonctionnement :
• Un job Map-Reduce (ou une Application Map-Reduce) est divise sur plusieurs tâches appelées mappers et reducers.
• Chaque tâche est exécutée sur un nœud du cluster
• Chaque nœud a un certain nombre de slots prédéfinis :
 Map slots
 Reduce Slots

• Un slot est une unité d’exécution qui représente la capacité (ensemble de ressources matérielles qui sont fournis
pour la machine pour pouvoir réaliser certaines opérations) du task tracker à exécuter une tâche individuellement, à
un moment donne.

• Le Job Tracker se change à la fois :


 D’allouer les ressources (mémoire, CPU, …) aux différents tâches
 De coordonner l’exécution des jobs Map-Reduce
 De réserver et ordonnancer les slots, et de gérer les fautes en réallouant les slots au besoin.

65
Ch. II. Hadoop et Map Reduce
Map-Reduce (Version 1):
Problèmes de la version 1 :
Le Job Tracker s’exécute sur une seule machine, et fait plusieurs tâches (gestion de ressources, ordonnancement et
monitoring des tâches …)
 Problème de scalabilité : les nombreux datanodes existants ne sont pas exploites, et le nombre de nœuds par
cluster limite à 4000.

Si le Job Tracker tombe en panne, tous les jobs doivent redémarrer


 Problème de disponibilité

Le nombre de map slots et de reduce slots est prédéfini (fixe)


 Problème d’exploitation : si on a plusieurs map jobs à exécuter, et que les map slots sont pleins, les reduce slots
ne peuvent pas être utilises et vice-versa.

Le Job Tracker est fortement intégré à Map Reduce


 Problème d’interopérabilité : impossible d’exécuter des applications non-MapReduce sur HDFS.

66
Ch. II. Hadoop et Map Reduce
Map-Reduce V2 (Version 2):
Composants : MapReduce v2

• MapReduce v2 (MR a été divisé en deux) sépare la gestion des ressources de MR API
celle des tâches MP.
• Faire la gestion des ressources grâce à YARN (gestionnaire de ressources).
Framework
• Pas de notion de slots :
• Les nœuds ont des ressources (CPU, mémoire, …) allouées aux
applications à la demande YARN

• Définition de nouveaux démons (pas de JobTracker et TaskTracker) : YARN API


• La plupart des fonctionnalités du Job Tracker sont déplacées vers
l’Application Master. Resource
• Un cluster peut avoir plusieurs Application Masters. Management

• Support les applications MR et non-MR

67
Ch. II. Hadoop et Map Reduce
Map-Reduce V2 (Version 2):
L’ensembre de nouveaux processus qui ont été crées sont :

• Resource Manager (RM) (chef de l’entreprise)


• Tourne sur le nœud master
• Ordonnanceur de ressources global
• Permet l’arbitrage des ressources entre plusieurs applications

• Node Manager(NM) équivalent de TaskTracker


• S’exécute sur les nœuds esclaves
• Communique avec Resource Manager
• Application Master (AM) (chef de projet)
• Containers : remplacer les Slots • Un seul par application (un processus pour
• Créés par Resource Manager à la demande chaque application)
• Se voit allouer des ressources sur le nœud esclave • S’exécute sur un container particulier
• Flexibles donc selon la demande et selon le besoin • Demande plusieurs containers pour exécuter
les tâches de l’application.

68
Ch. II. Hadoop et Map Reduce
Lancement d’une Application :

En supposant que le client lance une


application MyApp (quel que soit le type
de cette application) donc le Resource
Manager va déclencher un application
Master sur l’un des nœuds esclaves qui
sont à sa disposition.

69
Ch. II. Hadoop et Map Reduce
Lancement d’une Application :

Une fois ce processus se lance,


L’application master va demander au
Resource Manager d’allouer les
ressources nécessaires pour pouvoir
exécuter son application. Donc le
Resource Manager juge que pour exécuter
cette application il a besoin de deux
centenaires. Donc il va choisir deux parmi
ressource disponible.

70
Ch. II. Hadoop et Map Reduce
Lancement d’une Application :

Resource Manager va envoyer à


l’application master les adresses des
nœuds. Et maintenant l’application
Master qui va communiquer avec les
nœuds pour exécuter et gérer
l’application.

71
Ch. II. Hadoop et Map Reduce
Lancement d’une Application :

Si on a une nouvelle application qui a


besoin de ses propres ressources le
Resource Manager va créer une autre
application Master. Qui lui va se charger
de gérer l′ensemble des centenaires.

72
Ch. II. Hadoop et Map Reduce
Lancement d’une Application dans un Cluster YARN :

Ce qui est particulier avec le job MapReduce, c’est que ce


job va commencer avec un map qui va s’exécute dans
des blocs d’un fichier.

Par exemple pour l’application WordCount ou les


données sont stocker dans un fichier myData. On va
supposer que le Fichier sera par exemple divisé en deux
blocs. Quand le client va lancer l’application le ressource
manager va déclencher une application master dans l’un
des nœuds disponibles
73
Ch. II. Hadoop et Map Reduce
Lancement d’une Application dans un Cluster YARN :

𝑸𝒖𝒂𝒏𝒅 𝒍′𝒂𝒑𝒑𝒍𝒊𝒄𝒂𝒕𝒊𝒐𝒏 𝒎𝒂𝒔𝒕𝒆𝒓 𝒗𝒂 𝒅𝒆𝒎𝒂𝒏𝒅𝒆𝒓 𝒂𝒖


𝒓𝒆𝒔𝒐𝒖𝒓𝒄𝒆 𝒎𝒂𝒏𝒂𝒈𝒆𝒓 𝒅’𝒂𝒍𝒍𝒐𝒖𝒆𝒓 𝒅𝒆𝒔 𝒄𝒆𝒏𝒕𝒆𝒏𝒂𝒊𝒓𝒆𝒔
𝒑𝒐𝒖𝒓 𝒆𝒙é𝒄𝒖𝒕𝒆𝒓 𝒍𝒆 𝑴𝒂𝒑, 𝒍à 𝒍𝒆 𝒓𝒆𝒔𝒐𝒖𝒄𝒆 𝒎𝒂𝒏𝒂𝒈𝒆𝒓 𝒗𝒂
𝒓é𝒔𝒆𝒓𝒗𝒆𝒓 𝒍𝒆𝒔 𝒎ê𝒎𝒆𝒔 𝒏œ𝒖𝒅𝒔 𝒐𝒖 𝒔𝒆 𝒕𝒓𝒐𝒖𝒗𝒆 𝒍𝒆𝒔 𝒅𝒆𝒖𝒙 𝑰𝒍 𝒍𝒂𝒏𝒄𝒆 𝒍𝒆 𝒋𝒐𝒃 𝑴𝒂𝒑 𝒅𝒂𝒏𝒔 𝒄𝒆𝒔 𝒏𝒐𝒆𝒖𝒅𝒔.
𝒃𝒍𝒐𝒄𝒔 𝒅𝒖 𝒇𝒊𝒄𝒉𝒆𝒓.

74
Ch. II. Hadoop et Map Reduce
Lancement d’une Application dans un Cluster YARN :

𝑫𝒆𝒎𝒂𝒏𝒅𝒆𝒓 𝒂𝒖 𝒓𝒆𝒔𝒐𝒖𝒓𝒄𝒆 𝒎𝒂𝒏𝒂𝒈𝒆𝒓 𝒅’𝒂𝒍𝒍𝒐𝒖𝒆𝒓 𝒅𝒆𝒔


𝑰𝒍 𝒍𝒂𝒏𝒄𝒆 𝒍𝒆 𝒋𝒐𝒃 𝑹𝒆𝒅𝒖𝒄𝒆 𝒅𝒂𝒏𝒔 𝒄𝒆𝒔 𝒏𝒐𝒆𝒖𝒅𝒔.
𝒄𝒆𝒏𝒕𝒆𝒏𝒂𝒊𝒓𝒆𝒔 𝒑𝒐𝒖𝒓 𝒆𝒙é𝒄𝒖𝒕𝒆𝒓 𝒍𝒆 𝑹𝒆𝒅𝒖𝒄𝒆.

75
Ch. II. Hadoop et Map Reduce

Partie 1 :
Objectif :
Initiation au framework hadoop et au MapReduce, utilisation de docker pour lancer un cluster hadoop de 3 nœuds.
Pour cela je vous propose de suivre le TP1 (https://insatunisia.github.io/TP-BigData/tp1/) donc l’objectif est de
s’adapter et pratiquer le framework hadoop et MapReduce avec une application java (WordCount).

Partie 2 :
Objectif :
Pratiquer le même principe de l’application WordCount mais avec vos propres données (autre que le fichier
purchases.txt de la première partie).

76
THANK YOU

You might also like