Introduc)on à Map- Reduce. Vincent Leroy



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

Notes de cours Practical BigData

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

Introduction à Hadoop & MapReduce

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

Introduction à MapReduce/Hadoop et Spark

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

7 Développement d une application de MapReduce

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

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

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

Certificat Big Data - Master MAthématiques

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

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

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

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

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

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

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

Ricco Rakotomalala R.R. Université Lyon 2

Tables Rondes Le «Big Data»

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

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

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

HADOOP ET SON ÉCOSYSTÈME

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

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

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

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

Cartographie des solutions BigData


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

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

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)

Labs Hadoop Février 2013

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)

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

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

Les technologies du Big Data

BIG DATA en Sciences et Industries de l Environnement

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

Évolu>on et maintenance

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

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

Veeam Backup and Replication

4 Exemples de problèmes MapReduce incrémentaux

Cours 8 Not Only SQL

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

Professeur-superviseur Alain April

Les enjeux du Big Data Innovation et opportunités de l'internet industriel. Datasio 2013

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

BONJOURGRID : VERSION ORIENTÉE DONNÉE & MAPREDUCE SÉCURISÉ

Les termes du cloud CUMULO NUMBIO 2015 O. COLLIN

Gestion des sauvegardes

Big Data, un nouveau paradigme et de nouveaux challenges

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

Les journées SQL Server 2013

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

WD et le logo WD sont des marques déposées de Western Digital Technologies, Inc, aux États-Unis et dans d'autres pays ; absolutely WD Re, WD Se, WD

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

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Configuration matériel. Tâche 2 : Installation proprement dite de l application sur un serveur de test virtualisé sous VmWare Workstation.

Importation et exportation de données dans HDFS

Avant-propos. Organisation du livre

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

Hyper-V et SC Virtual Machine Manager sous Windows Server 2008 R2

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

TP3 : Manipulation et implantation de systèmes de fichiers 1

Introduction à ElasticSearch

MiniCLOUD

VirtualScale L expert infrastructure de l environnement Open source HADOOP Sofiane Ammar sofiane.ammar@virtualscale.fr

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.

Hibernate vs. le Cloud Computing

Artica. La déduplication. Révision Du 08 Février 2011 version

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

Livre blanc Haute disponibilité sous Linux

L annuaire et le Service DNS

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

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

Structure fonctionnelle d un SGBD

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

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

Solution Haute Disponibilité pour Linux

Systèmes de fichiers répartis

ViSaGe. Virtualisation du Stockage dans les Grilles. Informatiques. RenPar 16, 6-8 Avril 2005 Thiebolt François

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

Jean-François Boulicaut & Mohand-Saïd Hacid

Le BigData, aussi par et pour les PMEs

Fast and furious decision tree induction

Sauvegarde collaborative en pair-à-pair

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Ebauche Rapport finale

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Transcription:

Introduc)on à Map- Reduce Vincent Leroy

Sources Apache Hadoop Yahoo! Developer Network Hortonworks Cloudera Prac)cal Problem Solving with Hadoop and Pig Les cours seront mis en ligne sur hhp://membres.liglab.fr/leroy/

Besoin «Big Data» Google, 2008 20 PB/jour 180 GB/job (très variable) Index du Web 50 milliards de pages 15PB Grand collisionneur de hadrons (LHC) du CERN : génère 15PB/an

Capacité d un (gros) serveur Capacité mémoire max : 256 GB Capacité disque max : 24TB Débit disque : 100MB/s

Solu)on: Parallélisme 1 serveur 8 disque Lire le Web : 230 jours Cluster Hadoop Yahoo 4000 serveurs 8 disques/serveur Lire le Web en parallèle : 1h20

Data center Google

Problèmes de la programma)on parallèle «classique» Synchronisa)on Mutex, sémaphores Modèles de programma)on Mémoire partagée (mul)cores) Passage de messages (MPI) Difficultés Programmer / débugger (deadlocks ) Op)miser Rendre élas)que (nombre arbitraire de machines) Coûteux Peu réu)lisable

Tolérance aux pannes Un serveur tombe en panne de temps en temps 1000 serveurs MTBF (temps moyen entre 2 pannes) < 1 jour Un gros job prend plusieurs jours Il y aura des pannes, c est normal Le calcul doit finir dans un délais prédic)ble à On ne relance pas tout pour une panne! Checkpoin)ng, réplica)on Difficile à faire à la main

MODÈLE DE PROGRAMMATION MAP- REDUCE

Que sont Map et Reduce? 2 fonc)ons simples inspirées de la programma)on fonc)onnelles map (*2) [1,2,3] = [2,4,6] reduce (+) [1,2,3] = 6 Fonc)ons «génériques» Leur combinaison permet de modéliser énormément de problèmes Le développeur fournit l opérateur appliqué

Map- Reduce sur des clés/valeurs Map- Reduce manipule des paires clé/valeur Map est appliqué indépendamment à chaque paire clé/valeur map(clé, valeur) = liste(clé,valeur) Reduce est appliqué à toutes les valeurs associées à la même clé reduce(clé,liste(valeur)) = liste(clé,valeur) Les clés/valeurs en sor)e ne sont pas forcément du même type que les entrées

Exemple : Compter la fréquence de mots «a b c aa b c a bb cc a cc b» a 3 b 3 c 2 aa 1 bb 1 cc 2

Comptage de fréquence : Mapper Map traite une frac)on de texte (valeur) Délimiter les mots Pour chaque mot, compter une occurrence La clé n est pas importante dans cet exemple Map(String line, Output output){ foreach String word in line.split() { output.write(word, 1) } }

Comptage de fréquence : Reducer Un reduce traite toutes les paires clé/valeur pour une clé donnée Addi)onner le nombre d occurences Reduce(String word, List<Int> occurences, Output output){ int count = 0 foreach int occ in occurences { count += occ } output.write(word,count) }

Schéma d exécu)on Mappers (2) a b c aa b c a 1 b 1 c 1 aa 1 b 1 c 1 a bb cc a cc b a 1 bb 1 cc 1 a 1 cc 1 b 1 Reducers (6) a: 1,1,1 b: 1,1,1 c: 1,1 aa: 1 bb: 1 cc: 1,1 a 3 b 3 c 2 aa 1 bb 1 cc 2

HDFS : SYSTÈME DE FICHIERS DISTRIBUÉ

Lectures aléatoires / séquen)elles Exemple BDD 100M d u)lisateurs 100B/u)lisateur Modifier 1% des enregistrements Accès aléatoire Seek, lecture, écriture : 30mS 1M d u)lisateurs à 8h20 Accès séquen)elle On lit TOUT et on réécrit TOUT 2 fois 10GB à 100MB/S à 3 minutes à Il est souvent plus efficace de tout lire et tout réécrire séquen)ellement

Système de fichiers distribué (HDFS) Système de fichiers distribué Redondance (tolérance aux pannes) Performance (lecture parallèle) Gros fichiers Lectures séquen)elles Écritures séquen)elles Traitement des données «en place» Stockage et traitement sur les mêmes machines Meilleure u)lisa)on des machines (pas de filer spécialisé) Moins de satura)on réseau (meilleures performances)

Modèle HDFS Données organisées en fichiers et répertoires à proche d un système de fichiers classique Fichiers divisés en blocks (64MB par défaut) répar)s sur les machines HDFS indique au framework Map- Reduce le placement des données à Si possible, exécu)on du programme sur la machine où sont placées les données nécessaires

Tolérance aux fautes Blocks des fichiers répliqués (3 par défaut) pour faire face aux pannes Placement suivant différents facteurs Alimenta)on électrique Équipement réseau Placement varié pour augmenter la possibilité d avoir une copie proche Checksum des données pour détecter les corrup)ons de données (présent sur les systèmes de fichiers modernes)

Architecture Master/Worker Un maître, le NameNode Gère l espace des noms de fichiers Dirige les opéra)ons sur les fichiers, blocks Surveille le bon état du système (pannes, équilibre ) Beaucoup (milliers) d esclaves, les DataNodes Con)ent les données (blocks) Effectue les opéra)ons de lecture/écriture Effectue les copies (réplica)on, dirigée par le NameNode)

NameNode Stocke les métadonnées de chaque fichier et block (inode) Nom de fichier, répertoire, associa)on block/ fichier, posi)on des blocks, nombre de réplicas Garde tout en mémoire (RAM) Facteur limitant = nombre de fichiers 60M d objets )ennent en 16GB

DataNode Gère et surveille l état des blocks stockés sur le système de fichier de l OS hôte (souvent linux) Accédé directement par les clients à les données ne transitent pas par le NameNode Envoie des heartbeats au NameNode pour indiquer que le serveur n est pas en panne Indique au NameNode si des blocks sont corrompus

Ecriture d'un fichier Le client fait une requête au NameNode pour créer un nouveau fichier Le NameNode vérifie les permissions du client si le nom du fichier n'existe pas déjà Des DataNodes sont choisis pour stocker les blocs du fichier et des répliques "pipeline" de DataNodes Des blocks sont alloués sur ces DataNodes Le flux des données du client est dirigé sur le 1er DataNode du pipeline Chaque DataNode forwarde les données reçues aux DataNode suivant du pipeline

Lecture d'un fichier Le client fait une requête au NameNode pour lire un fichier Le NameNode vérifie que le fichier existe et construit la liste des DataNodes contenant les premiers blocs Pour chacun de ces blocs, le NameNode renvoie les adresse des DataNodes les contenant cehe liste est triée par ordre de proximité au client Le client se connecte au DataNode le plus proche contenant le 1er bloc du fichier Lecture d'un bloc terminée : Connexion au DataNode coupée Nouvelle connexion au DataNode contenant le bloc suivant Quand tous les premiers blocs lus : Requête au NameNode pour avoir l'ensemble de blocs suivants

Structure d HDFS

Commandes HDFS (répertoires) Créer répertoire rep $ hadoop dfs - mkdir /rep Lister contenu HDFS $ hadoop dfs - ls Effacer répertoire rep $ hadoop dfs - rmr /rep

Commandes HDFS (fichiers) Copier fichier local toto.txt dans HDFS rep/ $ hadoop dfs - put toto.txt rep/toto.txt Copier fichier HDFS sur le disque local $ hadoop dfs - get rep/toto.txt./ Voir fichier /rep/toto.txt $ hadoop dfs - cat /rep/toto.txt Effacer fichier /rep/toto.txt $ hadoop dfs - rm /rep/toto.txt

APACHE HADOOP : FRAMEWORK MAP- REDUCE

Objec)fs du framework Map- Reduce Offrir un modèle de programma)on simple et générique : fonc)ons map et reduce Déployer automa)quement l exécu)on Prendre en charge la tolérance aux pannes Passage à l échelle jusqu à plusieurs milliers de machines La performance pure est importante mais n est pas prioritaire L important est de finir dans un temps raisonnable Si c est trop lent, ajoutez des machines! Kill It With Iron (KIWI principle)

Que fait le développeur? Implémente les opéra)ons Map et Reduce Dépend du programme Définit ses types de données Si non standards (Text, IntWritable ) Méthodes pour sérialiser C est tout.

Imports import java.io.ioexcep)on ; import java.u)l.* ; import org.apache.hadoop.fs.path ; import org.apache.hadoop.io.intwritable ; import org.apache.hadoop.io.longwritable ; import org.apache.hadoop.io.text ; import org.apache.hadoop.mapreduce.mapper ; import org.apache.hadoop.mapreduce.reducer ; import org.apache.hadoop.mapreduce.jobcontext ; import org.apache.hadoop.mapreduce.lib.input.fileinputformat ; import org.apache.hadoop.mapreduce.lib.output.fileoutputformat ; import org.apache.hadoop.mapreduce.job ;

Mapper public sta)c class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> { // type clé input, type valeur input, type clé output, type valeur output public void map(longwritable cle, Text valeur, Context contexte) throws IOExcep)on, InterruptedExcep)on { } } String ligne = valeur.tostring() ; StringTokenizer tokenizer = new StringTokenizer(ligne) ; while (tokenizer.hasmoretokens()) { contexte.write(new Text(tokenizer.nextToken()), new IntWritable(1)) ; }

Reducer public sta)c class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> { // type clé input, type valeur input, type clé output, type valeur output public void reduce(text mot, Iterable<IntWritable> valeurs, Context contexte) throws IOExcep)on, InterruptedExcep)on { } int somme = 0 ; for (IntWritable valeur : valeurs) { somme += valeur.get() ; } contexte.write(mot, new IntWritable(somme)) ;

Main public class WordCount { //...code du map et du reduce... public sta)c void main(string [] args) throws Excep)on { Job job = new Job() ; job.setjarbyclass(wordcount.class) job.setjobname("wordcount"); job.setoutputkeyclass(text.class); job.setoutputvalueclass(intwritable.class); job.setmapperclass(wordcountmapper.class); job.setreducerclass(wordcountreducer.class); job.setinputformatclass(textinputformat.class); job.setoutputformatclass(textoutputformat.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForComple)on(true)? 0 : 1) ; }}

Terminologie Programme Map- Reduce = job Les jobs sont soumis au jobtracker Un job est divisé en plusieurs tasks un map est une task un reduce est une task Les tasks sont surveillées par des tasktrackers Dans Map- Reduce, barrière entre les maps et les reduce il faut ahendre le map le plus lent avant de commencer les reduce une task lente est appelée straggler

Exécu)on d un job $ javac - classpath hadoop- core- *.jar - d wordcountclasses WordCount.java $ jar - cvf wordcount.jar - C wordcountclasses/. $ hadoop jar wordcount.jar org.myorg.wordcount inputpath(hdfs) outputpath(hdfs) Les paramètres sont vérifiés un répertoire d'output t'il été spécifié? le répertoire d'output existe t'il déjà? un répertoire d'input a t'il été spécifié? Les splits sont calculés Le job (code Map- Reduce), sa configura)on et les splits sont copiés avec une forte réplica)on Un objet pour suivre la progression des tâches est créé sur le jobtracker Pour chaque split, un map est créé Le nombre de reduce par défaut est créé

Tasktracker Le tasktracker envoie périodiquement un signal au jobtracker indique que le noeud fonc)onne toujours indique si le tasktracker est prêt à accepter une nouvelle task Un tasktracker est en général responsable d'un noeud nombre fixé de slots pour des tasks map nombre fixé de slots pour des tasks reduce tasks peuvent être de jobs différents Chaque task tourne sur sa propre JVM éviter qu'un crash de la task fasse crasher le tasktracker

Suivi de la progression Une task map connaît son état d'avancement, i.e. la propor)on du split qu'il a traitée Pour une task reduce, trois phases pour l'état d'avancement: copie tri reduce Ces informa)ons sont passées au TaskTracker Toutes les 5 secondes (ou plus), l'informa)on d'avancement est envoyée au JobTracker Le JobTracker peut fournir ces informa)ons au client, ou à l'interface web

Suivi de la progression

Fin du Job Les outputs de chaque reduce sont écrits dans un fichier Le jobtracker envoie un message au client, qui affiche les compteurs du job 11/11/01 16:00:47 INFO mapred.jobclient: Job complete: job_201111011507_0001 11/11/01 16:00:47 INFO mapred.jobclient: Counters: 26 11/11/01 16:00:47 INFO mapred.jobclient: Job Counters 11/11/01 16:00:47 INFO mapred.jobclient: Launched reduce tasks=1 11/11/01 16:00:47 INFO mapred.jobclient: SLOTS_MILLIS_MAPS=17409 11/11/01 16:00:47 INFO mapred.jobclient: Total )me spent by all reduces wai)ng ašer reserving slots (ms)=0 11/11/01 16:00:47 INFO mapred.jobclient: Total )me spent by all maps wai)ng ašer reserving slots (ms)=0 11/11/01 16:00:47 INFO mapred.jobclient: Launched map tasks=2 11/11/01 16:00:47 INFO mapred.jobclient: Data- local map tasks=2 11/11/01 16:00:47 INFO mapred.jobclient: SLOTS_MILLIS_REDUCES=10301

Panne d'un nœud durant un job Bug dans une task JVM de la task crashe JVM du tasktracker no)fiée task supprimée de son slot task ne répond plus )meout de 10 minutes task supprimée de son slot Chaque task est réessayée N fois (défaut 7)

Combiner Problème possible d'un map : beaucoup de couples clé/valeurs en output Ces couples doivent être copiés au reducer, voire transmis sur le réseau : coûteux Combiner : mini- reducer qui se place à la sor)e du map et réduit le nombre de couples Types d'input du combiner = types d'output du combiner = types de sor)e du map Combiner u)lisé op)onnellement par Hadoop la correc)on du programme ne doit pas en dépendre conf.setcombiner( )

Combiner Mappers (2) a b c aa b c a bb cc a cc b a 1 b 1 c 1 aa 1 b 1 c 1 a 1 b 2 c 2 aa 1 a 1 bb 1 cc 1 a 1 cc 1 b 1 a 2 bb 1 cc 2 b 1 Combiner Reducers (6) a: 1,2 b: 2,1 c: 2 aa: 1 bb: 1 cc: 2 a 3 b 3 c 2 aa 1 bb 1 cc 2