Hadoop : une plate-forme d exécution de programmes Map-Reduce



Documents pareils
Hadoop : une plate-forme d exécution de programmes Map-Reduce

Hadoop : une plate-forme d exécution de programmes Map-Reduce

Certificat Big Data - Master MAthématiques

Introduction à MapReduce/Hadoop et Spark

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Programmation parallèle et distribuée (Master 1 Info )

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

Programmation parallèle et distribuée

Programmation parallèle et distribuée


MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Introduc)on à Map- Reduce. Vincent Leroy

Big Data Concepts et mise en oeuvre de Hadoop

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Notes de cours Practical BigData

L écosystème Hadoop Nicolas Thiébaud Tuesday, July 2, 13

Labs Hadoop Février 2013

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

Introduction à Hadoop & MapReduce

Ricco Rakotomalala R.R. Université Lyon 2

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Cartographie des solutions BigData

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Big Data : utilisation d un cluster Hadoop HDFS Map/Reduce HBase

Hadoop / Big Data MBDS. Benjamin Renaut <renaut.benjamin@tokidev.fr>

HADOOP ET SON ÉCOSYSTÈME

Big Data, un nouveau paradigme et de nouveaux challenges

Département Informatique 5 e année Hadoop: Optimisation et Ordonnancement

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Cloud Computing MapReduce Année académique 2014/15

Tables Rondes Le «Big Data»

Les technologies du Big Data

Bases de données documentaires et distribuées Cours NFE04

4 Exemples de problèmes MapReduce incrémentaux

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Les participants repartiront de cette formation en ayant une vision claire de la stratégie et de l éventuelle mise en œuvre d un Big Data.

Introduction aux algorithmes MapReduce. Mathieu Dumoulin (GRAAL), 14 Février 2014

R+Hadoop = Rhadoop* Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata!

Implémentation parallèle de certains algorithmes de fouille de données avec le framework MapReduce

Importation et exportation de données dans HDFS

Fouille de données massives avec Hadoop

Maîtriser les technologies Big Data pour obtenir des résultats en quasi-temps réel

Big Data. Les problématiques liées au stockage des données et aux capacités de calcul

BlobSeerFS : un système de fichiers pour le calcul hautes performances sous Hadoop MapReduce

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Anticiper et prédire les sinistres avec une approche Big Data

7 Développement d une application de MapReduce

Offre formation Big Data Analytics

Hadoop, Spark & Big Data 2.0. Exploiter une grappe de calcul pour des problème des données massives

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

Panorama des solutions analytiques existantes

Les quatre piliers d une solution de gestion des Big Data

M2 GL UE DOC «In memory analytics»

Avant-propos. Organisation du livre

Systèmes Répartis. Pr. Slimane Bah, ing. PhD. Ecole Mohammadia d Ingénieurs. G. Informatique. Semaine Slimane.bah@emi.ac.ma

Livre. blanc. Solution Hadoop d entreprise d EMC. Stockage NAS scale-out Isilon et Greenplum HD. Février 2012

BIG DATA en Sciences et Industries de l Environnement

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Document réalisé par Khadidjatou BAMBA

Vers une plate-forme MapReduce tolérant les fautes byzantines

20 ans du Master SIAD de Toulouse - BigData par l exemple - Julien DULOUT - 22 mars ans du SIAD -"Big Data par l'exemple" -Julien DULOUT

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant

VMware Infrastructure The New Computing Platform. Stéphane CROIX Systems Engineer

Stephan Hadinger, Sr. Mgr Solutions Architecture, AWS. Salon du Big Data 11 mars 2015

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Analytics & Big Data. Focus techniques & nouvelles perspectives pour les actuaires. Université d Eté de l Institut des Actuaires Mardi 8 juillet 2014

Professeur-superviseur Alain April

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

ÉCOLE DE TECHNOLOGIE SUPÉRIEURE UNIVERSITÉ DU QUÉBEC RAPPORT DE PROJET PRÉSENTÉ À L ÉCOLE DE TECHNOLOGIE SUPÉRIEURE

«clustering» et «load balancing» avec Zope et ZEO

Remote Method Invocation (RMI)

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Cours 8 Not Only SQL

TP Bases de données réparties

Systèmes de fichiers répartis

Créer et partager des fichiers

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Oracle Maximum Availability Architecture

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Bases de Données NoSQL

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Hadoop, les clés du succès

Java DataBaseConnectivity

Change the game with smart innovation

Introduction à ElasticSearch

Acquisition des données - Big Data. Dario VEGA Senior Sales Consultant

Le BigData, aussi par et pour les PMEs

Groupe de Discussion Big Data Aperçu des technologies et applications. Stéphane MOUTON

Université de Liège Faculté des Sciences Appliquées Institut Montefiore ETUDE DES FRAMEWORK DISTRIBUÉS DE GRILLES DE DONNÉES

Le cloud computing au service des applications cartographiques à haute disponibilité

Transcription:

Hadoop : une plate-forme d exécution de programmes Map-Reduce Jonathan Lejeune École des Mines de Nantes Janvier 2015 CODEL 2014/2015 J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 1 / 61

Motivations calcul "data-intensive" des volumes de données de plus en plus gros (> 1 To) exemples : parsage de documents, de pages web, de logs, etc. accès à des flux de données : une écriture pour beaucoup de lectures Coût : Du matériel de moins en moins cher et de plus en plus puissant virtualisation et partage des ressources physiques Cloud Computing = informatique à la demande J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 2 / 61

Exemple de calcul : le word-count En entrée : un ou plusieurs (gros) fichiers textes En sortie : le nombre d occurrences de chaque mot du texte J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 3 / 61

Solution word-count non-parallèle En supposant que l espace mémoire est suffisamment grand Temps d exécution très grand (jour, mois, année?) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 4 / 61

Solution word-count parallèle Goulot d étranglement due au mutex global J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 5 / 61

le Map-Reduce Un paradigme de programmation et un environnement d exécution proposé par Google (2003) parallélisation de calcul manipulant de gros volumes de données dans des clusters de machines (centaines, milliers de CPU) un modèle de programmation fonctionnelle aucune modification des structures de données flux de données implicite l ordre des opérations n a pas d importance l environnement d exécution : permet d automatiser la parallélisation gère les éventuelles fautes (pannes) gère les communications entre les machines J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 6 / 61

le Map-Reduce Une transparence pour le programmeur : une parallélisation automatique sur l ensemble d unités de calcul en terme de : distribution des traitements distribution des données équilibrage de charge stockage et transfert de données tolérance aux pannes... J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 7 / 61

le Map-Reduce La masse de données d entrée est divisée en blocs appelés split qui seront traités par différentes tâches le calcul se fait en deux phases : Map et Reduce flux de donnée : un flux de paires de <clé,valeur> entre : les données d entrée et la phase de map phase de map et phase de reduce la phase de reduce et les données de sortie. Un programme MapReduce peut se résumer à deux fonctions la fonction de map : lit les données d entrée, fait son traitement et produit une sortie la fonction de reduce : lit les sorties produites par la phase de map, fait son traitement et produit les données de sortie Le programmeur doit juste fournir ces deux fonctions dans l environnement d exécution pour que son programme fonctionne!!! J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 8 / 61

Aperçu du flux de données J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 9 / 61

le Map-Reduce Schéma classique d un flux Map-Reduce Lecture d une grande quantité de données Map : extraire une information qui vous intéresse Shuffle : phase intermédiaire (cf. plus loin) Reduce : agrège, filtre, transforme, etc. Écriture du résultat En gardant ce schéma vous devez juste adaptez vos fonction Map et Reduce en fonction du problème que vous voulez résoudre. J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 10 / 61

la phase de Map un bloc de données (split) correspond à une tâche map Un élément du split (ex : ligne de fichier, tuple d une base de données, Objet sérialisé, etc.) est associé à une clé de type K1 A chaque clé de type K1 lue depuis le split, le processus map correspondant fait un appel à la fonction map(). la fonction map() produit dans le flux d information une liste de <clé,valeur> intermédiaire de type <K2,V2> Map : (K1,V1) list(k2,v2) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 11 / 61

la phase de Reduce le nombre de reduces est défini a priori par l utilisateur Une fois la phase de map terminée, agrégation en liste de toutes les valeurs intermédiaires de type V2 associées à une clé de type K2. A chaque clé de type K2 le processus reduce correspondant fait un appel à la fonction reduce(). la fonction reduce() produit dans le flux d information une liste de <clé,valeur> de type <K3,V3> Chaque paire <K3,V3> émise est enregistrée dans l ensemble de données de sortie Reduce : (K2, list(v2)) list(k3, V3) Remarque : bien souvent K2 = K3 J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 12 / 61

Exemple de flux de données avec le wordcount J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 13 / 61

Les fonctions Map et Reduce du wordcount J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 14 / 61

la phase de Shuffle transmission des données de la phase map vers la phase reduce Responsabilité des maps : stockage local partitionné des couples clé/valeur de sortie assignement déterministe des clés parmi nbreduce partitions (= partitionnement) une valeur de clé est associée à un unique reduce Responsabilité des reduces : copy téléchargement sur chaque map de la partition qui lui est associée merge agrégation de l ensemble des partitions téléchargées agrégation des valeurs pour une clé donnée sort tri des différentes clés définissant l ordre de lecture par le reduce : un ordre doit être défini pour chaque type de clé J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 15 / 61

Flux de données détaillé IMPORTANT J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 16 / 61

Flux de données détaillé du WordCount J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 17 / 61

Autres exemples Compteur de fréquence d accès sur des URL Map : des logs de requêtes de pages web en entrée et (URL,1) en sortie Reduce : ajoute les valeurs de chaque URL et sort le couple (URL, count) Même principe que le WordCount :) Index inversé Map : parser chaque document et émettre une séquence de (mot, docid) Reduce : pour chaque mot, sortir directement la liste de valeur associée : (mot,list<docid>) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 18 / 61

Environnement d exécution Bref historique 2003 : Première librairie MapReduce écrite par Google 2004 : papier fondateur du MapReduce à OSDI [Jeffrey Dean and Sanjay Ghemawat. MapReduce : Simplified Data Processing on Large Clusters] Plusieurs implémentations : Apache Hadoop Twister Skynetv Bash MapReduce etc. plus d informations : http ://en.wikipedia.org/wiki/mapreduce J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 19 / 61

La plate-forme Apache Hadoop MapReduce J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 20 / 61

Utilisateurs d Hadoop Amazon (EMR? Elastic MapReduce ) Facebook IBM : Blue Cloud Joost (video distribution) Last.fm (free internet radio) New York Times PowerSet (search engine natural laguage) Veoh (online video distribution) Yahoo! Plus d information sur http ://wiki.apache.org/hadoop/poweredby J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 21 / 61

Aperçu d Hadoop Plate-forme Map-reduce open-source écrite en JAVA créé par Doug Cutting en 2009 ( projets de la fondation Apache) un système de fichier distribué : Hadoop Distributed File System (HDFS) un ordonnanceur de programmes Map-Reduce une API Map-Reduce en JAVA, Python, C++ une interface utilisateur une interface administrateur J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 22 / 61

Architecture physique exécution sur une grille de machines Les machines sont groupées par rack généralement une architecture à 2 niveaux J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 23 / 61

HDFS : Hadoop Distributed File System Optimisé pour stocker de très gros fichiers les fichiers sont divisés en blocs (taille par défaut 128 Mo) Une architecture maître-esclave le maître HDFS : le Namenode les esclaves HDFS : les Datanodes les blocs sont stockés sur les Datanodes chaque bloc est répliqué sur différents Datanodes (par défaut 3 répliquas). lecture séquentielle écriture en mode append-only J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 24 / 61

HDFS : Schéma de stockage des blocs J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 25 / 61

HDFS : le Namenode responsable de la distribution et de la réplication des blocs Serveur d informations du HDFS pour le client HDFS stocke et gère les méta-données : liste des fichiers liste des blocs pour chaque fichier liste des Datanodes pour chaque bloc attributs des fichiers (ex : nom, date de création, facteur de réplication) logs toute méta-donnée et toute transaction sur un support persistant lectures/écritures créations/suppressions démarre à partir d une image de HDFS (fsimage) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 26 / 61

HDFS : le datanode stocke des blocs de données dans le système de fichier local maintient des méta-données sur les blocs possédés (ex : CRC) serveur de bloc de données et de méta-données pour le client HDFS heartbeat avec le Namenode message-aller vers le Namenode indiquant : son identité sa capacité totale, son espace utilisé, son espace restant message-retour depuis le Namenode : des commandes (copie de blocs vers d autres Datanodes, invalidation de blocs, etc.) en plus du heartbeat, informe régulièrement le Namenode des blocs qu il contient J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 27 / 61

HDFS : Lecture d un fichier J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 28 / 61

HDFS : Écriture d un fichier J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 29 / 61

HDFS : écriture et pipeline de données Le client : récupère la liste des Datanodes sur lesquels placer les différents répliquas écrit le bloc sur premier Datanode Le premier Datanode transfère les données au prochain Datanode dans le pipeline Quand tous les répliquas sont écrits, le client recommence la procédure pour le prochain bloc du fichier J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 30 / 61

HDFS :stratégie de placement des blocs Stratégie courante : un répliqua sur le rack local un second répliqua sur un autre rack un troisième répliqua sur un rack d un autre datacenter les répliquas supplémentaires sont placés de façon aléatoire Le client lit le plus proche répliqua J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 31 / 61

HDFS : tolérance aux fautes crash du Datanode : plus de heartbeat (détection par le Namenode) réplication distribuée (robustesse des données) crash du Namenode : sauvegarde des logs de transaction sur un support stable redémarrage sur la dernière image du HDFS et application des logs de transaction (recouvrement) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 32 / 61

HDFS : Secondary Namenode Problème : rares redémarrages du Namenode énorme quantité de logs de transaction : stockage conséquent redémarrage long car prise en compte de beaucoup de changements Solution : réduire la taille des logs utilisation d un (ou plusieurs) processus distant : Le Secondary NameNode : télécharge régulièrement les logs sur le Namenode crée une nouvelle image en fusionnant les logs avec l image HDFS renvoie la nouvelle image au Namenode J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 33 / 61

Hadoop Map-Reduce Gère les programmes clients Map-Reduce : exécution ordonnancement déploiement Deux versions notables : Version 0.x et 1.x : architecture purement maître-esclave Version 2.x YARN : architecture maître-esclave à deux niveaux (stable depuis oct 2013) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 34 / 61

Hadoop Map-Reduce 1.x : architecture le maitre Map-Reduce : le Jobtracker les esclaves Map-Reduce : les Tasktrackers J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 35 / 61

Hadoop Map-Reduce 1.x : rôles des différents processus Le jobtracker : gère l ensemble des ressources du système reçoit les jobs des clients ordonnance les différentes tâches des jobs soumis assigne les tâches aux Tasktrackers réaffecte les tâches défaillantes maintient des informations sur l état d avancement des jobs Un tasktracker : exécute les tâches données par le Jobtracker exécution des tâches dans une autre JVM (Child) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 36 / 61

Hadoop Map-Reduce 1.x : Soumission d un job J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 37 / 61

Vers une deuxième version Architecture trop centralisée de Hadoop 1.x : vulnérable aux défaillances du JobTracker goulot d étranglement (passage à l échelle difficile) mélange de la gestion des ressources avec la gestions des jobs Apport de Hadoop 2.x (YARN) : séparation de la gestion des ressources du cluster et de la gestion des jobs MapReduce généralisation de la gestion des ressources du cluster applicable à toute application J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 38 / 61

Hadoop Map-Reduce v2 : YARN Répartition des fonctionnalités du Jobtracker : le ResourceManager (RM) : JVM s exécutant sur le nœud maître contrôle toutes les ressources du cluster et l état des machines esclaves ordonnance les requêtes clientes un ApplicationMaster (AM) par application soumise (= 1 ou plusieurs Job) JVM s exécutant sur une machine esclave négocie avec le RM les ressources nécessaires à l application Répartition des fonctionnalités du Tasktracker sur une machine esclave : un NodeManager (NM) : une JVM par machine esclave gère les ressources du nœud des Containers : une abstraction de ressources sur un nœud, dédiée à soit une JVM ApplicationMaster soit une JVM YarnChild qui exécute une tâche Map ou Reduce J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 39 / 61

Architecture de YARN avec 2 clients J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 40 / 61

YARN : ResourceManager (1/2) Gérer le cluster en maximisant l utilisation des ressources. réception des requêtes clientes : soumission et suppression d applications informations sur l état courant des soumissions réception de requêtes administratives Gère l ensemble des applications : ordonnance et stocke les états des applications alloue un container pour l ApplicationMaster sur un NodeManager redémarre l application en cas de défaillance J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 41 / 61

YARN : ResourceManager (2/2) réception des requêtes de containers des ApplicationMaster Ordonnancement des requêtes de container (YARN Scheduler) ordonnanceur modulable par défaut : CapacityScheduler qui utilise un ordonnancement hiérarchique Connaissance de l état de santé des NodeManagers ressources allouées et disponibles sur chaque NM Affectation des containers sur les NodeManagers gère la sécurité des communications stocke et génère des clés de cryptage J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 42 / 61

YARN : Application Master négocie l allocation des ressources et collabore avec les NodeManager pour utiliser les ressources acquises gère le cycle de vie de l appli, les défaillances des containers, l ajustement de la consommation des ressources hearbeat avec le ResourceManager message aller : progrès courant de l application containers demandés : nombre requis, préférence de localité container libérés message retour : liste des containers nouvellement alloués et leur clé de sécurité les ressources disponibles dans le cluster possibilité de directive d arrêt ou de resynchronisation Communique avec les NodeManager pour démarrer/arrêter les container alloués qui exécuteront les tâches de map et reduce (JVM YarnChild) J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 43 / 61

YARN : Node Manager héberge les containers libère les containers à la demande du RM ou du AM correspondant libération des ressources (CPU,RAM) possibilité de maintenir les données produite par la tache jusqu à la fin de l application monitore l état de santé du nœud et des containers maintient des clés de sécurité provenant du RM afin d authentifier les utilisation des containers heartbeat avec le RM : message aller : états des containers hébergés états du nœud message retour : des clés de sécurités pour la communication avec les AM des container à libérer possibilité de directive d arrêt ou de resynchronisation J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 44 / 61

Appli MapReduce : Assignation des tâches Map et Reduce L ApplicationMaster défini à sa création le nombre de containers à demander au RM la préférence de localisation des containers dépend de la localité des données d entrée du job Choisi parmi la liste des tâches, par ordre de préférence : les tâches de map : en les affectant les plus proche possible de leur split respectif les tâches de reduce : à partir d une certaine proportion de maps terminés démarre une instance de la tache choisie dans un container alloué par le RM Un container Yarn Child : exécute une instance de tâche de map ou de reduce fourni son état d avancement à l Application Master correspondant J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 45 / 61

Soumission d un Job Map Reduce sous YARN J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 46 / 61

Application MapReduce : Implémentation du Shuffle les sorties de maps sont stockées sur les systèmes de fichiers locaux des machines L ApplicationMaster connaît l avancement des tâches ainsi que leur localisation Un container Yarn Child demande périodiquement à L ApplicationMaster des informations sur les tâches de maps en cours : l état d avancement la machine physique hébergeant les tâches Dès qu un map se termine, les reduces concernés téléchargent directement leur partition sur la machine du map (phase de copie) une fois les données téléchargées, exécution des phases de merge et de sort J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 47 / 61

framework Map-Reduce : schéma du shuffle J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 48 / 61

framework Map-Reduce : tolérance aux fautes Crash du ResourceManager c est une bonne question :)! crash d un nœud esclave : le NodeManager n émet plus de heartbeat au RM Le RM supprime le nœud de ses esclaves opérationnels tant qu il n a pas redémarrer les containers YarnChild n émettent plus de status à leur AppMaster Au bout de 3 crash, l AppMaster Blackliste le nœud et demande au RM l allocation des containers sur un autre esclave les AppMaster n émettent plus de heartbeat au RM redémarrage d une nouvelle instance de l application en créant un nouvel AppMaster mécanisme de recovery au redémarrage du NM J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 49 / 61

Spéculation Possibilité de démarrer de nouvelles instances de tâche en cours d exécution : Estimation faite par l ApplicationMaster : si la spéculation est jugée nécessaire, affectation d une nouvelle instance de tâche dans un container. Intérêt : Permettre d anticiper les tâches jugées trop lentes et donc potentiellement défaillante J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 50 / 61

Écriture des données finales Écriture du résultat du calcul sur le HDFS par les reduces (un fichier par tâche de reduce) Problème : Comment assurer une cohérence puisque plusieurs instance d une même tâche peuvent s exécuter en même temps (ex : spéculation)? solution : chaque instance écrit dans un fichier portant leur TaskAttemptId dans un dossier temporaire (créé préalablement par l ApplicationMaster) lorsqu une instance se termine, attendre la permission de l ApplicationMaster pour copier son résultat dans le répertoire définitif (état CommitPending) l ApplicationMaster donne une telle permission à la première instance détectée CommitPending envoie de l ordre de commit par le message retour du heartbeat les autres instances sont détruites après la fin du commit J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 51 / 61

Programmation Map Reduce : définir ses types de clé/valeur les valeurs doivent implémenter l interface Writable de l API Hadoop les clés doivent implémenter l interface WritableComparable < T > (interface implémentant Writable et Comparable < T > de Java) Writable contient deux méthodes : void write(dataoutput out) : sérialisation void readfields(datainput in) : dé-sérialisation Des Writables prédéfinis dans l API : BooleanWritable, DoubleWritable, FloatWritable, IntWritable, LongWritable, Text, etc. J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 52 / 61

Programmation Map Reduce : format d entrée et de sortie permet de définir le format des données dans : les données d entrée : toute classe héritant de InputFormat < K, V >. Classe fournies par l API Hadoop principalement utilisées : TextInputFormat SequenceFileInputFormat < K, V > KeyValueTextInputFormat les données de sortie : toute classe héritant de OutputFormat < K, V > Classe fournies par l API Hadoop principalement utilisées : TextOutputFormat SequenceFileOutputFormat < K, V > J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 53 / 61

Programmation Map Reduce : programme du Mapper classe héritant de la classe Mapper < KEYIN, VALUEIN, KEYOUT, VALUEOUT > surcharge de la méthode map, appelée à chaque lecture d une nouvelle paire clé/valeur dans le split : protected void map ( KEYIN key, VALUEIN value, Context context ) Exemple : Mapper du WordCount public class TokenizerMapper extends Mapper < Object, Text, Text, IntWritable >{ } } public void map ( Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer ( value. tostring ()); while ( itr. hasmoretokens ()) { word. set ( itr. nexttoken ()); context. write ( new Text ( word ), new IntWritable (1)); } J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 54 / 61

Programmation Map Reduce : programme du Reducer classe héritant de la classe Reducer < KEYIN, VALUEIN, KEYOUT, VALUEOUT > surcharge de la méthode reduce, appelée à chaque lecture d une nouvelle paire clé/list(valeur) : protected void reduce ( KEYIN key, Iterable < VALUEIN > values, Context context ) Exemple : Reducer du WordCount public class IntSumReducer extends Reducer < Text, IntWritable, Text, IntWritable > { public void reduce ( Text key, Iterable < IntWritable > values, Co throws IOException, InterruptedException { int sum = 0; for ( IntWritable val : values ) { sum += val. get (); } result. set ( sum ); context. write (key, new IntWritable ( sum )); } } J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 55 / 61

Programmation Map Reduce : partitionneur défini la politique de répartition des sorties de map classe héritant de la classe abstraite Partitioner < KEY, VALUE > implémentation de la méthode abstraite getpartition, appelée par le context.write() du map : public abstract int getpartition ( KEY key, VALUE value, int numpartitions ); /* key : l objet type clé value : l objet type valeur numpartitions : nombre de partition (= nombre de reduce ) */ Le partitionneur par défaut de Hadoop est un hachage de la clé (HashPartitioner) : public class HashPartitioner <K, V > extends Partitioner <K, V >{ public int getpartition ( K key, V value, int numreducetasks ) { return ( key. hashcode () & Integer. MAX_ VALUE ) % numreducetasks ; } } J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 56 / 61

Programmation Map Reduce : squelette client public class MyProgram { public static void main ( String [] args ){ Configuration conf = new Configuration (); Job job = Job. getinstance (conf, " Mon Job "); job. setjarbyclass ( MyProgram. class ); // jar du programme job. setmapperclass (...); // classe Mapper job. setreducerclass (...); // classe Reducer job. setmapoutputkeyclass (...); // classe clé sortie map job. setmapoutputvalueclass (...); // classe valeur sortie map job. setoutputkeyclass (...); // classe clé sortie job job. setoutputvalueclass (...); // classe valeur sortie job job. setinputformatclass (...); // classe InputFormat } } job. setoutputformatclass (...); // classe OutputFormat job. setpartitionerclass ( HashPartitioner. class ); // partitioner job. setnumreducetasks (...); // nombre de reduce FileInputFormat. addinputpath ( job,...); // chemins entrée FileOutputFormat. setoutputpath ( job,...); // chemin sortie job. waitforcompletion ( true ); // lancement du job J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 57 / 61

Programmation Map Reduce : API du HDFS possibilité de manipuler le HDFS depuis le programme client HDFS représenté par un objet FileSystem unique (singleton) : final FileSystem fs = FileSystem. get ( conf ); Quelques méthodes : // copie d un fichier / dossier local client vers le HDFS fs. copyfromlocalfile (src, dst ); // copie d un fichier / dossier HDFS vers le fs local client fs. copytolocalfile (sr, dst ); // création / écrasement d un fichier FSDataOutputStream out = fs. create ( f); // test d existence d un fichier boolean b = fs. exists (f); // ouverture en ecriture ( append only ) FSDataOutputStream out = fs. append ( f); // ouverture en lecture FSDataInputStream in = fs. open ( f); // le reste : RTFM J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 58 / 61

Commande HDFS dans un terminal possibilité de manipuler le HDFS depuis un terminal commande : hdfs dfs <commande HDFS> commandes HDFS similaires celles d Unix en ajoutant un tiret devant Exemples : hdfs dfs -ls <path> hdfs dfs -mv <src> <dst> hdfs dfs -cp <src> <dst> hdfs dfs -cat <src> hdfs dfs -copyfromlocal <localsrc>... <dst> hdfs dfs -mkdir <path> hdfs dfs -copytolocal <src> <localdst> RTFM pour les autres :). J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 59 / 61

Projets Apache utilisant Hadoop Hbase : SGBD optimisé pour les grandes tables utilisant le HDFS Pig et Hive : logiciels d analyse de données permettant d utiliser Hadoop avec une syntaxe proche du SQL Mahout : création d implémentations d algorithmes d apprentissage automatique distribués Zookeeper : service de coordination pour applications distribuées Chukwa : système de monitoring de gros systèmes distribués Spark : alternative 100 fois plus performante au Map Reduce pour certaines applications J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 60 / 61

Références [1] Jeffrey Dean and Sanjay Ghemawat, MapReduce : Simplified Data Processing on Large Clusters, OSDI 04 : Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December, 2004. [2] Hadoop : the definitive guide, White Tom, O Reilly, 2012, ISBN : 978-1-4493-8973-4 [3] Hadoop web site : http ://hadoop.apache.org/ J. Lejeune (École des Mines de Nantes) Hadoop Map-Reduce Janvier 2015 61 / 61