Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordinateurs : M2 RSD BENHADJ DJILALI Hadjer AIT AMEUR Ouerdia Lydia 2015-2016
Similaire à Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordinateurs : M2 RSD BENHADJ DJILALI Hadjer AIT AMEUR Ouerdia Lydia 2015-2016
Similaire à Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordinateurs : M2 RSD BENHADJ DJILALI Hadjer AIT AMEUR Ouerdia Lydia 2015-2016 (20)
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordinateurs : M2 RSD BENHADJ DJILALI Hadjer AIT AMEUR Ouerdia Lydia 2015-2016
1. République Algérienne Démocratique et Populaire
Ministère de l’enseignement supérieur et de la recherche scientifique
Université des Sciences et de la Technologie Houari Boumediene
Faculté d’Electronique et d’Informatique
Département Informatique
Mémoire de Master
Option
Réseaux et Systèmes Distribués
Thème
Parallélisation d'algorithmes de graphes
avec MapReduce sur un cluster
d'ordinateurs
Sujet proposé par :
Mme
MEHDI-SILHADI Malika
Présenté par :
Melle
BENHADJ DJILALI Hadjer
Melle
AIT AMEUR Ouerdia Lydia
Soutenu le : 21 / 06 / 2014
Devant le jury composé de :
Mme
ALEB Nassima Présidente
Mme
BABA ALI Sadjia Membre
Binôme N° : 114/2016
2. Dédicace
Toutes les lettres ne sauraient
trouver les mots qu’il faut...
Tous les mots ne sauraient
exprimer la gratitude,le respect, la
reconnaissance...
Malgré les obstacles qui
s’opposaient
En dépit des difficultés qui
s’interposaient
À cœur vaillant rien
d’impossible
À conscience tranquille tout est
accessible
Nous prions dieu , souhaitant
que le fruit de nos efforts
fournis
Jour et nuit, nous mènera vers la
réussite.
Aussi, c’est tout simplement que je dédie ce mémoire :
À ma famille : mes chères parents, Mohammed et Zahia
À mon oncle Moh et ma tante Baya,
À mon frère Sofiane,
Je vous suis très reconnaissante, pour votre soutien , et aide précieuse.
À mes professeurs,
À ma binôme Hadjer ,À mes amis, Au Micro-Club, en souvenir de notre
sincère et profonde amitié et des moments agréables que nous avons passés
ensemble.
3. Dédicace
Je dédie ce modeste mémoire :
À mes parents Nasr Eddine et Zohra qui m’ont aidé et d’avoir crus en
moi et me poussent toujours à faire mieux, par leur soutien, sacrifies, com-
préhension, prière ...etc. Je vous aime beaucoup.
À mes deux frères Billel et Khaled et mon unique sœur Asma qui m’a
vraiment aidé.
À mes chères tantes Hamida, Nacira, Djamila, Salima et meriem. À mon
chère oncle Moammed Samir et ma chère cousine Nesrine et ainsi qu’a tout
la famille.
À mes amies proches : Manel, Amel, Sarah, Amina, Imen, Meriem, Cha-
fia, Loubna, Kiki , les tiboukalins surtout Makhlouf. Je vous remercie tous
pour les beaux moments, souvenir partagé ensemble.
À mes connaissance, amis /amies, collègues, voisin et à tous qui sont
chères à mon cœur.
4. Remerciement
Nous tenons tout d’abord à remercier Dieu le tout puissant et miséricordieux, qui nous
a donné la force et la patience d’accomplir ce modeste travail.
En second lieu, nous tenons à remercier notre promotrice : Mme
MEHDI-SILHADI
Malika pour la confiance qu’elle nous a accordé en acceptant d’encadrer notre travail nous
avoir diriger, pour le temps qu’elle nous a consacré et l’ensemble des directives prodiguées
qui nous aidé durant la réalisation de ce mémoire.
Nos vifs remerciements vont également aux membres du jury : Mme
ALEB Nassima et
Mme
BABA ALI Sadjia , pour l’intérêt qu’ils ont porté en acceptant d’examiner ce travail.
Nous souhaitant adresser nos remerciements les plus sincères aux personnes qui nous ont
apporté leur aide et qui ont contribué à l’élaboration de ce mémoire ainsi qu’au corps profes-
soral durant ces deux années de master pour la richesse et la qualité de leurs enseignements.
Enfin, nous exprimons nos plus chaleureux remerciements, à nos parents, à tous nos
proches et amis, qui nous ont soutenu et encouragé tout au long de ce parcours. Merci à
tous et à toutes.
5. Résumé
Avec l’évolution de l’architecture des ordinateurs, l’architecture parallèle a connu un
grand sucées grâce à ses grandes performances et rentabilités en fonction de calcule et de
temps. Cela a permis de résoudre les grands problèmes informatiques qui nécessitent de
grandes performances.
Avec l’avènement de l’architecture parallèle des ordinateurs, de nouveaux modèles de
développement informatique sont apparues. Map/Reduce est un nouveau modèle de pro-
grammation parallèle dans lequel sont effectués des calculs parallèles distribués de grand
masses de donnés.
L’algorithme Branch and Bound est l’une des méthodes les plus efficaces pour la ré-
solution exacte des problèmes d’optimisation combinatoire. Il effectue une énumération
implicite de l’espace de recherche au lieu d’une énumération exhaustive ce qui réduit consi-
dérablement le temps de calcul nécessaire pour explorer l’ensemble de l’espace de recherche.
Le problème Flow Shop de permutation est un problème combinatoire d’ordonnance-
ment NP- difficile. Sa résolution consiste à trouver la permutation qui a un temps d’exé-
cution minimale.
Pour résoudre le problème Flow Shop de permutation, nous avons procédé à la paral-
lélisation de l’algorithme Branch and Bound avec le modèle de programmation parallèle
Map/Reduce.
Pour ce faire, nous avons travaillé sur une adaptation des approches classiques de pa-
rallélisation de l’algorithme Branch and Bound sur le modèle Map/Reduce en utilisant le
framework Hadoop.
Mots clés : Architecture parallèle, Programmation parallèle, Calcul paral-
lèle, Cluster, Map/Reduce, Hadoop, Branche and Bound, Flow Shop
11. 5.2 Benchmark artificiel de 7 tâches et 5 machines à partir du benchmark 20*5
de E .Taillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Benchmark artificiel de 8 tâches et 5 machines à partir du benchmark 20*5
de E .Taillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4 Benchmark artificiel de 9 tâches et 5 machines à partir du benchmark 20*5
de E .Taillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.5 Benchmark artificiel de 10 tâches et 5 machines à partir du benchmark 20*5
de E .Taillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.6 Diagramme de classes pour l’implémentation du FSP sous MapReduce . . 62
5.7 Graphe représentant le Makespan et temps d’exécution d’instances de pro-
blèmes artificiels issue de E.Taillard pour les différents Benchmarks sur un
cluster singleNode pour les deux approches. . . . . . . . . . . . . . . . . . 67
5.8 Graphe représentant le Makespan et temps d’exécution d’instances de pro-
blèmes artificiels issue de E.Taillard pour les différents Benchmarks sur le
cluster IBN BADIS pour les deux approches. . . . . . . . . . . . . . . . . 68
5.9 Graphe représentant le Makespan et temps d’exécution d’instances de pro-
blèmes artificiels issue de E.Taillard pour les différents Benchmarks sur un
cluster singlenode et le cluster IBN BADIS pour les deux approches. . . . 69
Liste des tableaux
1.1 Tableau de classification de FLYNN. . . . . . . . . . . . . . . . . . . . . . 4
5.1 Illustration des clefs / valeurs pour une instances de problèmes. . . . . . . 63
5.2 Makespan d’instances de problèmes artificiels issue de E.Taillard avec une
borne supérieure commune pour les différents benchmarks. . . . . . . . . . 65
5.3 Makespan d’instances de problèmes artificiels issue de E.Taillard avec une
borne supérieure variables pour les différents Benchmarks. . . . . . . . . . 66
5.4 Makespan et temps d’exécution d’instances de problèmes artificiels issue de
E.Taillard pour les différents Benchmarks sur un cluster singleNode . . . . 66
5.5 Makespan et temps d’exécution d’instances de problèmes artificiels issue de
E.Taillard pour les différents Benchmarks sur le cluster IBN BADIS. . . . 67
12. Liste d’abréviations
API Application Programming Interface.
B&B Branch and Bound
CC-NUMA Cache-Coherent NUMA
CERIST Centre de Recherche sur l’Information Scientifique et Technique
COMA Cache Only Memory Access
CPU Central Processing Unit.
CUDA Compute Unified Device Architecture.
DADM Distributed Address space, Distributed Memory.
FD Flot de Données
FI Flot d’Instructions
GFS Google File System.
GPU Graphic Processing Unit.
HDFS Hadoop Distributed File System.
HPC High Performance Computing
IDE Integrated Development Environment
JDK Java Development Kit
KMV Key Multiple Value
KV Key Value
MIMD Multiple-Instruction Multiple-Data.
MISD Multiple-Instruction Single-Data.
MPI/IO Message Passing Interface Input/Output
MPI Message Passing Interface.
MR Map Reduce
NA Nœud Actif
13. NEH Heuristique de Nawaz, Enscore et Ham
NORMA No Remote Memory Access
NUMA Non Uniform Memory Access.
OSMA Operating System Memory Access
POC Problèmes d’Optimisation Combinatoires
RAM Random Acess Memory
SADM Single Address space, Distributed Memory
SASM Single Address space, Shared Memory.
SIMD Single-Instruction Multiple-Data.
SISD Single-Instruction Single-Data.
TB Tera Byte
UC Unité de Contrôle
UMA Uniform Memory Access.
UM Unité de Mémoire
UT Unité de traitement
14. Introduction générale
L’optimisation combinatoire est une riche branche de l’informatique et de la recherche
opérationnelle. Elle vise à fournir des techniques pour trouver des solutions optimales
ou bonnes pour des problèmes avec des espaces de recherche importants.Les problèmes
d’optimisation combinatoire (POC), sont complexes et reconnus NP-difficiles ,plusieurs
applications de divers domaines industriels et économiques peuvent être modélisés sous
forme de " POC " ,par exemple, on peut citer le problème d’ordonnancement Flow-Shop
de permutation (FSP).
Les algorithmes d’optimisation combinatoire peuvent être classés en deux grandes ca-
tégories : les méthodes exactes et les méthodes approchées. Les méthodes exactes ont
pour objectif de trouver la ou les solutions optimales au problème avec preuve d’optima-
lité. Tandis que les méthodes approchée tentent de trouver une bonne solution dans un
temps raisonnable.Ces algorithmes ont étés utilisés avec succès pour la résolution de nom-
breux problèmes d’optimisation. Néanmoins, leur application à des problèmes difficiles et
de grande taille nécessite une grande puissance de calcul et de la mémoire de stockage.
La parallélisation de ces derniers reste un moyen incontournable pour la résolution effi-
cace d’instances de très grande taille. Les tendances récentes pour la résolution de grands
problèmes, ont mis l’accent sur la mise à l’échelle à travers des grappes de machines regrou-
pant plusieurs centaines d’unités , voire des milliers de machines ou plus, selon le contexte,
liées par un réseau de connexion haut débit, sur lesquelles des tâches de calculs intenses
peuvent être effectuées. Dans ce mémoire on s’intéresse particulièrement a la parallélisa-
tion d’un algorithme exacte appelé Branch and Bound pour la résolution du problème FSP.
Le B&B est un algorithme basé sur une structure d’arbre représentant l’ensemble des
solutions de l’espace de recherche. En effet, l’arbre est construit au fur et a mesure qu’on
avance dans la recherche. les nœuds intermédiaires de l’arbre sont des sous problèmes du
problème a résoudre se trouvant à la racine de l’arbre. Tandis que les feuilles sont les solu-
tions du problème. L’algorithme B&B utilise un parcours intelligent de l’arbre de base sur
des techniques mathématiques (relaxation des contraintes du problème). En effet, certaines
régirons de l’espace de recherche (c-à-d) certains nœuds de l’arbre) sont exclus de la re-
cherche car elles ne sont pas susceptible de contenir la solution optimale. Des stratégies de
parallélisation existent pour cet algorithme pour plusieurs types d’architectures parallèles
15. et infrastructures de calcul distribués (clusters , grilles, GPUs etc).
En plus de ces infrastructures de calcul parallèles traditionnelles, on assiste actuelle-
ment a une révolution du domaine des systèmes distribues avec l’émergence des technologies
connues sous l’appellation " BigData " et le "Cloud". En effet, La croissance exponentielle
des données est un des premiers défis des entreprises telles que Google , Yahoo, Amazon et
Microsoft , dans la collecte , analyse et traitement , des téra-octets et pétaoctets de données
pour savoir les sites plus les populaires, l’indexation , la recherche et d’autre services. Les
outils existant dés lors devenaient insuffisantes d’où l’apparition de technologies Big Data
permettant de paralléliser ces service sur des milliers de CPUs d’un cloud.
MapReduce est une de ces technologies permettant de paralléliser les traitements faits
sur des données a grande échelle.MapReduce a été initialisation inventé par Google pour
leurs services de recherche, indexation etc., puis adopte par une large sphère d’entreprises
activant dans le domaine Big Data pour sa facilite d’utilisation et son efficacité.
L’objectif est de proposer une adaptation des stratégies classiques de parallélisation d’un
algorithme Branch & Bound en utilisant le modèle de programmation MapReduce sous son
implémentation la plus connue le framework Hadoop. Nous avons aussi fait une étude d’état
de l’art sur le cas d’une autre implémentation issue de la recherche et basée sur le modèle
MPI (Message Passing Interface), la bibliothèque MR-MPI. Des expérimentations sont
menées sur le cluster IBN-BADIS du CERIST dans le but de valider notre implémentation.
Ce mémoire est structuré comme suit :
Partie I : État de l’art
Chapitre 1 : " Notions sur les architectures et la programmation parallèle "
Ce chapitre est consacré aux architectures parallèles et leurs mesures de performances. On
citera leurs classifications, quelques infrastructures parallèles et on illustrera par les archi-
tectures parallèles actuellement utilisées.
Chapitre 2 : " Étude du modèle MapReduce ,du framework qui l’implé-
mente : Hadoop et le produit de recherche MR-MPI "
Dans ce chapitre, nous allons étudier le modèle MapReduce : un modèle de programmation
mis au point par Google à travers l’étude de son principe de fonctionnement, ses caractéris-
tiques et la concrétisation de son implémentation dans le framework Hadoop ou le produit
de recherche la bibliotheque MR-MPI.
Chapitre 3 : " Étude de l’algorithme Branch and Bound et des stratégies de
parallélisation "
Ce chapitre présente des notions essentielles sur les algorithmes B&B ensuite les algo-
rithmes B&B parallèles , les méthodes de leurs conceptions, et les stratégies de parallélisa-
tion classiques sur différentes architectures parallèles comme : les grilles, clusters, mémoire
16. partagées , ainsi que les mesures de performances , la complexité et l’approche de déploie-
ment de ces algorithmes.
Partie II : Contribution
Chapitre 4 : " Conception d’un algorithme Branch and Bound parallèle basé
sur MapReduce "
Dans ce chapitre nous détaillerons notre conception d’un algorithme B&B parallèle basée
sur le paradigme MapReduce en utilisant le framework Hadoop et on présentera le pro-
blème d’optimisation combinatoire qu’on va traiter avec l’algorithme Branch and Bound.
Chapitre 5 : " Implémentation avec Hadoop et tests sur IBN BADIS "
Le dernier chapitre , sera réservé pour l’implémentation et évaluation de notre approche
sur le cluster IBN BADIS du CERIST .
17. Chapitre
1
Notions sur les architectures et
la programmation parallèle
" Les architectures parallèles sont
devenues le paradigme dominant
pour tous les ordinateurs depuis
les années 2000. En effet, la vitesse
de traitement qui est liée à
l’augmentation de la fréquence des
processeurs connaît des limites. La
création de processeurs
multi-cœurs, traitant plusieurs
instructions en même temps au
sein du même composant, résout
ce dilemme pour les machines de
bureau depuis le milieu des années
2000. "
( citée dans [1] ).
18. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
1.1 Introduction
Dans l’architecture classique des ordinateurs dite de Von Neumann (1945), toute les
opérations sont effectuées de façon séquentielle dans un ordre précis sans parallélisme.
Avec l’apparition des problèmes informatique, la technologie ne permet pas de fournir
une solution rapide et optimale pour résoudre ces problèmes. Avec la révolution de la
technologie hardware , software et l’établissement du réseau de communication mondial «
Internet », l’architecture parallèle des ordinateurs a été introduite pour pouvoir exécuter
des programmes et des algorithmes parallèles sur plusieurs ordinateurs de façon rapide et
transparente aux utilisateurs.
Dans ce chapitre nous allons présenter l’architecture parallèle, les mesures de perfor-
mances et tout ce qui est utilisé actuellement comme architecture parallèle pour les grandes
puissances de calcul. Dans ce chapitre nous allons en premier approcher la limite de l’ar-
chitecture séquentielle puis en étudier l’architecture parallèle avec ces différents types de
classification et leurs mesures de performance, ensuite on aborde les deux types de pro-
grammation séquentielle et parallèle, après on illustres quelques architectures parallèles
actuelle. A la fin on clôture le chapitre avec une petite description de l’environnement de
travail du le cluster IBN BADIS du CERIST.
1.2 Architecture parallèle
Les architectures parallèles sont devenues le paradigme dominant pour tous les ordina-
teurs depuis les années 2000. En effet, la vitesse de traitement qui est liée à l’augmentation
de la fréquence des processeurs connaît des limites.
La création de processeurs multi-cœurs, traitant plusieurs instructions en même temps au
sein du même composant [1] . De même une architecture parallèle est un ensemble de pro-
cesseurs qui coopèrent et communique pour résoudre les problèmes dans un délais court.Le
calcul parallèle est l’utilisation simultanée de plusieurs ressources de calcul pour résoudre
un problème donné : [2]
® Le problème est donc exécuté en utilisant plusieurs processeurs.
® Le problème est divisé en parties distinctes qui peuvent être résolues en même temps.
® Chaque partie est subdivisée en une série d’instructions.
® Les Instructions de chaque partie sont exécutées simultanément sur des processeurs
différents.
1
19. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
Figure 1.1: Principe du calcul parallèle [2].
1.3 Sources de parallélisme
Trois principales sources de parallélisme sont détectées [3] :
1.3.1 Parallélisme de contrôle
Faire plusieurs choses en même temps : l’application est composée d’actions (tâches)
qu’on peut exécuter en même temps. Les tâches peuvent être exécutées de manière, plus ou
moins, indépendante sur les ressources de calcul. Si on associe à chaque ressource de calcul
une action, on aura un gain en temps linéaire. Si on exécute N actions sur N ressources on
va N fois plus vite. Toutefois on remarque bien que les dépendances qui existent entre les
tâches vont ralentir l’exécution parallèle.
Figure 1.2: Parallélisme de contrôle [3].
2
20. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
1.3.2 Parallélisme de données
Répéter une action sur des données similaires : pour les applications qui sont composées
de données identiques sur lesquelles on doit effectuer une action répétée (exemple : tableaux
de données). Les ressources de calcul sont associées aux données.
1.3.3 Parallélisme de flux
Travailler à la chaîne : certaines applications fonctionnent selon le mode de travail à
la chaîne, on dispose d’un flux de données, généralement similaires, sur lesquelles on doit
effectuer une suite d’opérations en cascade ,illustré, par la figure ci-dessus :
Figure 1.3: Parallélisme de flux [3].
Les ressources de calcul sont associées aux actions et chaînées tels que les résultats des
actions effectuées au temps T sont passés au temps T+1 au processeur suivant (mode de
fonctionnement Pipe-Line).
1.4 Classification des architectures parallèles
Il existe plusieurs classifications des architectures parallèles , dont on va mentionner
quelques unes.
1.4.1 La classification de Michael J. FLYNN (1972)
Flynn propose une classification suivant deux paramètres, le flux d’instructions, et le
flux de données :
— Flux d’instructions : séquence d’instructions exécutées par la machine.
— Flux de données : séquence des données appelées par le flux d’instructions.
3
21. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
1 flux d’instruction > 1 flux instruction
1 flux de données SISD MISD (pipeline)
> 1 flux de donnés SIMD MIMD
Table 1.1: Tableau de classification de FLYNN.
S : Single (une seule), M : Multiple (plusieurs)
D : Data (données), I : Instruction (instruction)
SISD : « Single Instruction stream, Single Data stream » , une seule instruction avec
une seule donnée en entrée. Cette catégorie correspond aux machines séquentielles conven-
tionnelles (modèle de Von Neumann), pour lesquelles chaque opération s’effectue sur une
donnée à la fois. L’unité de contrôle (UC), recevant son flot d’instructions (FI) de l’unité
Figure 1.4: Architecture SISD [4].
mémoire (UM), envoie les instructions à l’unité de traitement (UT), qui effectue ses opéra-
tions sur le flot de données (FD) provenant de l’unité mémoire [4]. Exemples de machines
SISD : UNIVAC1, IBM 360, CRAY1, CDC 7600, PDP1, Dell Laptop.
MISD : « Multiple Instruction stream, Single Data stream », plusieurs instructions
pour une seule donnée. Cette catégorie regroupe les machines spécialisées de type « systo-
lique », dont les processeurs, arrangés selon une topologie fixe, sont fortement synchronisés
[4].
Figure 1.5: Architecture de MISD [5].
4
22. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
SIMD : « Single Instruction stream, Multiple Data stream », une seule instruction pour
plusieurs données. Plusieurs données traitées en même temps par une seule instruction.
Utilisé dans les gros ordinateurs vectoriels. Une machine SIMD exécute à tout instant une
seule instruction, mais qui agit en parallèle sur plusieurs données, on parle en générale de
parallélisme de données [2].
Figure 1.6: Architecture SIMD [4].
MIMD : « Multiple Instruction stream, Multiple Data stream », plusieurs instruc-
tions sur plusieurs données. Exécution d’une instruction différente sur chaque processeur
pour des données différentes.Il désigne les machines multiprocesseurs où chaque processeur
exécute son code de manière asynchrone et indépendante. Pour assurer la cohérence des
données, il est souvent nécessaire de synchroniser les processeurs entre eux, les techniques
de synchronisation dépendent de l’organisation de la mémoire. Soit mémoire partagée ou
bien mémoire distribuée [5].
Figure 1.7: Architecture MIMD à mémoire partagée [4].
1.4.2 Classification de Raina
Une sous-Classification étendue des machines MIMD, due à Raina, permet de prendre
en compte de manière fine les architectures mémoire, selon deux critères : l’organisation de
5
23. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
l’espace d’adressage et le type d’accès mémoire mise en œuvre.L’organisation de l’espace
d’adressage [4] :
¦ SASM : « Single Address space, Shared Memory » , une seule mémoire partagée
entre tous les processeurs. Le temps mis pour accéder à la mémoire est identique pour tous
les processeurs. L’accès simultané à la même zone mémoire par plusieurs processeurs n’est
pas possible , un seul accède à la fois.
¦ DADM : « Distributed Address space, Distributed Memory » , appelée aussi les
architectures distribuées dont chaque processeur a sa propre mémoire (mémoire distribuée
sans aucune mémoire partagée entre eux). L’échange de données entre processeurs s’effec-
tue nécessairement par passage de messages, au moyen d’un réseau de communication.
¦ SADM : « Single Address space, Distributed Memory » , mémoire distribuée,
avec espace d’adressage global, autorisant éventuellement l’accès aux données situées sur
d’autres processeurs.Le temps d’accès pour les divers banc mémoires devient par consé-
quent différent.
Types d’accès mémoire mis en œuvre [4] :
¦ NORMA (« No Remote Memory Access ») , ce type n’a pas de moyen d’accès aux
données distantes, ce qui nécessite le passage de messages.
¦ UMA (« Uniform Memory Access ») : accès symétrique à la mémoire avec un coût
identique pour tous les processeurs.
Figure 1.8: Accès mémoire UMA [2].
¦ NUMA (« Non-Uniform Memory Access ») , dans ce cas les performances d’accès
à la mémoire dépendent de la localisation des données.
¦ CC-NUMA : (« Cache-Coherent NUMA » , type d’architecture NUMA intégrant
la mémoire caches et implémentation de protocole cohérence de cache.
6
24. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
Figure 1.9: Accès mémoire CC-NUMA [2].
¦ OSMA : « Operating System Memory Access » , les accès aux données distantes
sont gérés par le système d’exploitation, qui traite les défauts de page au niveau logiciel et
gère les requêtes d’envoi/copie de pages distantes.
¦ COMA : « Cache Only Memory Access » : les mémoires locales se comportent
comme des caches, de telle sorte qu’une donnée n’a pas de processeur propriétaire ni d’em-
placement déterminé en mémoire.
Figure 1.10: Accès mémoire COMA [2].
Figure 1.11: Classification MIMD de Rania [4].
7
25. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
1.5 Classification selon la mémoire
1.5.1 Machines parallèles à mémoire partagée
Ces machines sont caractérisées par une horloge indépendante pour chaque processeur,
mais une seule mémoire partagée entre ces processeurs, où tous les processeurs lisent et
écrivent dans le même espace d’adressage mémoire, ce qui permet de réaliser un parallélisme
de données et de contrôles. Le programmeur n’a pas besoin de spécifier l’emplacement des
données, il définit seulement la partie du programme que doit exécuter chaque processeur
en plus de la gestion de la synchronisation [3]. Ce type d’architecture possède plusieurs
avantages dont la simplicité, le passage à l’échelle et la parallélisation de haut niveau.
Son inconvénient majeur est lié principalement à la limite de la bande passante du réseau
d’interconnexion.
Figure 1.12: Machine parallèle à mémoire partagée [3].
1.5.2 Machines parallèles à mémoire distribuée
Dans ce type de machine, chaque processeur possède sa propre mémoire locale, où il exé-
cute des instructions identiques ou non aux autres processeurs. Les différents nœuds définis
par l’ensemble mémoires plus processeurs sont reliés entre eux par un réseau d’intercon-
nexion.Le parallélisme est implémenté par échange de messages [3]. L’avantage principal
des machines parallèles à mémoire distribuée est l’augmentation facile du nombre de pro-
cesseurs avec des moyens simples, tels que les clusters. Seulement elles présentent plus de
difficulté dans la programmation.
8
26. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
Figure 1.13: Machine parallèle à mémoire distribuée [3].
Différents types de réseaux d’interconnexion ont été mis en place pour relier les différents
nœuds des machines parallèles. On peut citer principalement : l’anneau, Grille torique, Fat
Tree,hypercube et d’autres architectures hybrides [3].
Figure 1.14: Différentes architectures de réseau d’interconnexion [3].
1.6 Les mesures de performances des architectures
parallèles
1.6.1 Le temps d’exécution
Le temps d’exécution c’est le temps écoulé entre le début du calcul parallèle et l’exé-
cution de la dernière instruction par le plus long processus. Théoriquement Te = Nc ∗ Tc
Tel que :
— Te : temps d’exécution.
— Nc : Nombre de cycle de programme.
— Tc : Temps de cycle d’un processeur.
9
28. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
E =
S(p)
p
,ou S(p) et l’accélération (SpeedUp) et p le nombre de processeurs [2].
1.7 Architecture parallèle actuelle
Dans cette section nous allons présenter quelque architecture parallèle actuelle.
1.7.1 Processeur graphique
Un processeur graphique, ou GPU (en l’anglais Graphics Processing Unit), est un cir-
cuit intégré la plupart du temps présent sur une carte graphique mais pouvant aussi être
intégrée sur une carte-mère ou dans un CPU et assurant les fonctions de calcul de l’affi-
chage. Un processeur graphique a généralement une structure hautement parallèle qui le
rend efficace pour une large palette de tâches graphiques comme le rendu 3D, en Direct3D,
en OpenGL, la gestion de la mémoire vidéo, le traitement du signal vidéo, la décompres-
sion Mpeg ...etc [5]. Peu d’entreprises conçoivent de tels processeurs : les plus connues
sont NVIDIA, AMD et Intel.Il y a aussi d’autre moins connues telles que Qualcomm, S3
Graphics, Matrox,3DLabs, et XGI.
Figure 1.16: Exemple de processeur graphique NVIDIA avec un CPU [6].
1.7.2 Cloud
Cloud est l’exploitation de la puissance de calcul ou de stockage de serveurs informa-
tiques distants par l’intermédiaire d’un réseau, généralement l’internet. Ces serveurs sont
loués à la demande, le plus souvent par tranche d’utilisation selon des critères techniques
(puissance, bande passante, etc.) mais également au forfait. Il se caractérise par sa grande
souplesse : selon le niveau de compétence de l’utilisateur client, il est possible de gérer
soi-même son serveur ou de se contenter d’utiliser des applicatifs distants [7]. Les grandes
entreprises du secteur informatique comme IBM, Microsoft, Google, Amazon,Dell, Oracle
11
29. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
ou Apple font la promotion du cloud computing, qui constitue un important changement
de paradigme des systèmes informatiques, jusque-là constitués de serveurs situés au sein
même de l’entreprise.
1.7.2.1 Les modèles de service de cloud
Il existe 3 modèles de service de cloud [8] :
¢ SasS (Software as a Service), Logiciel en tant que service.
¢ PaaS (Platform as a Service), Plateforme en tant que service.
¢ Iaas (infrastrure as a Service), Infrastructure en tant que service.
Figure 1.17: Image illustre la différence technique entre les 3 modèles de cloud [8].
1.7.3 Cluster
Le cluster « grappe en français » est une architecture de groupe d’ordinateurs, utili-
sée pour former de gros serveurs, chaque machine est un nœud du cluster, l’ensemble est
considéré comme une seule et unique machine. Toutes les machines du cluster travaillent
ensemble sur des tâches communes en s’échangeant des données (l’échange est restreint
dans une zone géographique étroite), ce type de travail est appelé calcul parallèle [9].
12
30. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
Figure 1.18: Image d’un cluster de machines cher Yahoo ! [10].
1.7.3.1 Concept d’un cluster informatique
Les concepts d’un cluster informatique est le suivant [11] :
G Partage de l’exécution d’une application entre plusieurs machines du cluster.
G Redondance.
G Haute disponibilité.
G Accélération des temps d’exécution de façon significative.
G Problème de charge réseau : échange de messages.
G Temps de latence.
G Communication par échange de message.
G Evolutivité.
G Délégation des calculs.
G Sécurité.
1.7.4 Grille informatique
Grille informatique est une architecture réseaux qui utilise le calcul distribué en re-
groupant des ressources géographiquement distribuées, et se caractérise par un transfert
important de données, des logiciels de coordination et d’ordonnancement. La grille infor-
matique consiste également à mettre en commun la puissance de toutes les machines d’une
même entreprise ou d’un réseau plus vaste, et de redistribuer la puissance de calcul en
fonction des besoins spécifiques de chaque client [12].
13
31. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
Figure 1.19: Image illustre architecture d’une grille informatique [12].
1.7.4.1 Type de grille
On distingue 3 type de grille [13] :
— Grille d’information : À pour but partage d’information comme site web.
— Grille de stockage : Partage des données, musique, vidéo, applications à succès,
données scientifiques ...etc.
— Grille de calcul : Agrégation de puissance de calcul dont on distingue 3 sous-type
aussi :
§ Supercalculateur Virtuel.
§ Internet computing.
§ MetaComputing.
1.7.4.2 Caractéristique d’une grille informatique
Les grilles informatiques sont caractérisées par [14] :
§ Existence de plusieurs domaines administratifs.
§ Hétérogénéité des ressources.
§ Passage à l’échelle.
§ Nature dynamique des ressources.
1.7.5 Le cluster IBN BADIS
La recherche dans notre projet fin d’études est implémentée sur le cluster IBN BADIS
du CERIST (centre de recherche sur l’information scientifique et technique), un centre
de recherche scientifique équipé par du matériel adapté pour le calcul intensif. Le cluster
IBNBADIS est une plateforme de calcul haute performance à 32 noeuds de calcul composé
chacun de deux processeurs Intel(R) Xeon(R) CPU E5-2650 2.00GHz. Chaque processeur
14
32. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
est composé de 8 cœurs, ce qui fait 512 cœurs au total (ce qui est 500 fois plus rapide
qu’un simple ordinateur à un seul cœur ), La puissance théorique du cluster est d’environs
8TFLOPS a une puissance théorique 8 TFlops (8000 milliard d’opérations flottantes par
seconde),un linpack de 7.8 TFlops, un système d’exploitation linux Readhat, 36 TB comme
bais de stockage, 512 coeurs et comme environnement de développement les langages de
programmation : C++/MPI/FORTRAN/JAVA ... etc, sont utilisés. De plus tout outil
nécessaire pour faire de la recherche et de l’expérimentation [15].
Figure 1.20: Image du cluster IBN BADIS au CERIST.
1.7.5.1 Architecture du cluster IBN BADIS
Le cluster " IBN BADIS " est composé d’un noeud d’administration ibnbadis0, un nœud
de visualisation ibnbadis10 et 32 noeuds de calcul ibnbadis11-ibnbadis42.
Le nœud de visualisation ibnbadis10 est équipé d’un GPU Nvidia Quadro 4000 (6GB, 448
cœurs) qui peut être exploité pour les calculs.
Les logiciels installés sur "IBN BADIS " sont :
— SLURM pour la gestion des jobs.
— C/C++, Fortran
— MPI
La figure suivante montre l’architecture interne du cluster " IBN BADIS ".
15
33. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
Figure 1.21: Architecture du cluster IBN BADIS au CERIST.
Voir l’annexe " D" pour la procédure de connexion et utilisation du cluster "IBN BADIS".
1.8 La programmation séquentielle et parallèle
Dans cette section nous allons parler de façon générale de la programmation séquentielle
et parallèle.
1.8.1 La programmation séquentielle
La programmation séquentielle et un type de programmation existant actuellement et
le plus ancien. Il s’agit d’écrire un programme en utilisant un ou des algorithmes séquen-
tiels. Le nombre d’algorithmes séquentiels dans un programme dépend de la fonctionnalité
et la complexité de la conception du programme. Un algorithme séquentiel est une suite
d’instructions code machine qui sera exécutée par le processeur une par une, la prochaine
instruction ne s’exécutera pas tant que la précédente n’a pas terminé son exécution. Bien
sûr, l’exécution de l’algorithme (programme) dépendra de l’ordre des instructions de l’al-
gorithme.Le programme séquentiel est exécuté par un seul et unique processeur. Si on veut
l’exécuter sur plusieurs processeurs en même temps, comme s’il s’exécute localement, non
pas comme un programme réparti coopération entre les processeurs , pour avoir un résultat
final.
Certains algorithmes séquentiels ont un temps d’exécution très long qui n’est pas accep-
table, comme : l’algorithme de calcule de factoriel ou bien les algorithmes de recherche de
graphes sur des grandes données leur complexité temporelle et exponentielle ou bien facto-
rielle ...etc. Le problème est que la solution existante actuellement est rentable mais après
un temps d’attente élevé, et avec l’introduction des architectures parallèles , la nécessité
de paralléliser les algorithmes pour les rendre efficaces en termes de temps d’exécution et
de performances de coût et l’exploitation des ressources ... etc s’est imposée.
16
34. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
1.8.2 La programmation parallèle
Le parallélisme est omniprésent dans les ordinateurs d’aujourd’hui. Au niveau micro-
scopique,les processeurs multiplient les unités arithmétiques pipelinées sur un même circuit
intégré. Au niveau macroscopique, on interconnecte les stations de travail en grappes pour
construire des supercalculateurs à peu de frais. Dans les deux cas, l’algorithmique paral-
lèle permet de comprendre et de maîtriser les concepts fondamentaux à mettre en œuvre
pour l’utilisation de plates-formes distribuées. Elle emprunte beaucoup à l’algorithmique
classique dans sa problématique (conception, analyse, étude de complexité), mais s’enrichit
d’une nouvelle dimension avec l’exploitation simultanée de plusieurs ressources [16].
On écrit des programmes parallèles qui seront exécutées sur plusieurs processeurs réparties
géographiquement dans le monde connectés via un réseau de télécommunication dans une
architecture parallèle à mémoire distribuée où la communication entre les processus ,se fait
par échange de messages. Aussi les algorithmes parallèles peuvent s’exécuter sur une seule
machine avec un processeur multi-cœurs dans une architecture parallèle à mémoire parta-
gée où le parallélisme se fait par des threads s’exécutant chacun sur de différents cœurs.
La programmation parallèle se base sur les algorithmes parallèles, dont le développeur doit
considérer plusieurs facteurs tels que : la partie du programme qui peut être traitée en
parallèle,la manière de distribuer les données, les dépendances des données, la répartition
de charges entre les processeurs, les synchronisations entre les processeurs. Il y a essen-
tiellement deux méthodes pour concevoir un algorithme parallèle, l’une consiste à détecter
et à exploiter le parallélisme à l’intérieur d’un algorithme séquentiel déjà existant, l’autre
consistant à inventer un nouvel algorithme dédié au problème donné.
1.9 Conclusion
A la fin de ce chapitre, nous arrivons à dire que les machines à architecture parallèle
ont bouleversée le monde de la technologie informatique et ont facilité la résolution de
beaucoup de problèmes. Devenue une grande puissance technologique moderne qui permet
de faire de calcul parallèle, dont on ne peut pas négliger son utilisation due à leur rapidité
et bonne performance. Ils sont devenus indispensables.
17
35. Chapitre
2
Étude du modèle MapReduce
,du framework qui l’implémente :
Hadoop et le produit de re-
cherche MR-MPI
" La quantité de données du
monde digital à la fin de 2011 à
été estimée à 1.8 zettabytes (1021)
bytes "
(cité dans [17] )
"Une nouvelle génération de
technologies et architectures
conçues pour extraire de la valeur
économique à une grande variété
de données en permettant leur
capture à haute vitesse, leur
découverte et/ou analyse "
( firme IDC citée dans [18] ).
36. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
2.1 Introduction
La science, à l’heure actuelle,vit une révolution qui a mené à un nouveau concept,selon
lequel,«la science est dans les données », autrement dit, la connaissance émerge du traite-
ment des données. L’extraction de connaissances à partir de grands volumes de données,
l’apprentissage statistique, l’agrégation de données hétérogènes, la visualisation et la navi-
gation dans de grands espaces de données, sont autant d’outils qui permettent d’observer
des phénomènes, de valider des hypothèses, d’élaborer de nouveaux modèles, la prise de
décisions, dans des situations critiques,ou encore dans le but de servir une application de
calcul intensif. Selon une étude faite par : The Economist Intelligence Unit en 2014
« 68% des entreprises qui ont systématiquement recours à une analyse de données,dans
leurs prises de décision,voient leurs bénéfices augmenter ». La donnée,est donc l’un des
principaux actifs immatériels,des organisations quelque soit leur domaine : recherche ou
industriel.
Le traitement de donnés représente ainsi, un pilier de la science. Tout comme la théorie,
l’expérimentation et la simulation, il constitue un défis majeur pour les systèmes de re-
cherche d’ information tels que les moteurs de recherche d’information dans le Web connu
comme le plus grand dépôt de données , on cite par exemple : Google,Yahoo,Bing ...etc.
Un des enjeux,concerne le traitement de grandes quantités de données, et le faite ,qu’il
ne peut être réalisé avec les paradigmes classiques de traitement de données,et nécessite
l’utilisation de plateformes distribuées de calcul et des mécanismes de parallélisations pour
atteindre un débit de production élevé,et un temps de réponse minimal , ce qui nous amène
à la problématique suivante :
Comment effectuer des calculs distribués tout tant assurant la gestion et le
parallélisme des différentes tâches appliquées sur ces vastes collections de
données ?
Le modèle MapReduce répond à cette dernière, notamment ce qu’on va présenter dans
ce chapitre, le framework l’implémentant "Hadoop" utilisé par les grands auteurs du web
comme : Google ,Yahoo ,Facebook ,Twitter,Amazone ,IBM, LinkedIn et d’autres , le pro-
duit de recherche MR-MPI.
2.2 Modèle de programmation MapReduce
2.2.1 Qu’est ce que MapReduce ?
Pour exécuter un problème large de manière distribuée, une stratégie algorithmique dite
« divide and conquer / diviser pour régner » [19] est appliquée , c’est à dire découper
le problème en plusieurs sous problèmes ou sous tâches de taille réduite , puis les répartir
sur les machines qui constituent le cluster, pour être exécutés.
De multiples approches existent pour cette division d’un problème en plusieurs « sous-
tâches » ,parmi elles, MapReduce, qu’on va définir dans la suite.
18
37. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
2.2.1.1 Définition
MapReduce est un paradigme (un modèle) attrayant pour le traitement des données
en parallèle,dans le calcul de haute performance dans un environnement en cluster [20].
L’évolutivité de MapReduce s’est avérée élevée du fait que le travail est partitionné en de
nombreuses petites tâches, en cours d’exécution sur plusieurs ordinateurs,dans un cluster
à grande échelle.
Le modèle vise aussi à généraliser les approches existantes pour produire une approche
unique,applicable à tous les problèmes. Il est conçu pour traiter de grands volumes de
données en parallèle et cela en divisant le travail en un ensemble de tâche indépendantes.
MapReduce existait déjà depuis longtemps , dans les langages fonctionnels (Lisp, Scheme)
[19], mais la présentation du paradigme sous une forme rigoureuse, généralisable à tous
les problèmes et orientée calcul distribué ,est attribuable au département de recherche de
Google qui a publié en 2004 un article sous le thème : « MapReduce : Simplified Data
Processing on Large Clusters ».
Un des objectifs du modèle MapReduce est la répartition de charge de calcul sur les ma-
chines qui constitue le cluster. Le but est d’utiliser suffisamment de ressources tout en
optimisant le temps de calcul et maintenir la fiabilité du système.MapReduce permet de :
— Traiter de grands volumes de données.
— Gérer plusieurs processeurs.
— La parallélisation automatique.
— L’équilibrage de charge.
— L’optimisation sur les transferts disques et réseaux.
— L’ordonnancement des entrées / sorties.
— La surveillance des processus.
— La tolérance aux pannes.
2.2.1.2 Principe de fonctionnement
MapReduce définit deux opérations différentes à effectuer sur les données d’entrée :
3 Mappage :
La première opération « MAP », écrite par l’utilisateur , dans un premier lieu transforme
les données d’entrée en une série de couples « clef,valeur » . Ensuite elle regroupe les don-
nées en les associant à des clefs, choisies de manière à ce que les couples « clef,valeur »
aient une signification par rapport au problème à résoudre.En outre, l’opération « MAP »
doit être parallélisable, les données d’entrée sont découpées en plusieurs fragments, et cette
dernière est exécutée par chaque machine du cluster sur un fragment distinct [19, 20].
3 Réduction :
La seconde opération « REDUCE », également écrite par l’utilisateur applique un traite-
ment à toutes les valeurs de chacune des clefs différentes produite par l’opération « MAP
». À la fin de l’opération « REDUCE », on aura un résultat pour chacune des clefs dif-
19
38. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
férentes.L’ensemble de valeurs pour une clef donnée est fusionnée pour former un plus
petit ensemble de valeurs.Habituellement,juste zéro ou une valeur de sortie est produite
par l’invocation de la réduction.Cela permet de gérer des listes de valeurs qui sont trop
volumineuses pour tenir dans la mémoire [19, 20].La figure suivante représente ces deux
opérations :
Figure 2.1: Illustre les deux opérations essentielles dans le modèle MapReduce [21].
— Map : Émission de paires « clef,valeur » pour chaque donnée d’entrée lue.
— Reduce : Regroupement des valeurs de clef identique et application d’un traitement
sur ces valeurs de clef commune.
Dans le processus de traitement MapReduce on distingue donc 4 étapes suivantes :
Découper (Split) Mapper (Map) Grouper (Shuffle) Réduire (Reduce)
— Découper (Split) les données d’entrée en plusieurs fragments généralement de 16
mégaoctets à 64 mégaoctets (Mo).
— Mapper (Map) chacun de ces fragments pour obtenir des couples « clef , valeur».
— Grouper (Shuffle) ces couples « clef , valeur » par clef.
— Réduire (Reduce) les groupes indexés par clef en une forme finale, avec une valeur
pour chacune des clefs distinctes.
20
39. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
Le problème est modélisé de sorte à rendre les tâches à,l’exception de la première,
parallélisable,et seront effectuées de manière distribuée [19],comme illustré ci-dessous.
Figure 2.2: Illustre un aperçu de l’exécution du fonctionnement des étapes de MapReduce
[22].
2.2.2 Caractéristiques
Le modèle MapReduce possède quelques caractéristiques qui sont :
40. Le modèle de programmation du MapReduce est simple mais très expressif, constitué
que deux fonctions, map() et reduce(), pouvant être utilisées pour de nombreux types de
traitement des données, les fouilles de données, les graphes. . . etc, Il est indépendant du
système de stockage et peut manipuler de nombreux types de variables.
41. Automatisation du découpage des données en entrée, en bloc de données de même
taille, par le système .Puis la planification de l’exécution des tâches sur les nœuds dispo-
nibles.
42. Il fournit une tolérance aux fautes , il peut redémarrer les nœuds ayant rencontré une
21
43. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
erreur ou affecter la tâche à un autre nœud.
44. La parallélisation est transparente à l’utilisateur afin de lui permettre de se concen-
trer sur le traitement des données.
2.2.3 Utilisateurs de MapReduce
Le modèle MapReduce est très utilisé par plusieurs organismes, on cite :
* Google : pour la construction des index pour « Google Search » et le regroupement
des articles pour « Google News », et cela depuis 2004, où il a remplacé les algorithmes
indexation originales et heuristiques, compte tenu de son efficacité, face au traitement de
grands masses de données.
Un rapport plus récent, en 2008, indique que Google exécute plus de cent mille job MapRe-
duce par jour , traite plus de 20 po de données , et en 2010, plus de dix mille programmes
distincts de MapReduce effectuant une variété des fonctions, y compris le traitement à
grande échelle graphique, texte traitement ...etc, ont été créés [20].
* Yahoo ! : utilise Hadoop le framework le plus connu implémentant MapReduce pour
alimenter Yahoo ! Search avec « Web Map » aussi de la détection de Spam pour « Yahoo !
Mail » .
* Facebook : dans la fouille de données connu sous l’appellation «Data Mining » et
dans la détection de spam.
* Laboratoires/ chercheurs : dans le domaine de la recherche on l’utilise aussi pour :
Ä Analyse d’images Astronomiques.
Ä Simulations métrologiques.
Ä Simulations physiques.
Ä Statistiques.
Ä Et bien d’autres . . . .etc [23]
22
45. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
Figure 2.3: Illustre certaines entreprises et universités qui utilisent le modèle MapReduce
[19].
2.3 Framework Hadoop solution d’Apache
2.3.1 Qu’est ce que Hadoop ?
Hadoop est une technologie en plein essor ,de plus en plus de données produites par des
systèmes d’information à une fréquence de plus en plus importante,ces données doivent
toutes être analysées, corrélées,traitées,...etc et puis stockées ce qui est communément
appelé « Big Data ».Hadoop offre une solution idéale et facile à implémenter au problème.
2.3.1.1 Définition
Hadoop est un framework libre, conçu, pour réaliser des traitements sur des volumes de
données massifs « Big Data », et destiné à faciliter la création d’applications distribuées et
qui passent à l’échelle, permettant aux applications de travailler avec des milliers de nœuds
et des pétaoctets de données, soit plusieurs milliers de Téraoctets.
Hadoop a été inspiré par les publications de Google , la première concernant MapReduce
présenté ci-dessus et la seconde en 2003 sur « Google File System » : un système de fichiers
distribués, conçu pour répondre aux besoins de leurs applications en matière de stockage
de données [20].
2.3.1.2 Le système de fichier HDFS
HDFS, Hadoop Distributed File System, est un système de fichiers distribué conçu pour
sauvegarder de très grande quantités de données, de l’ordre de téra-octets ou même pétaoc-
tets, et de fournir un accès en haut débit à ces informations [20]. Pour stocker les données
en entrée ainsi que les résultats des traitements, on va utiliser le système de fichiers, le «
23
46. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
HDFS » ,Il s’agit du système de fichier standard de Hadoop distribué car les données sont
réparties sur tout le cluster de machines, une de ces caractéristiques , aussi :
47. Il est répliqué : Les fichiers sont stockés dans un mode redondant sur plusieurs or-
dinateurs afin d’assurer leur durabilité à l’échec et de haute disponibilité à plusieurs ap-
plications parallèles,si une des machines du cluster tombe en panne, aucune donnée n’est
perdue.
48. Il est conscient du positionnement des serveurs sur les racks. HDFS va répliquer les
données sur des racks différents, pour être certain qu’une panne affectant un rack de ser-
veurs entier ne provoque pas ,non plus, de perte de données, même temporaire.
49. HDFS peut aussi optimiser les transferts de données pour limiter la «distance » à
parcourir pour la réplication ,et donc,les temps de transfert.
Le HDFS possède une architecture de maître /slave. Il repose sur deux serveurs :
— Le NameNode : qui stocke les informations relatives aux noms de fichiers, il y a
un seul NameNode dans tout le cluster.
— Le DataNode : qui stocke les blocs de données eux-mêmes. Il y a un DataNode
pour chaque machine du cluster, et ils sont en communication constante avec le
NameNode pour recevoir de nouveaux blocs, indiquer quels blocs sont contenus sur
le DataNode, signaler des erreurs, ...etc[19].
Un cluster HDFS se compose donc d’un seul NameNode, le serveur maître qui gère l’espace
de noms du fichier système et réglemente l’accès aux fichiers par clients. En outre, il existe
un certain nombre de DataNodes, habituellement un par nœud dans le cluster, qui gère le
stockage pour les nœuds en exécution. En interne, un fichier est divisé en un ou plusieurs
blocs, ces derniers sont stockés dans un ensemble de DataNodes. Le NameNode exécute les
opérations d’espace noms comme l’ouverture, de fermeture et de renommer des fichiers et
répertoires. Il détermine également le mappage des blocs aux DataNodes. Les DataNodes
sont responsables du service de lecture et demandes d’écriture dans le fichier clients du
système. Le DataNode effectue également la création de bloc , suppression, et réplication
sur l’ instruction du NameNode [24] .
En outre , le HDFS est en communication constante avec le système de gestion des
tâches de Hadoop, qui distribue les fragments de données d’entrée au cluster pour les
opérations « MAP » et/ou « REDUCE ». La figure suivante illustre l’architecture du
système de fichier HDFS.
24
50. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
Figure 2.4: Illustre l’architecture du HDFS [24].
2.3.1.3 Architecture de Hadoop
La gestion des tâches de Hadoop se base sur deux serveurs aussi, qui sont :
— Le JobTracker : le serveur responsable de recevoir directement les tâches à exécu-
ter ainsi que les données d’entrées , et le répertoire, où stocker les données de sortie
sur HDFS . Il y a un seul JobTracker sur une seule machine du cluster Hadoop.
Le JobTracker est en communication avec le NameNode de HDFS et sait donc où
sont les données, donc il est conscient de la position des données , il peut facilement
déterminer les meilleures machines auxquelles attribuer les sous-tâches.
— Le TaskTracker : qui est en communication constante avec le JobTracker et va
recevoir les opérations simples à effectuer (MAP,REDUCE) ainsi que les blocs de
données correspondants stockés sur HDFS. Il y a un TaskTracker sur chaque ma-
chine du cluster [19].
La figure suivante illustre l’architecture générale de Hadoop ainsi que l’interaction avec
le système de fichier HDFS.
25
51. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
Figure 2.5: Illustre l’architecture générale de Hadoop [19].
2.3.2 Fonctionnement de MapReduce dans l’architecture de Ha-
doop
Pour résoudre un problème via la méthodologie MapReduce sous son implémentation
Hadoop, on va donc :
— Choisir la manière de découper les données d’entrée de telle façon que l’opération
MAP soit parallélisable.
— Définir quelle « Clef » utiliser pour le problème.
— Écrire le programme pour l’opération « MAP ».
— Écrire le programme pour l’opération « REDUCE ».
Hadoop se chargera de la problématique du calcul distribué, du groupement par clef diffé-
rente entre les opérations MAP et REDUCE, ...etc. Les données d’entrée seront stockées
sur HDFS, un répertoire est crée aussi par Hadoop pour sauvegarde , les résultats et les
programmes MAP et REDUCE compilés dans un .jar. Le nom des fichiers d’entrée, le
nom du répertoire des résultats, et le .jar lui-même sont soumit au JobTracker comme
arguments. Ce dernier s’occupera de transmettre les programmes MAP et REDUCE aux
machines TaskTracker du cluster .
26
52. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
Le déroulement de l’exécution d’une tâche Hadoop suit les étapes suivantes :
1. Le client, un outil Hadoop console va soumettre le travail à effectuer au JobTracker
ainsi que les opérations MAP et REDUCE, le nom des fichiers d’entrée, et l’endroit
où stocker les résultats.
2. Le JobTracker communique avec le NameNode HDFS pour savoir où se trouvent les
blocs correspondant aux noms de fichiers donnés par le client.
3. Le JobTracker, à partir de ces informations, détermine quels sont les nœuds TaskTra-
cker les plus appropriés, c’est à dire ceux qui contiennent les données sur lesquelles
travailler sur la même machine, ou le plus proche possible.
4. Pour chaque fragments des données d’entrée, le JobTracker envoie au TaskTracker
sélectionné le travail à effectuer (MAP/REDUCE) et les blocs de données corres-
pondants.
5. Le JobTracker communique avec les nœuds TaskTracker qui exécutent les tâches. Ils
envoient régulièrement des message signalant qu’ils travaillent toujours sur la sous-
tâche reçue. Si aucun message n’est reçu dans une période donnée, le JobTracker
considère la tâche comme ayant échouée et donne le même travail à effectuer à un
autre TaskTracker.
6. Si par hasard une tâche échoue , le TaskTracker va signaler au JobTracker que
la tâche n’a pas pût être exécutée. Le JobTracker va alors décider de la conduite
à adopter : redonner la sous-tâche à un autre TaskTracker, demander au même
TaskTracker de ré-essayer, marquer les données concernées comme invalides, etc. il
pourra même lister le TaskTracker concerné comme non-fiable dans certains cas.
7. Une fois que toutes les opérations envoyées aux TaskTracker (MAP et REDUCE)
ont été effectuées et confirmées comme effectuées par tous les nœuds, le JobTracker
marque la tâche comme « effectuée ». Des informations détaillées sont disponibles
(statistiques, TaskTracker ayant posé problème,. . . etc).
Dans le cas de travailleurs plus lents, ralentissants l’ensemble du cluster sera redistribué
aux machines qui ont terminé leurs les tâches respectives et /ou ne recevront plus d’autres
tâches. Par ailleurs, on peut également obtenir à tout moment de la part du JobTracker
des informations sur les tâches en train d’être effectuées : étape actuelle (MAP, REDUCE,
SHUFFLE), pourcentage de complétion,... etc. Le TaskTracker lorsqu’il reçoit une nou-
velle tâche à effectuer (MAP, REDUCE, SHUFFLE) depuis le JobTracker, démarre une
nouvelle instance et enverra régulièrement au JobTracker des messages. Lorsqu’une sous-
tâche est terminée, le TaskTracker envoie un message au JobTracker pour l’en informer,
du déroulement correcte ou non de la tâche et il lui indique le résultat [19].
2.3.3 Avantages de la solution
Les avantages de la solution sont énumérés ci-dessous :
Projet de la fondation Apache – Open Source, composants complètement ouverts, tout
27
53. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
le monde peut y participer.
Modèle simple pour les développeurs : il suffit de développer des tâches map-reduce,depuis
des interfaces simples accessibles via des librairies dans des langages multiples (Java, Py-
thon, C/C++...).
Déployable très facilement (paquets Linux pré-configurés), configuration très simple,
elle aussi.
S’occupe de toutes les problématiques liées au calcul distribué, comme l’accès et le par-
tage des données, la tolérance aux pannes, ou encore la répartition des tâches aux machines
membres du cluster : le programmeur a simplement à s’occuper du développement logiciel
pour l’exécution de la tâche [19].
2.4 Produit de recherche MR-MPI (Map Reduce Mes-
sage Passing Interface )
En deuxième lieu , le produit de recherche qui implémente le modèle de programmation
MapReduce est MR-MPI [25, 26] mettant en œuvre l’utilisation des fonctionnalités de
la bibliothèque MPI (Message Passing Interface) .Un standard destiné à l’industrie
pour l’écriture de programme de passage de messages sur les plateformes de Calcul haute
performance (HPC High Performance Computing) [27].
2.4.0.1 Définition
MPI ( Message Passing Interface) est une API (Application Programming
Interface) constitué d’un ensemble normalisé de classes, de méthodes ou de fonctions mise
en œuvre par une bibliothèque logicielle utilisable avec les langages C ,C++ et Fortran.
Elle permet de faire communiquer par passage de messages des processus distants sur un
ensemble de machines hétérogènes et ne partageant pas de mémoire commune . MPI est
adapté à la programmation parallèle distribué et très utilisé dans le calcul intensif.Elle
permet de gérer :
— Les communications point à point.
— Les communications collectives.
— Les groupes de processus.
— Les topologies de processus.
— Les communications unidirectionnelles.
— La création dynamique de processus.
— Les entrées/sorties parallèles (MPI/IO).
— Utilisation de différents types de données.
MPI est passée par plusieurs propositions avancées et des versions révisées due au change-
ment fréquent des machines parallèles et afin de permettre les principales caractéristiques
cités ci- dessous ,aboutie par : MPI version 1 environ 120 fonctions et plus de 200 pour
MPI version 2 . Une extension vers MPI version 3 est en cours de discussion [27].
28
54. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
2.4.0.2 La librairie MR-MPI
MR-MPI ( Map Reduce Message Passing Interface) est une bibliothèque parallèle avec
appels de transmission de messages qui permet aux algorithmes de s’exprimer dans le pa-
radigme de MapReduce. La bibliothèque est libre, écrit en C, peut être appelé à partir
de C++, Fortran ou langages de script comme Python et peut fonctionner sur n’importe
quelle plate-forme parallèle qui prend en charge le contexte MPI.
La référence de base opérée dans le modèle MapReduce est l’entité paire : clefs/valeurs
(KV) qui peuvent être de n’importe quel type de données ou combinaisons de plusieurs
types. Les paires sont stockées dans un objet de MapReduce appelé MR. Un programme
utilisateur peut créer un ou plusieurs objets MR pour implémenter un algorithme. Diverses
opérations de MapReduce (MAP, Reduce, etc.) sont appelées sur un objet ainsi que les
paires KV générées par ce dernier, qui peuvent être passées et combinées entre les objets
MR [25].
La mémoire physique totale des grosses machines parallèles peut être de plusieurs téraoc-
tets, ce qui permet de traiter de grands ensembles de données, en supposant que les paires
KV / KMV demeurent uniformément distribuées tout au long de la séquence d’opéra-
tions de MapReduce ,dans le cas contrainte MR-MPI permet d’utiliser des disques pour
écrire des fichiers contenant des paires KV ou KMV qui ne peuvent pas être retenus dans
la mémoire.
Toutefois, aucune tolérance de panne ou de capacité de redondance des données n’est four-
nie . MR-MPI propose plusieurs opérations permettant d’effectuer diverses tâches, briève-
ment [28] :
— Map : génère les paires (KV) « clef,valeur » en appelant un programme utilisateur
, ne nécessite pas de communication entre les processeurs.
— Ajouter : ajoute des paires KV à partir d’un objet à un autre. Ne nécessite pas de
communication et s’effectue en série.
— Convertir : convertit les paires KV en paires « clef,multi-valeur ». Avant d’ap-
peler la fonction convert, les paires KV peuvent contenir un double des clefs et
leurs valeurs . Après l’appel de la fonction convertir, les valeurs de la même clé sont
concaténées à être une seule paire KMV.
— Collate : agrégat des paires KV , puis les convertit en paires KMV . Cette
opération nécessite la communication, et est en fait, équivalente à une exploitation
d’agrégats , suivie d’une opération de conversion.
— Réduire : Cette opération traiter les paires KMV et ne nécessite pas de commu-
nication et traite une paire KMV pour générer la paire de KV. Les paires KMV
détenues sont uniques. À la fin de la réduction, chaque processeur possédera une
liste de paires KV unique.
29
55. CHAPITRE 2. ÉTUDE DU MODÈLE MAPREDUCE ,DU FRAMEWORK QUI
L’IMPLÉMENTE : HADOOP ET LE PRODUIT DE RECHERCHE MR-MPI
Les implémentations de MR-MPI actuelles ne permettent pas de détecter facilement des
processus morts et ne fournit pas de la redondance des données.Contrairement à Hadoop,
et son système de fichiers (HDFS) qui assure la redondance des données.
2.5 Conclusion
Chaque jour, 2,5 trillions octets de données sont crées.Ces données proviennent de
différentes sources : des capteurs utilisés pour recueillir des informations climatiques,..etc,
du Web, le plus grand dépôt de données ( les sites de médias sociaux, achat en ligne,
enregistrements des transactions et d’autres,...etc) tel que, au cours des deux dernières
années seulement, ça représente 90 % des données dans le monde. Pour cela une variété
d’architectures de systèmes,y compris des applications de calcul parallèle et distribué ont
été mises en œuvre pour analyser des données volumineuses à grande échelle. Cependant
la plupart des données croissantes sont des données non structurées, d’où s’est avéré la
nécessité de nouveaux modèles de traitement de données flexibles.
Nous avons présenté dans ce chapitre , le modèle de programmation MapReduce mis au
point par Google à travers l’étude de son principe de fonctionnement ,ses caractéristiques
et la concrétisation de son implémentation dans le framework Hadoop et le produit de
recherche MR-MPI. Pour la suite de ce mémoire on a opté pour le framework Hadoop car
pour ce qui est de MR-MPI qui ce veut être plus optimiser pour le calcul scientifique mais
non stable et en cours d’élaboration.
30
56. Chapitre
3
Étude de l’ algorithme Branch
and Bound et des stratégies de
parallélisation
L’algorithme de Branch et
Bound est proposé par A. H. Land
and A. G. Doig en 1960 pour la
programmation discrète. Il s’agit
d’un algorithme général pour
trouver des solutions optimales des
différents problèmes
d’optimisation
( citée dans [29] ).
57. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
3.1 Introduction
Aujourd’hui, avec le développement de la technologie et le besoin d’évolutivité on se
trouve face à des problèmes, qui n’existaient pas avant, comme les problèmes d’optimisa-
tion combinatoire , qui sont NP-difficiles. Les méthodes de la solution de ces problèmes sont
classées en deux grandes catégories : les méthodes approchées, appelées aussi, heuristiques,
et les méthodes exactes. Les heuristiques, qui produisent en un temps raisonnable, des so-
lutions de bonne qualité, mais pas forcément optimales.Les méthodes exactes, permettent
de trouver des solutions exactes, avec preuve d’optimalité. Parmi les méthodes exactes, on
trouve la méthode BranchBound qui est basée sur une énumération intelligente de l’es-
pace de recherche. Les méthodes exactes réduisent, considérablement, le temps requis pour
l’exploration de tout l’espace de recherche. Cependant elles restent, inefficaces, lorsqu’elles
sont appliquées aux problèmes de grandes tailles (possédant un espace de recherche très
grand). Vue la limite physique des architectures des ordinateurs actuelle, la parallélisation,
de ces méthodes, s’avère un moyen efficace, pour accélérer les calculs et réduire leur temps
d’exécution, sur des ordinateurs à architecture parallèles.
Dans ce chapitre, nous allons décrire la méthode BranchBound avec son principe
de fonctionnement,puis nous étudieront les différentes stratégies de parcours et illustra-
tion avec des exemples d’utilisation de cette méthode, ensuite, on énumère les différentes
classifications de l’algorithme BB parallèle, avec les mesures de performance et leur com-
plexité. Enfin de ce chapitre nous exposerons approche de déploiement d’un algorithme
BB parallèle.
3.2 La méthode Branch and Bound
3.2.0.3 Définition
La technique du BB est une méthode algorithmique classique exacte pour résoudre
un problème d’optimisation combinatoire. Il s’agit,de rechercher une solution optimale,
dans un ensemble combinatoire de solutions possibles. La méthode repose d’abord, sur la
séparation, (Branch) ,de l’ensemble des solutions, en sous-ensembles plus petits. L’explo-
ration de ces solutions utilise ensuite ,une évaluation optimiste pour majorer (Bound) les
sous-ensembles, ce qui permet de ne plus considérer ,que ceux susceptibles ,de contenir une
solution, potentiellement meilleure, que la solution courante. [30]
3.2.1 Principe de fonctionnement : Opérateurs d’un algorithme
B B
L’énumération des solutions du problème, consiste à construire un arbre Branch
Bound, dont les nœuds, sont des sous-ensembles de solutions du problème, et les branches
sont les nouvelles contraintes à respecter. La taille de l’arbre dépend de la stratégie utilisée
31
58. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
pour le construire . Pour appliquer la méthode de Branch Bound, nous devons être en
possession :
1. D’un moyen de calcul d’une borne inférieure d’une une solution partielle.
2. D’une stratégie de subdiviser l’espace de recherche pour créer des espaces de re-
cherche de plus en plus petits.
3. D’un moyen de calcul d’une borne supérieure pour au moins une solution.
La méthode commence par considérer le problème de départ avec son ensemble de solutions,
appelé la racine. Des procédures de bornes inférieures et supérieures sont appliquées à la
racine.Si ces deux bornes sont égales, alors une solution optimale est trouvée, et on arrête là.
Sinon, l’ensemble des solutions est divisée en deux ou plusieurs sous-problèmes, devenant
ainsi des fils de la racine. La méthode est ensuite appliquée récursivement à ces sous-
problèmes,engendrant ainsi une arborescence. Si une solution optimale est trouvée pour
une sous-problème,elle est réalisable, mais pas nécessairement optimale, pour le problème
départ. Comme elle est réalisable, elle peut être utilisée pour éliminer toute sa descendance :
si la borne inférieure d’un nœud dépasse la valeur d’une solution déjà connue, alors on peut
affirmer que la solution optimale globale ne peut être contenue dans le sous-ensemble de
solutions représenté par ce nœud. La recherche continue jusqu’à ce que tous les nœuds sont
soit explorés ou éliminés.Les étapes de fonctionnement de la méthode Branch Bound
sont la séparation (Branch),évaluation (Bound), élagage et la sélection.
3.2.2 Séparation (Branch)
La séparation consiste à diviser le problème en sous-problèmes. Ainsi, en résolvant
tous les sous-problèmes et en gardant la meilleure solution trouvée, on est assuré d’avoir
résolu le problème initial. Cela revient à construire un arbre permettant d’énumérer toutes
les solutions.L’ensemble de nœuds de l’arbre qu’il reste encore à parcourir comme étant
susceptibles de contenir une solution optimale, c’est-à-dire encore à diviser, est appelé
ensemble des nœuds actifs [31].
3.2.3 Évaluation (Bound)
La fonction d’évaluation est spécifique à chaque problème. Elle est dite optimiste car
le coût renvoyé par cette fonction est le coût minimal que peut avoir une solution partielle
associée à ce nœud. La valeur associée à un nœud en utilisant cette fonction s’appelle la
borne inférieure (Lower Bound). La borne supérieure (Upper Bound) représente le coût
de la meilleure solution trouvée actuellement. La fonction consiste à évaluer les solutions
d’un sous-ensemble de façon optimiste, c’est-à-dire en majorant la valeur de la meilleure
solution de ce sous-ensemble. L’algorithme propose de parcourir l’arborescence des solutions
possibles en évaluant chaque sous-ensemble de solutions de façon optimiste. Lors de ce
parcours, il maintient la valeur M de la meilleure solution trouvée jusqu’à présent. Quand
l’évaluation d’un sous-ensemble donne une valeur plus faible que M, il est inutile d’explorer
plus loin ce sous-ensemble [30].
32
59. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
3.2.4 Élagage
Une fois que la valeur d’un nœud interne est calculée (la borne inférieure d’un nœud),
on peut utiliser cette valeur pour interrompre éventuellement l’exploration de cette partie
de l’arbre. En particulier, il est inutile de diviser le nœud dans les cas suivants :
1. L’évaluation a permis de calculer une solution qui a exactement cette valeur. Cette
solution est nécessairement optimale dans ce sous-ensemble de solutions. Si cette
solution est la meilleure trouvée jusque là, elle devient la meilleure solution courante.
Ce cas est plutôt rare.
2. L’évaluation est supérieure ou égale à la valeur de la meilleure solution (borne
supérieure actuelle) trouvée jusque là. On n’a donc aucune chance de trouver mieux
dans ce sous-ensemble. Ceci peut permettre des gains importants, car on élimine
une partie de l’arbre de recherche.
3. Le sous-ensemble est réduit à un seul élément.
Dans les cas 1 et 2, on gagne dans l’exploration de l’arbre puisque la branche suivant le
nœud considéré ne sera pas explorée. On dit que cette branche est élaguée (pruning en
anglais). A noter que dans le cas 1, si la meilleure solution courante a changé, il convient
de parcourir tous les nœuds actifs pour voir s’ils le restent [30].
3.2.5 Sélection
La sélection est une stratégie de recherche utilisée pour sélectionner l’ordre dont lequel
les sous problèmes seront traités. On peut distinguer pendant le déroulement de l’algo-
rithme trois types de nœuds dans l’arbre de recherche : le nœud courant qui est le nœud
en cours d’évaluation,les nœuds actifs qui sont dans la liste des nœuds qui doivent être
traités, et les nœuds inactifs qui ont été élagués [32].
Figure 3.1: Structure général d’un arbre de recherche BranchBound [32].
33
60. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
3.2.6 Algorithme Branch Bound
L’algorithme maintient la valeur M de la meilleure solution trouvée jusqu’à présent et
la liste NA des nœuds actifs, susceptibles de contenir de meilleures solutions que M [30].
Algorithm 1 Branch Bound
1: NA ← { racine de l’arbre des solutions } ;
2: while NA = ∅ do
3: Prendre un nœud actif n dans NA ;
4: Diviser n ;
5: for Pour chaque fils f de n do
6: Évaluer f et en fonction du résultat, mettre à jour M et ;
7: Transformer f en nœud actif (le mettre dans NA) ou l’élaguer ;
8: end for
9: end while
3.3 Stratégie de parcours
En fonction de la structure de données utilisée pour la liste des nœuds actifs NA,
l’algorithme peut avoir des performances expérimentales très différentes. La façon dont
on parcourt l’arbre des solutions et donc le choix du prochain nœud actif à diviser sont
cruciaux. Plusieurs stratégies sont à envisager. Étant donnée une arborescence en cours de
construction, il faut choisir le prochain nœud à séparer et une des décisions de séparation qui
peuvent lui être appliquées. L’important dans une méthode arborescente est de bien choisir
les règles de séparation et d’évaluation. La stratégie d’exploration est plutôt considérée
comme un détail d’implémentation.
3.3.1 En largeur
Elle permet de visiter les nœuds suivant l’ordre de leur création. Néanmoins, cette mé-
thode représente beaucoup d’inconvénients, parmi eux [32] :
G Le temps mis pour arriver aux premières solutions est relativement long, car les solutions
se trouvent dans les feuilles.
G Le nombre exponentiel de nœuds actifs.
34
61. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
Figure 3.2: Stratégie de parcours par largeur [32] .
3.3.2 En profondeur
Le prochain nœud à être sélectionné est l’un des fils du nœud qui vient d’être séparé.
Si tous ces nœuds sont élagués, on remonte dans l’arbre (backtrack) comme illustré dans
la figure suivante. Cette méthode possède plusieurs avantages dont, on peut citer [32] :
G La Faible consommation de mémoire car le nombre de nœuds actifs est relativement
faible.
G Le temps nécessaire pour arriver aux premières solutions réalisables est relativement
faible, car les solutions se trouvent dans les feuilles, ce qui va nous permettre d’élaguer des
nœuds.
Figure 3.3: Stratégie de parcours en profondeur [32].
35
62. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
3.3.3 Meilleur évaluation
La stratégie consiste à explorer des sous problèmes possédant la meilleure borne. Elle
permet aussi d’éviter l’exploration de tous les sous-problèmes qui possèdent une mauvaise
évaluation par rapport à la valeur optimale [31].
Figure 3.4: Stratégie de parcours par meilleur évaluation [32].
3.3.4 Plus prioritaire
La priorité d’un nœud peut être évaluée par la pondération entre son évaluation et sa
profondeur dans l’arbre. En effet il est souvent plus avantageux de diviser un nœud avec
une moins bonne évaluation mais qui possède une plus grande profondeur [30].
3.3.5 Stratégie mixte
On va en profondeur tant qu’on le peut, mais quand on ne peut plus on saute au nœud
de meilleure évaluation. On explorera les fils dans l’ordre d’évaluation : le meilleur d’abord
[30].
3.4 Algorithmes BB parallèles
Nous avons vu plus haut que les méthodes Branch Bound étaient des méthodes effi-
caces et attrayantes pour la résolution exacte des problèmes d’optimisation combinatoires
(POC) par exploration d’un espace de recherche arborescent. Néanmoins ces méthodes at-
teignent leurs limites dès que l’instance du problème s’agrandit , en effet, ces algorithmes
sont très gourmands en temps de calcul pour des instances de problèmes de grande taille.
D’où l’émergence de la parallélisation de ces méthodes a commencé à attirer de l’intérêt,
ces dernières années, pour traiter efficacement de telles instances.Le défi est alors, d’utiliser
tous les niveaux de parallélisme sous-jacents et donc, de repenser les modèles parallèles des
algorithmes BB.
36
63. CHAPITRE 3. ÉTUDE DE L’ ALGORITHME BRANCH AND BOUND ET DES
STRATÉGIES DE PARALLÉLISATION
Dans cette section, nous allons donner une vue générale sur les algorithmes BB parallèles
, leurs paramètres ainsi que les stratégies de parallélisations et les différentes classifications
, aussi décrire les critères utilisés pour mesurer la qualité de ces derniers et les différentes
anomalies qui peuvent survenir.
3.4.1 Notion sur les Algorithmes BB parallèles
La parallélisation de l’algorithme séquentiel de Branch-and-Bound nécessite en outre
la subdivision de l’espace de recherche en sous-espaces disjointes. Dans ce qui suit, nous
allons présenter un ensemble de notions utilisées dans un algorithme BB parallèle.
3.4.1.1 Workpool
C’est un espace mémoire où les processus sélectionnent et stockent leurs unités de travail
tâches afin de les traitées , et un processus peut également sélectionné indépendamment
ses tâches de différents workpools. Il est géré par un processus maître qui contrôle la dis-
tribution des tâches aux processus esclaves.Du moment que le workpool est partagé par
plusieurs processus, l’accès doit être synchronisé afin d’éviter les conflits. On peut distin-
guer deux types d’algorithmes :
o Algorithme à pool unique (Single pool) : Dans les algorithmes à pool unique, les
unités de travail sont sauvegardées dans une seule mémoire.Ces algorithmes sont généra-
lement implémentés sur des machines à mémoire partagées aussi que sur des machines à
mémoire distribuées en utilisant le paradigme « maître/esclave ». Dans ce paradigme le
workpool est géré par le processus maître qui affecte les unités de travail aux autres pro-
cessus appelés esclaves. A la fin de leurs traitements , ces derniers renvoient les résultats
au processus maître.
o Algorithmes à pool multiple (Multiple pool) : Les algorithmes utilisant des work-
pools multiples peuvent être divisés en trois classes : collégiale, groupée et mixte. Dans
la première, chaque processus possède son propre workpool. Dans la seconde, les processus
sont partitionnés en sous-ensembles et à chaque sous ensemble est associé un workpool. Et
enfin, la dernière où chaque processus possède son propre workpool, ainsi qu’un workpool
global qui est partagé par tous les processus [32].
3.4.1.2 Base des connaissances d’un algorithme Branch Bound parallèle
Durant l’exécution de chaque instance du problème traité, des connaissances sont gé-
nérées et collectées. Ces connaissances sont constituées de tous les sous problèmes générés,
séparés et éliminés, les bornes inférieures et supérieures et l’ensemble des solutions réali-
sables. C’est à base de ces connaissances, que les décisions sur les prochaines opérations à
effectuer sont prises (sélection du prochain sous problème à séparer,..).
37