SlideShare une entreprise Scribd logo
1  sur  117
Télécharger pour lire hors ligne
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
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.
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.
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.
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
Table des matières
Introduction générale
État de l’art
1 Notions sur les architectures et la programmation parallèle 1
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Architecture parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Sources de parallélisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.1 Parallélisme de contrôle . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3.2 Parallélisme de données . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.3 Parallélisme de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Classification des architectures parallèles . . . . . . . . . . . . . . . . . . . 3
1.4.1 La classification de Michael J. FLYNN (1972) . . . . . . . . . . . . 3
1.4.2 Classification de Raina . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Classification selon la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.1 Machines parallèles à mémoire partagée . . . . . . . . . . . . . . . . 8
1.5.2 Machines parallèles à mémoire distribuée . . . . . . . . . . . . . . . 8
1.6 Les mesures de performances des architectures parallèles . . . . . . . . . . 9
1.6.1 Le temps d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.2 L’accélération (SpeedUp) . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6.3 L’efficacité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7 Architecture parallèle actuelle . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.1 Processeur graphique . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.2 Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.2.1 Les modèles de service de cloud . . . . . . . . . . . . . . . 12
1.7.3 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.7.3.1 Concept d’un cluster informatique . . . . . . . . . . . . . 13
1.7.4 Grille informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.7.4.1 Type de grille . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.4.2 Caractéristique d’une grille informatique . . . . . . . . . . 14
1.7.5 Le cluster IBN BADIS . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.7.5.1 Architecture du cluster IBN BADIS . . . . . . . . . . . . 15
1.8 La programmation séquentielle et parallèle . . . . . . . . . . . . . . . . . . 16
1.8.1 La programmation séquentielle . . . . . . . . . . . . . . . . . . . . 16
1.8.2 La programmation parallèle . . . . . . . . . . . . . . . . . . . . . . 17
1.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Étude du modèle MapReduce ,du framework qui l’implémente : Ha-
doop et le produit de recherche MR-MPI 18
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Modèle de programmation MapReduce . . . . . . . . . . . . . . . . . . . . 18
2.2.1 Qu’est ce que MapReduce ? . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.1.2 Principe de fonctionnement . . . . . . . . . . . . . . . . . 19
2.2.2 Caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.3 Utilisateurs de MapReduce . . . . . . . . . . . . . . . . . . . . . . . 22
2.3 Framework Hadoop solution d’Apache . . . . . . . . . . . . . . . . . . . . 23
2.3.1 Qu’est ce que Hadoop ? . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.1.2 Le système de fichier HDFS . . . . . . . . . . . . . . . . . 23
2.3.1.3 Architecture de Hadoop . . . . . . . . . . . . . . . . . . . 25
2.3.2 Fonctionnement de MapReduce dans l’architecture de Hadoop . . . 26
2.3.3 Avantages de la solution . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Produit de recherche MR-MPI (Map Reduce Message Passing Interface ) . 28
2.4.0.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.0.2 La librairie MR-MPI . . . . . . . . . . . . . . . . . . . . . 29
2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3 Étude de l’ algorithme Branch and Bound et des stratégies de parallé-
lisation 31
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2 La méthode Branch and Bound . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.0.3 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1 Principe de fonctionnement : Opérateurs d’un algorithme B & B . 31
3.2.2 Séparation (Branch) . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.3 Évaluation (Bound) . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.4 Élagage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.5 Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.6 Algorithme Branch & Bound . . . . . . . . . . . . . . . . . . . . . 34
3.3 Stratégie de parcours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 En largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.2 En profondeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.3 Meilleur évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.4 Plus prioritaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.5 Stratégie mixte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4 Algorithmes B&B parallèles . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.1 Notion sur les Algorithmes B&B parallèles . . . . . . . . . . . . . . 37
3.4.1.1 Workpool . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.1.2 Base des connaissances d’un algorithme Branch & Bound
parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.5 Paramètres des algorithmes B&B parallèle . . . . . . . . . . . . . . . . . . 38
3.5.1 Division du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5.2 Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5.3 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.6 Classification des algorithmes B&B parallèles . . . . . . . . . . . . . . . . 39
3.6.1 Classification de Melab . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.6.1.1 Modèle multiparamétrique parallèle . . . . . . . . . . . . 39
3.6.1.2 Le modèle parallèle de l’exploration de l’arbre . . . . . . 39
3.6.1.3 L’évaluation parallèle des limites . . . . . . . . . . . . . 40
3.6.1.4 Évaluation parallèle d’une seule limite / Solution . . . . 41
3.7 Mesures de performance pour les algorithmes B&B parallèles . . . . . . . . 41
3.7.1 Qualité de la solution . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7.2 Nombre de sous problème . . . . . . . . . . . . . . . . . . . . . . . 41
3.7.3 Accélération / efficacité . . . . . . . . . . . . . . . . . . . . . . . . 42
3.8 Complexité d’un algorithme B&B parallèle . . . . . . . . . . . . . . . . . 42
3.8.1 Complexité en temps de calcul . . . . . . . . . . . . . . . . . . . . 42
3.8.2 Complexité de mémoire . . . . . . . . . . . . . . . . . . . . . . . . 42
3.8.3 Complexité de communication . . . . . . . . . . . . . . . . . . . . 43
3.9 Approche de déploiement d’un algorithme B&B parallèle . . . . . . . . . . 43
3.9.1 Optimisation de communication . . . . . . . . . . . . . . . . . . . 43
3.9.2 Tolérance aux pannes . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.9.3 Passage à l’échelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Contribution
4 Conception d’un algorithme Branch and Bound parallèle basé sur
MapReduce 45
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Le problème Flow-Shop de permutation . . . . . . . . . . . . . . . . . . . 45
4.2.1 Résolution du Flow-Shop de permutation . . . . . . . . . . . . . . 47
4.2.1.1 Makespan . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2.2 Approche du Flow-Shop avec méthode exacte . . . . . . . . . . . . 48
4.2.2.1 Résolution du Flow-Shop de permutation avec l’algorithme
B&B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.2.2 La borne inférieure . . . . . . . . . . . . . . . . . . . . . . 49
4.2.2.3 La borne supérieure . . . . . . . . . . . . . . . . . . . . . 50
4.2.3 Résolution parallèle du Flow-Shop de permutation avec MapReduce 51
4.2.3.1 Application du modèle MapReduce sous Hadoop au FSP 52
4.2.3.2 Les Stratégies de parcours implémentés . . . . . . . . . . 55
4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5 Implémentation et tests d’évaluation avec Hadoop 58
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2 Présentation de l’environnement de travail . . . . . . . . . . . . . . . . . . 58
5.2.1 Systèmes d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.2 Le framework Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.3 Eclipse , Sun java 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.4 Cloudera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3 Présentation des données utilisées pour les tests "Benchmarks" . . . . . . . 59
5.4 Implémentation de l’algorithme B&B parallèle sous MapReduce pour le pro-
blème FSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.1 Implémentation dans MapReduce . . . . . . . . . . . . . . . . . . . 61
5.4.1.1 Programmation Hadoop et utilisation . . . . . . . . . . . . 61
5.4.1.2 Diagramme de classes . . . . . . . . . . . . . . . . . . . . 61
5.4.2 Analyse du parcours par profondeur . . . . . . . . . . . . . . . . . . 63
5.4.3 Analyse du parcours par largeur . . . . . . . . . . . . . . . . . . . 64
5.5 Tests de validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.5.1 Tests sur un cluster à nœud unique (SingleNode) . . . . . . . . . . 65
5.5.2 Tests sur le cluster IBN BADIS . . . . . . . . . . . . . . . . . . . . 67
5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Conclusion générale
Bibliographie
Annexes
Table des figures
1.1 Principe du calcul parallèle [2]. . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Parallélisme de contrôle [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Parallélisme de flux [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Architecture SISD [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 Architecture de MISD [5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6 Architecture SIMD [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Architecture MIMD à mémoire partagée [4]. . . . . . . . . . . . . . . . . . 5
1.8 Accès mémoire UMA [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.9 Accès mémoire CC-NUMA [2]. . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10 Accès mémoire COMA [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.11 Classification MIMD de Rania [4]. . . . . . . . . . . . . . . . . . . . . . . . 7
1.12 Machine parallèle à mémoire partagée [3]. . . . . . . . . . . . . . . . . . . 8
1.13 Machine parallèle à mémoire distribuée [3]. . . . . . . . . . . . . . . . . . 9
1.14 Différentes architectures de réseau d’interconnexion [3]. . . . . . . . . . . . 9
1.15 Analyse de résultat de l’accélération [2]. . . . . . . . . . . . . . . . . . . . 10
1.16 Exemple de processeur graphique NVIDIA avec un CPU [6]. . . . . . . . . 11
1.17 Image illustre la différence technique entre les 3 modèles de cloud [8]. . . . 12
1.18 Image d’un cluster de machines cher Yahoo ! [10]. . . . . . . . . . . . . . . 13
1.19 Image illustre architecture d’une grille informatique [12]. . . . . . . . . . . 14
1.20 Image du cluster IBN BADIS au CERIST. . . . . . . . . . . . . . . . . . . 15
1.21 Architecture du cluster IBN BADIS au CERIST. . . . . . . . . . . . . . . 16
2.1 Illustre les deux opérations essentielles dans le modèle MapReduce [21]. . . 20
2.2 Illustre un aperçu de l’exécution du fonctionnement des étapes de MapRe-
duce [22]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Illustre certaines entreprises et universités qui utilisent le modèle MapRe-
duce [19]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Illustre l’architecture du HDFS [24]. . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Illustre l’architecture générale de Hadoop [19]. . . . . . . . . . . . . . . . . 26
3.1 Structure général d’un arbre de recherche Branch&Bound [32]. . . . . . . 33
3.2 Stratégie de parcours par largeur [32] . . . . . . . . . . . . . . . . . . . . . 35
3.3 Stratégie de parcours en profondeur [32]. . . . . . . . . . . . . . . . . . . . 35
3.4 Stratégie de parcours par meilleur évaluation [32]. . . . . . . . . . . . . . . 36
3.5 Illustre le modèle multiparamètrique parallèle [3]. . . . . . . . . . . . . . . 39
3.6 illustre le modèle parallèle de l’exploration de l’arbre [3]. . . . . . . . . . . 40
3.7 Illustre le d’évaluation parallèle des limites [3]. . . . . . . . . . . . . . . . 41
4.1 Ilustre un atelier de type Flow-Shop. . . . . . . . . . . . . . . . . . . . . . 46
4.2 Diagramme de Gantt de l’exécution de la séquence 1-2. . . . . . . . . . . . 46
4.3 Diagramme de Gantt de l’exécution de la séquence 1-2. . . . . . . . . . . . 47
4.4 Représentation du problème de Flow-Shop dans l’arbre de recherche Branch
& Bound. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.5 Architcture du HDFS qui montre la communication entre NameNode et
DataNodes pour l’application du FSP . . . . . . . . . . . . . . . . . . . . 53
4.6 Architecture logique de MapReduce pour FSP. . . . . . . . . . . . . . . . 54
5.1 Benchmark artificiel de 6 tâches et 5 machines à partir du benchmark 20*5
de E .Taillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
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
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
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
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
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
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 .
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] ).
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
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
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
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
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
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
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
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
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
CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION
PARALLÈLE
1.6.2 L’accélération (SpeedUp)
Le gain en performance peut s’exprimer en termes d’accélération. Suivant la loi de
Amdahl l’accélération est le rapport du temps d’exécution séquentielle sur le temps d’exé-
cution parallèle.Plus la partie parallélisable d’un programme est grand, plus l’accélération
est meilleure.
S(p) =
Ts
Tp
Tel que : S (p) c’est l’accélération, Ts c’est le temps séquentiel, Tp temps parallèle.
© La loi d’Amdahl s’exprime aussi avec [2] :
S(p) =
1
(1 − α) + α
P
° P : Le nombre de processeurs.
° α : La fraction de la partie parallélisable du programme.
Figure 1.15: Analyse de résultat de l’accélération [2].
¯ S(p) < 1, On ralentit ! mauvaise parallélisation.
¯ 1< S(p) < p, Normal.
¯ S(p) > p, Hyper-accélération analyser & justifier.
¯ S(p)=p , Accélération idéal.
1.6.3 L’efficacité
Efficacité une métrique qui représente le taux d’utilisation des ressources, ou F fraction
de l’accélération idéale dans l’architecture parallèle. L’efficacité est inférieure ou égale à 1.
10
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
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
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
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
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
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
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
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] ).
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
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
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
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 :
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.
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.
Il fournit une tolérance aux fautes , il peut redémarrer les nœuds ayant rencontré une
21
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.
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
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
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 :
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.
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.
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
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
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
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
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
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
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
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] ).
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Contenu connexe

Tendances

rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATSiwar GUEMRI
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Conception d’un logiciel de gestion d’imagerie médicale
Conception d’un logiciel de gestion d’imagerie médicaleConception d’un logiciel de gestion d’imagerie médicale
Conception d’un logiciel de gestion d’imagerie médicaleNIYITEGEKA innocent
 
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)Gantner Technologies
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCGhodbane Heni
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueYosra ADDALI
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Nawres Farhat
 
Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...Haytam EL YOUSSFI
 
Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Mohamed Aziz Chetoui
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"étudesMohamed Boubaya
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Mohamed Boubaya
 
Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)
Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)
Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)Ghali Rahma
 
pfe_final.pptx
pfe_final.pptxpfe_final.pptx
pfe_final.pptxhani911563
 
Présentation PFE - MarouaBouhachem VersionFinale
Présentation PFE - MarouaBouhachem VersionFinalePrésentation PFE - MarouaBouhachem VersionFinale
Présentation PFE - MarouaBouhachem VersionFinaleMaroua Bouhachem
 
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...mouafekmazia
 
Presentation d'un logiciel de GRH
Presentation d'un logiciel de GRHPresentation d'un logiciel de GRH
Presentation d'un logiciel de GRHRiadh K.
 
Mémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventionsMémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventionsMohamed Arar
 
Outpatient Department System (OPD)
Outpatient Department System (OPD) Outpatient Department System (OPD)
Outpatient Department System (OPD) Ben Ahmed Zohra
 

Tendances (20)

rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSAT
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Conception d’un logiciel de gestion d’imagerie médicale
Conception d’un logiciel de gestion d’imagerie médicaleConception d’un logiciel de gestion d’imagerie médicale
Conception d’un logiciel de gestion d’imagerie médicale
 
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
Conception et Réalisation d’un Système de Vote Electronique (Blondel Seumo)
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...Deep Learning : Application à la reconnaissance d’objets de classes multiples...
Deep Learning : Application à la reconnaissance d’objets de classes multiples...
 
Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...
 
Rapport de projet de fin d"études
Rapport de projet de fin d"étudesRapport de projet de fin d"études
Rapport de projet de fin d"études
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...
 
Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)
Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)
Rapport-PFE2013-RahmaGhali-Gestion des Candidatures(Jaas,Primefaces,JFS2,JPA)
 
pfe_final.pptx
pfe_final.pptxpfe_final.pptx
pfe_final.pptx
 
Présentation PFE - MarouaBouhachem VersionFinale
Présentation PFE - MarouaBouhachem VersionFinalePrésentation PFE - MarouaBouhachem VersionFinale
Présentation PFE - MarouaBouhachem VersionFinale
 
Pfe 2015
Pfe 2015Pfe 2015
Pfe 2015
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
Rapport Projet De Fin D'étude de Conception et développement d’une applicatio...
 
Presentation d'un logiciel de GRH
Presentation d'un logiciel de GRHPresentation d'un logiciel de GRH
Presentation d'un logiciel de GRH
 
Mémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventionsMémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventions
 
Outpatient Department System (OPD)
Outpatient Department System (OPD) Outpatient Department System (OPD)
Outpatient Department System (OPD)
 

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

Cours gratuit.com--id-2614
Cours gratuit.com--id-2614Cours gratuit.com--id-2614
Cours gratuit.com--id-2614SergeCowouvi1
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientTaieb Kristou
 
Conception et développement d'une marketplace basée sur l'architecture micros...
Conception et développement d'une marketplace basée sur l'architecture micros...Conception et développement d'une marketplace basée sur l'architecture micros...
Conception et développement d'une marketplace basée sur l'architecture micros...Adem Amen Allah Thabti
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesBenjamin Vidal
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfnesrine haloui
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
2022IMTA0340_Begout-Pierre.pdf
2022IMTA0340_Begout-Pierre.pdf2022IMTA0340_Begout-Pierre.pdf
2022IMTA0340_Begout-Pierre.pdfMohammedElazhari2
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Yasmine Lachheb
 
2009 these servant (1)
2009 these servant (1)2009 these servant (1)
2009 these servant (1)bessem ellili
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifsSafaAballagh
 

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)

Poly
PolyPoly
Poly
 
Cours gratuit.com--id-2614
Cours gratuit.com--id-2614Cours gratuit.com--id-2614
Cours gratuit.com--id-2614
 
Deploy automatic in the cloud
Deploy automatic in the cloudDeploy automatic in the cloud
Deploy automatic in the cloud
 
Belwafi bilel
Belwafi bilelBelwafi bilel
Belwafi bilel
 
Belwafi bilel
Belwafi bilelBelwafi bilel
Belwafi bilel
 
OpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revientOpenERP - Gestion de prix de revient
OpenERP - Gestion de prix de revient
 
Fourth year internship report
Fourth year internship reportFourth year internship report
Fourth year internship report
 
Conception et développement d'une marketplace basée sur l'architecture micros...
Conception et développement d'une marketplace basée sur l'architecture micros...Conception et développement d'une marketplace basée sur l'architecture micros...
Conception et développement d'une marketplace basée sur l'architecture micros...
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
 
pfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdfpfe_rapport_poste_licence_LFIG.pdf
pfe_rapport_poste_licence_LFIG.pdf
 
Rapport
RapportRapport
Rapport
 
Algo
AlgoAlgo
Algo
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
these_sample
these_samplethese_sample
these_sample
 
rapport_stage_TBLB.pdf
rapport_stage_TBLB.pdfrapport_stage_TBLB.pdf
rapport_stage_TBLB.pdf
 
2022IMTA0340_Begout-Pierre.pdf
2022IMTA0340_Begout-Pierre.pdf2022IMTA0340_Begout-Pierre.pdf
2022IMTA0340_Begout-Pierre.pdf
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
 
Cours matlab
Cours matlabCours matlab
Cours matlab
 
2009 these servant (1)
2009 these servant (1)2009 these servant (1)
2009 these servant (1)
 
Gestion des actifs applicatifs
Gestion des actifs applicatifsGestion des actifs applicatifs
Gestion des actifs applicatifs
 

Plus de Hadjer BENHADJ DJILALI

Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...
Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...
Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...Hadjer BENHADJ DJILALI
 
Présentation du concours de développement de jeux vidéo Algeria Game challenge
Présentation du concours de développement de jeux vidéo Algeria Game challengePrésentation du concours de développement de jeux vidéo Algeria Game challenge
Présentation du concours de développement de jeux vidéo Algeria Game challengeHadjer BENHADJ DJILALI
 
Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...
Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...
Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...Hadjer BENHADJ DJILALI
 
Qualité de Service dans les Réseaux Mobiles Ad Hoc
Qualité de Service   dans les  Réseaux Mobiles Ad HocQualité de Service   dans les  Réseaux Mobiles Ad Hoc
Qualité de Service dans les Réseaux Mobiles Ad Hoc Hadjer BENHADJ DJILALI
 

Plus de Hadjer BENHADJ DJILALI (7)

Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...
Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...
Parallélisation d'algorithmes de graphes avec MapReduce sur un cluster d'ordi...
 
Présentation du concours de développement de jeux vidéo Algeria Game challenge
Présentation du concours de développement de jeux vidéo Algeria Game challengePrésentation du concours de développement de jeux vidéo Algeria Game challenge
Présentation du concours de développement de jeux vidéo Algeria Game challenge
 
Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...
Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...
Forwarding Group Multicast Protocol (FGMP) for Multihop, Mobile Wireless Netw...
 
Qualité de Service dans les Réseaux Mobiles Ad Hoc
Qualité de Service   dans les  Réseaux Mobiles Ad HocQualité de Service   dans les  Réseaux Mobiles Ad Hoc
Qualité de Service dans les Réseaux Mobiles Ad Hoc
 
Grille de calule
Grille de caluleGrille de calule
Grille de calule
 
Réseaux Mobiles
Réseaux MobilesRéseaux Mobiles
Réseaux Mobiles
 
MobDHop
MobDHopMobDHop
MobDHop
 

Dernier

QCM Réseaux informatique V19.02.2017.pdf
QCM Réseaux informatique V19.02.2017.pdfQCM Réseaux informatique V19.02.2017.pdf
QCM Réseaux informatique V19.02.2017.pdfAyoub893663
 
2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx
2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx
2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptxBassamRhouma
 
rapport stage OCP : Elaboration plan des machines : La machine stockeuse et ...
rapport stage OCP : Elaboration plan des machines :  La machine stockeuse et ...rapport stage OCP : Elaboration plan des machines :  La machine stockeuse et ...
rapport stage OCP : Elaboration plan des machines : La machine stockeuse et ...NiHad27
 
webinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdf
webinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdfwebinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdf
webinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdfInstitut de l'Elevage - Idele
 
webinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdf
webinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdfwebinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdf
webinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdfInstitut de l'Elevage - Idele
 
webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...
webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...
webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...Institut de l'Elevage - Idele
 

Dernier (6)

QCM Réseaux informatique V19.02.2017.pdf
QCM Réseaux informatique V19.02.2017.pdfQCM Réseaux informatique V19.02.2017.pdf
QCM Réseaux informatique V19.02.2017.pdf
 
2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx
2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx
2022-PRESENTATION DE PROJET FIN D'ETUDE-REHOUMA BASSEM.pptx
 
rapport stage OCP : Elaboration plan des machines : La machine stockeuse et ...
rapport stage OCP : Elaboration plan des machines :  La machine stockeuse et ...rapport stage OCP : Elaboration plan des machines :  La machine stockeuse et ...
rapport stage OCP : Elaboration plan des machines : La machine stockeuse et ...
 
webinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdf
webinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdfwebinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdf
webinaire eBIS n°9 La génétique du Méthane_01_20240321_DBoichard_contexte.pdf
 
webinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdf
webinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdfwebinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdf
webinaire eBIS n°9 La génétique du Méthane_02_20240321_SFresco_Methabreed.pdf
 
webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...
webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...
webinaire eBIS n°9 La génétique du Méthane_03_20240321_JPromp_presentation_Mé...
 

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
  • 6. Table des matières Introduction générale État de l’art 1 Notions sur les architectures et la programmation parallèle 1 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Architecture parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Sources de parallélisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1 Parallélisme de contrôle . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.2 Parallélisme de données . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.3 Parallélisme de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Classification des architectures parallèles . . . . . . . . . . . . . . . . . . . 3 1.4.1 La classification de Michael J. FLYNN (1972) . . . . . . . . . . . . 3 1.4.2 Classification de Raina . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Classification selon la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5.1 Machines parallèles à mémoire partagée . . . . . . . . . . . . . . . . 8 1.5.2 Machines parallèles à mémoire distribuée . . . . . . . . . . . . . . . 8 1.6 Les mesures de performances des architectures parallèles . . . . . . . . . . 9 1.6.1 Le temps d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.6.2 L’accélération (SpeedUp) . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6.3 L’efficacité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7 Architecture parallèle actuelle . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.7.1 Processeur graphique . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.7.2 Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.7.2.1 Les modèles de service de cloud . . . . . . . . . . . . . . . 12 1.7.3 Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.7.3.1 Concept d’un cluster informatique . . . . . . . . . . . . . 13 1.7.4 Grille informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.7.4.1 Type de grille . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7.4.2 Caractéristique d’une grille informatique . . . . . . . . . . 14 1.7.5 Le cluster IBN BADIS . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7.5.1 Architecture du cluster IBN BADIS . . . . . . . . . . . . 15
  • 7. 1.8 La programmation séquentielle et parallèle . . . . . . . . . . . . . . . . . . 16 1.8.1 La programmation séquentielle . . . . . . . . . . . . . . . . . . . . 16 1.8.2 La programmation parallèle . . . . . . . . . . . . . . . . . . . . . . 17 1.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 Étude du modèle MapReduce ,du framework qui l’implémente : Ha- doop et le produit de recherche MR-MPI 18 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Modèle de programmation MapReduce . . . . . . . . . . . . . . . . . . . . 18 2.2.1 Qu’est ce que MapReduce ? . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.1.2 Principe de fonctionnement . . . . . . . . . . . . . . . . . 19 2.2.2 Caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.3 Utilisateurs de MapReduce . . . . . . . . . . . . . . . . . . . . . . . 22 2.3 Framework Hadoop solution d’Apache . . . . . . . . . . . . . . . . . . . . 23 2.3.1 Qu’est ce que Hadoop ? . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.1.2 Le système de fichier HDFS . . . . . . . . . . . . . . . . . 23 2.3.1.3 Architecture de Hadoop . . . . . . . . . . . . . . . . . . . 25 2.3.2 Fonctionnement de MapReduce dans l’architecture de Hadoop . . . 26 2.3.3 Avantages de la solution . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4 Produit de recherche MR-MPI (Map Reduce Message Passing Interface ) . 28 2.4.0.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4.0.2 La librairie MR-MPI . . . . . . . . . . . . . . . . . . . . . 29 2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3 Étude de l’ algorithme Branch and Bound et des stratégies de parallé- lisation 31 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2 La méthode Branch and Bound . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.0.3 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.1 Principe de fonctionnement : Opérateurs d’un algorithme B & B . 31 3.2.2 Séparation (Branch) . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2.3 Évaluation (Bound) . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.2.4 Élagage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.5 Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.6 Algorithme Branch & Bound . . . . . . . . . . . . . . . . . . . . . 34 3.3 Stratégie de parcours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3.1 En largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.3.2 En profondeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3.3 Meilleur évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.4 Plus prioritaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3.5 Stratégie mixte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
  • 8. 3.4 Algorithmes B&B parallèles . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.4.1 Notion sur les Algorithmes B&B parallèles . . . . . . . . . . . . . . 37 3.4.1.1 Workpool . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4.1.2 Base des connaissances d’un algorithme Branch & Bound parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.5 Paramètres des algorithmes B&B parallèle . . . . . . . . . . . . . . . . . . 38 3.5.1 Division du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5.2 Interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5.3 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.6 Classification des algorithmes B&B parallèles . . . . . . . . . . . . . . . . 39 3.6.1 Classification de Melab . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.6.1.1 Modèle multiparamétrique parallèle . . . . . . . . . . . . 39 3.6.1.2 Le modèle parallèle de l’exploration de l’arbre . . . . . . 39 3.6.1.3 L’évaluation parallèle des limites . . . . . . . . . . . . . 40 3.6.1.4 Évaluation parallèle d’une seule limite / Solution . . . . 41 3.7 Mesures de performance pour les algorithmes B&B parallèles . . . . . . . . 41 3.7.1 Qualité de la solution . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.7.2 Nombre de sous problème . . . . . . . . . . . . . . . . . . . . . . . 41 3.7.3 Accélération / efficacité . . . . . . . . . . . . . . . . . . . . . . . . 42 3.8 Complexité d’un algorithme B&B parallèle . . . . . . . . . . . . . . . . . 42 3.8.1 Complexité en temps de calcul . . . . . . . . . . . . . . . . . . . . 42 3.8.2 Complexité de mémoire . . . . . . . . . . . . . . . . . . . . . . . . 42 3.8.3 Complexité de communication . . . . . . . . . . . . . . . . . . . . 43 3.9 Approche de déploiement d’un algorithme B&B parallèle . . . . . . . . . . 43 3.9.1 Optimisation de communication . . . . . . . . . . . . . . . . . . . 43 3.9.2 Tolérance aux pannes . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.9.3 Passage à l’échelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Contribution 4 Conception d’un algorithme Branch and Bound parallèle basé sur MapReduce 45 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Le problème Flow-Shop de permutation . . . . . . . . . . . . . . . . . . . 45 4.2.1 Résolution du Flow-Shop de permutation . . . . . . . . . . . . . . 47 4.2.1.1 Makespan . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.2 Approche du Flow-Shop avec méthode exacte . . . . . . . . . . . . 48 4.2.2.1 Résolution du Flow-Shop de permutation avec l’algorithme B&B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.2.2.2 La borne inférieure . . . . . . . . . . . . . . . . . . . . . . 49 4.2.2.3 La borne supérieure . . . . . . . . . . . . . . . . . . . . . 50
  • 9. 4.2.3 Résolution parallèle du Flow-Shop de permutation avec MapReduce 51 4.2.3.1 Application du modèle MapReduce sous Hadoop au FSP 52 4.2.3.2 Les Stratégies de parcours implémentés . . . . . . . . . . 55 4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5 Implémentation et tests d’évaluation avec Hadoop 58 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2 Présentation de l’environnement de travail . . . . . . . . . . . . . . . . . . 58 5.2.1 Systèmes d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2.2 Le framework Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2.3 Eclipse , Sun java 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2.4 Cloudera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.3 Présentation des données utilisées pour les tests "Benchmarks" . . . . . . . 59 5.4 Implémentation de l’algorithme B&B parallèle sous MapReduce pour le pro- blème FSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.4.1 Implémentation dans MapReduce . . . . . . . . . . . . . . . . . . . 61 5.4.1.1 Programmation Hadoop et utilisation . . . . . . . . . . . . 61 5.4.1.2 Diagramme de classes . . . . . . . . . . . . . . . . . . . . 61 5.4.2 Analyse du parcours par profondeur . . . . . . . . . . . . . . . . . . 63 5.4.3 Analyse du parcours par largeur . . . . . . . . . . . . . . . . . . . 64 5.5 Tests de validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.5.1 Tests sur un cluster à nœud unique (SingleNode) . . . . . . . . . . 65 5.5.2 Tests sur le cluster IBN BADIS . . . . . . . . . . . . . . . . . . . . 67 5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Conclusion générale Bibliographie Annexes Table des figures 1.1 Principe du calcul parallèle [2]. . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Parallélisme de contrôle [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Parallélisme de flux [3]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Architecture SISD [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Architecture de MISD [5]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 Architecture SIMD [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  • 10. 1.7 Architecture MIMD à mémoire partagée [4]. . . . . . . . . . . . . . . . . . 5 1.8 Accès mémoire UMA [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.9 Accès mémoire CC-NUMA [2]. . . . . . . . . . . . . . . . . . . . . . . . . 7 1.10 Accès mémoire COMA [2]. . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.11 Classification MIMD de Rania [4]. . . . . . . . . . . . . . . . . . . . . . . . 7 1.12 Machine parallèle à mémoire partagée [3]. . . . . . . . . . . . . . . . . . . 8 1.13 Machine parallèle à mémoire distribuée [3]. . . . . . . . . . . . . . . . . . 9 1.14 Différentes architectures de réseau d’interconnexion [3]. . . . . . . . . . . . 9 1.15 Analyse de résultat de l’accélération [2]. . . . . . . . . . . . . . . . . . . . 10 1.16 Exemple de processeur graphique NVIDIA avec un CPU [6]. . . . . . . . . 11 1.17 Image illustre la différence technique entre les 3 modèles de cloud [8]. . . . 12 1.18 Image d’un cluster de machines cher Yahoo ! [10]. . . . . . . . . . . . . . . 13 1.19 Image illustre architecture d’une grille informatique [12]. . . . . . . . . . . 14 1.20 Image du cluster IBN BADIS au CERIST. . . . . . . . . . . . . . . . . . . 15 1.21 Architecture du cluster IBN BADIS au CERIST. . . . . . . . . . . . . . . 16 2.1 Illustre les deux opérations essentielles dans le modèle MapReduce [21]. . . 20 2.2 Illustre un aperçu de l’exécution du fonctionnement des étapes de MapRe- duce [22]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Illustre certaines entreprises et universités qui utilisent le modèle MapRe- duce [19]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4 Illustre l’architecture du HDFS [24]. . . . . . . . . . . . . . . . . . . . . . . 25 2.5 Illustre l’architecture générale de Hadoop [19]. . . . . . . . . . . . . . . . . 26 3.1 Structure général d’un arbre de recherche Branch&Bound [32]. . . . . . . 33 3.2 Stratégie de parcours par largeur [32] . . . . . . . . . . . . . . . . . . . . . 35 3.3 Stratégie de parcours en profondeur [32]. . . . . . . . . . . . . . . . . . . . 35 3.4 Stratégie de parcours par meilleur évaluation [32]. . . . . . . . . . . . . . . 36 3.5 Illustre le modèle multiparamètrique parallèle [3]. . . . . . . . . . . . . . . 39 3.6 illustre le modèle parallèle de l’exploration de l’arbre [3]. . . . . . . . . . . 40 3.7 Illustre le d’évaluation parallèle des limites [3]. . . . . . . . . . . . . . . . 41 4.1 Ilustre un atelier de type Flow-Shop. . . . . . . . . . . . . . . . . . . . . . 46 4.2 Diagramme de Gantt de l’exécution de la séquence 1-2. . . . . . . . . . . . 46 4.3 Diagramme de Gantt de l’exécution de la séquence 1-2. . . . . . . . . . . . 47 4.4 Représentation du problème de Flow-Shop dans l’arbre de recherche Branch & Bound. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.5 Architcture du HDFS qui montre la communication entre NameNode et DataNodes pour l’application du FSP . . . . . . . . . . . . . . . . . . . . 53 4.6 Architecture logique de MapReduce pour FSP. . . . . . . . . . . . . . . . 54 5.1 Benchmark artificiel de 6 tâches et 5 machines à partir du benchmark 20*5 de E .Taillard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
  • 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
  • 27. CHAPITRE 1. NOTIONS SUR LES ARCHITECTURES ET LA PROGRAMMATION PARALLÈLE 1.6.2 L’accélération (SpeedUp) Le gain en performance peut s’exprimer en termes d’accélération. Suivant la loi de Amdahl l’accélération est le rapport du temps d’exécution séquentielle sur le temps d’exé- cution parallèle.Plus la partie parallélisable d’un programme est grand, plus l’accélération est meilleure. S(p) = Ts Tp Tel que : S (p) c’est l’accélération, Ts c’est le temps séquentiel, Tp temps parallèle. © La loi d’Amdahl s’exprime aussi avec [2] : S(p) = 1 (1 − α) + α P ° P : Le nombre de processeurs. ° α : La fraction de la partie parallélisable du programme. Figure 1.15: Analyse de résultat de l’accélération [2]. ¯ S(p) < 1, On ralentit ! mauvaise parallélisation. ¯ 1< S(p) < p, Normal. ¯ S(p) > p, Hyper-accélération analyser & justifier. ¯ S(p)=p , Accélération idéal. 1.6.3 L’efficacité Efficacité une métrique qui représente le taux d’utilisation des ressources, ou F fraction de l’accélération idéale dans l’architecture parallèle. L’efficacité est inférieure ou égale à 1. 10
  • 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