INTRODUCTION AU BIG DATA
Instructrice : Dr Abir KHALDI 2021-2022
Dr Abir KHALDI 1
Chapitre 2
Chapitre 3 : MapRedue
Plan MapReduce : Présentation MapReduce : Principe M ap R e d uce : rogramma P ti on onc F ti onne ll e MapReduce : Application sur des paires(clé, valeur) MapReduce : Fonctionnalité MapReduce : Architecture MapReduce : Avantages MapReduce : Critiques MapReduce : Lab
Dr Abir KHALDI 2
MapReduce, un modèle de programmation qui fournit un cadre pour automatiser le calcul parallèle sur des données massives . Ce modèle a été proposé dans les années 2000, par deux ingénieurs de chez Google, qui ont observé qu'un grand nombre des traitements massivement parallèles, mis en place pour l es b eso ns i d e l eur mo t eur d e rec h erc h e, su va en i i t une stratégie de parallélisation identique.
pour l es b eso ns i d e l eur mo t eur d e rec h erc h e, su va en i i t
De ces observations est né le modèle de programmation MapReduce, décrit pour la première fois en 2004 dans un article de recherche. Son principe général est que toute parallélisation de traitement sur des données massives peut s'effectuer uniquement à l'aide de deux types d'opérations : une opération map et une opération reduce.Dr Abir KHALDI 3
régner pour un problème initial donné, à: Régner : résoudre les sous-problèmes indépendamment soit de manière récursive, soit directement s'ils sont de petite taille; Combiner : construire la solution du problème initial en
MapReduce c'est Divisez pour distribuer pour régner en ce sens que la stratégie mise en place pour exécuter un calcul sur des données massives consiste à découper les données en sous-ensembles de plus petite taille, que nous appellerons des lots ou des fragments dans la suite, et à affecter chaque lot à une machine du cluster permettant ainsi leur traitement en parallèle. Il suffira ensuite d'agréger l'ensemble des résultats intermédiaires obtenus pour chaque lot pour construire le résultat final.
Dr Abir KHALDI 4
Publicité
MapReduce s'inspire très largement du paradigme de programmation et plus particulièrement des opérateurs de listes map et reduce. En programmation fonctionnelle: map consiste à appliquer une même fonction à tous les éléments de la liste;
reduce applique une fonction récursivement à une liste et retourne un seul résultat;
Map et reduce sont des opérateurs génériques et leur combinaison permet donc de modéliser énormément de problèmes.
Dr Abir KHALDI 5
- Pour rendre le fonctionnement de MapReduce plus concret, nous allons
Prenons en entrée une collection de documents textuels : l'objectif de
collection.
fichier ; alors, ce n'est vraiment pas un problème difficile et les quelques lignes de code ci-dessous peuvent répondre à ce problème.
On utilise ici un dictionnaire qui est une collection d'éléments de type(clé, valeur). La clé correspond au mot et la valeur un entier correspondant à son nombre d'occurrences. Si votre texte est assez volumineux comme l'image de la collection Wikipedia qui contient environ 27 milliards de mots (source : Wikipedia), cette solution séquentielle ne suffira pas et il est nécessaire de réaliser ce comptage de manière distribuée. C'est là qu'intervient MapReduce.
Dr Abir KHALDI 6
Nous allons travailler sur deux extraits du texte de la chanson "Le Jour se lève" de Grand Corps Malade.
Dr Abir KHALDI 7
Nous allons donc supposer que nos données d'entrée ont été découpées en différents fragments et qu'une opération de simplification a été appliquée sur chaque fragment pour supprimer les caractères de ponctuation, transformer chaque mot en son singulier ("nos" devient "notre") et ne garder que les mots de plus de 3 caractères. Nous pouvons représenter très facilement ces fragments sous la forme de paires(clé, valeur), en prenant comme clé le nom du fichier et comme valeur la chaîne de caractères correspondant au contenu
Publicité
Il nous faut maintenant déterminer la clé à utiliser pour l'opération map. La manière dont nous avons répondu au problème en séquentiel nous oriente tout naturellement vers le choix de prendre comme clés les mots du texte. L'étape suivante est d'écrire le code de l'opération map selon le schéma imposé par MapReduce, c'est-à-dire qu'elle doit retourner une liste de paires(clé, valeur). Dans le cas de WordCount, l'opération map va donc décomposer le texte du fragment fourni en entrée et elle va générer pour chaque mot une paire(mot, 1). Nous pouvons écrire tout cela très simplement en python.
Dr Abir KHALDI 9
Nous avons donc maintenant tout ce qu'il faut pour l'étape MAP de MapReduce qui consiste à appliquer l'opération map à chaque fragment en parallèle comme l'illustre la figure ci-dessous.
A la fin de l'étape MAP, nous avons donc plusieurs listes de paires(clé, valeur). Nous sommes maintenant capables de regrouper et de trier, par clé commune, les résultats intermédiaires fournis par l'étape MAP. Cela correspond à l'étape SHUFFLE and SORT.
Nous avons maintenant un ensemble de paires(clé, listedevaleurs). Il nous reste maintenant à écrire le code de l'opération reduce, selon le schéma imposé par MapReduce. Pour WordCount, l'opération reduce consiste à sommer toutes les valeurs de la liste associée à une clé. Nous pouvons à nouveau écrire cela très simplement en python. L'étape REDUCE de MapReduce peut donc être appliquée. Elle consiste à appliquer l'opération reduce à chaque paire(clé, listedevaleurs)en parallèle.
Dr Abir KHALDI 12
Le schéma ci-dessous illustre l'application des différentes étapes de MapReduce à notre exemple.
La généralisation du paradigme de conception d'algorithmes diviser pour régner au cadre distribué. Un modèle de programmation reposant sur la combinaison de deux fonctions simples, map et reduce, inspirées de la Un Framework d'exécution prenant en charge le déploiement et la distribution des calculs sur un cluster.
Le rôle des développeurs d ' applications distribuées, c ' est donc de penser en MapReduce : Choisir une manière de découper les données afin que l'opération MAP soit parallélisable. Choisir la clé à utiliser pour le problème ciblé. Écrire le code de la fonction pour l'opération MAP. Écrire le code de la fonction pour l'opération REDUCE.
Dr Abir KHALDI 14
Hadoop s'occupe du traitement de données grace à MapReduce, à nouveau avec
- Le **job** **tracker** **est** **un** **processus** **maître** **qui** **va** **se** **charger** **de** **l'ordonnancement**
(du client) la ou les tâches MapReduce à exécuter (un .jar Java) ainsi que les
Publicité
en charge de planifier l'exécution des tâches et de les distribuer sur des task
optimiser la colocalisation traitements/données
optimiser la colocalisation traitements/données
Un task tracker est une unité de calcul du cluster. Il assure, en lançant une nouvelle machine virtuelle java (JVM), l'exécution et le suivi des tâches MAP ou REDUCE s'exécutant sur son noeud et qu'il reçoit du job tracker. Il dispose d'un nombre limité de slots d'exécution et donc un nombre limité de tâches MAP, REDUCE ou SHUFFLE pouvant s'éxécuter simultanément sur le noeud. Il est aussi en communication constante avec le job tracker pour l'informer de l'état d'avancement des tâches ( heartbeat call).
le problème de la tolérance aux pannes persiste car en cas de défaillance, le job tracker, informé ou sans nouvelle du task tracker, doit pouvoir ordonner la réexécution de la tâche.
Dr Abir KHALDI 15
MapReduce fonctionne sur un large cluster de machines et est hautement scalable . Il peut être implémenté sous plusieurs formes grâce aux différents langages de programmation comme Java, C# et C++.
routines de bibliothèques peuvent être utilisées pour créer des programmes parallèles sans se soucier des communications infra-cluster,
.
Les programmeurs sans expérience dans le domaine des systèmes parallèles et distribués peuvent facilement utiliser des ressources de larges systèmes distribués.
Afin de distribuer les données entrées et de souder les résultats, il opère en parallèle sur des clusters massifs . La taille d’un cluster n’a pas d’impact sur le traitement des données. De fait, les tâches peuvent etre réparties sur n’importe quelle quantité de serveurs.
Dr Abir KHALDI 17
Publicité
MapReduce et Hadoop simplifient le développement de logiciels. Il est disponible dans plusieurs langages dont C, C++, Java, Ruby, Pearl et Python. Les programmeurs peuvent utiliser les bibliothèques MapReduce notamment basé sur Java 8 pour créer des tâches sans se soucier de la communication ou de la coordination entre les nœuds. Le principal avantage de ce framework est sa tolérance aux erreurs . Une tâche est transférée d’un nœud à l’autre, et si le nœud principal remarque qu’un nœud a été silencieux pendant un intervalle de temps plus long que prévu, le nœud principal assigne à nouveau la tâche à un autre nœud. Ceci crée une résilience et facilite le lancement de cette structure logicielle sur des serveurs peu coûteux.
Dr Abir KHALDI 18
MapReduce ne permet de résoudre qu’un faible nombre de problèmes.
MapReduce utilise des entrées de fichiers et ne prenne pas en charge suffisamment de schémas ceci empêchent l’augmentation
données les plus communes.
Dr Abir KHALDI 19
Voir Lab1 . Hadoop – MapReduce
.
Dr Abir KHALDI 20
[email protected]
Dr Abir KHALDI 21