Introduc)on à Map- Reduce. Vincent Leroy



Documents pareils
Introduc)on à Map- Reduce. Vincent Leroy

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

7 Développement d une application de MapReduce

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

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

Certificat Big Data - Master MAthématiques

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

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

Introduction à MapReduce/Hadoop et Spark

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

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

Programmation parallèle et distribuée

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

Programmation parallèle et distribuée

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

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

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

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

Big Data Concepts et mise en oeuvre de Hadoop

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

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

Cartographie des solutions BigData

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


Labs Hadoop Février 2013

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

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

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

Les technologies du Big Data

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

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)

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

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

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)

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

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

Cours 8 Not Only SQL

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

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

Importation et exportation de données dans HDFS

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

BIG DATA en Sciences et Industries de l Environnement

Avant-propos. Organisation du livre

Évolu>on et maintenance

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

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

Professeur-superviseur Alain April

Les journées SQL Server 2013

Les termes du cloud CUMULO NUMBIO 2015 O. COLLIN

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

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Synchro et Threads Java TM

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

OpenPaaS Le réseau social d'entreprise

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

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

Introduction à ElasticSearch

Veeam Backup and Replication

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

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

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

Le BigData, aussi par et pour les PMEs

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

Remote Method Invocation (RMI)

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

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

Solution Haute Disponibilité pour Linux

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

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

Sauvegarde collaborative en pair-à-pair

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

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

MiniCLOUD

Présentation Alfresco

Big Data, un nouveau paradigme et de nouveaux challenges

Systèmes de fichiers répartis

Livre blanc Haute disponibilité sous Linux

Fast and furious decision tree induction

DEMARRER UN PROJET BIGDATA EN QUELQUES MINUTES GRACE AU CLOUD

Projet d'infrastructure de stockage mutualisée

Mesures DNS à l ère du Big Data : outils et défis. JCSA, 9 juillet 2015 Vincent Levigneron, Afnic

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

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

Centres informatiques

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

Présentation Level5. Editeur de Logiciels. «If it s not monitored, it s not in production» Theo Schlossnagle #velocityconf

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://lig- membres.imag.fr/leroyv/

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)onnelle map (*2) [1,2,3] = [2,4,6] reduce (+) [2,4,6] = 12 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 Input : un fichier de 2 lignes 1, "a b c aa b c" 2, "a bb cc a cc b" Output 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 Pour chaque clé, Reduce traite toutes les valeurs correspondantes Addi)onner le nombre d occurrences Reduce(String word, List<Int> occurrences, Output output){ int count = 0 foreach int occ in occurrences { count += occ } output.write(word,count) }

Schéma d exécu)on Map 1, "a b c aa b c" 2, "a bb cc a cc b" a, 1 b, 1 c, 1 aa, 1 b, 1 c, 1 a, 1 bb, 1 cc, 1 a, 1 cc, 1 b, 1 Reduce 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É

Accès aléatoires / séquen)els 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)el 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 Gère les droits d accès 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 1 1 2 1 3 2 2 4 3

Commandes HDFS (répertoires) Créer répertoire rep $ hdfs dfs mkdir rep Lister contenu HDFS $ hdfs dfs - ls Effacer répertoire rep $ hdfs dfs rm r rep

Commandes HDFS (fichiers) Copier fichier local toto.txt dans HDFS rep/ $ hdfs dfs - put toto.txt rep/toto.txt Copier fichier HDFS sur le disque local $ hdfs dfs - get rep/toto.txt./ Voir fichier rep/toto.txt $ hdfs dfs cat rep/toto.txt Effacer fichier rep/toto.txt $ hdfs 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 (Java, C++ ) Dépend du programme Définit ses types de données (clés / valeurs) Si non standards (Text, IntWritable fournis) Méthodes pour sérialiser C est tout.

Imports import java.io.ioexception ; import java.util.* ; 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 ; AHen)on nouvelle / ancienne API

Mapper // type clé input, type valeur input, type clé output, type valeur output public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> { @Override protected void map(longwritable key, Text value, Context context) throws IOException, InterruptedException { for (String word : value.tostring().split("\\s+")) { context.write(new Text(word), new IntWritable(1)); } } }

Reducer // type clé input, type valeur input, type clé output, type valeur output public class WordCountReducer extends Reducer<Text, IntWritable, Text, LongWritable> { @Override protected void reduce(text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { long sum = 0; for (IntWritable value : values) { sum += value.get(); } context.write(key, new LongWritable(sum)); } }

Main public class WordCountMain { public static void main(string [] args) throws Exception { Configuration conf = new Configuration(); String[] otherargs = new GenericOptionsParser(conf, args).getremainingargs(); } Job job = Job.getInstance(conf, "word count"); job.setjarbyclass(wordcountmain.class); job.setmapoutputkeyclass(text.class); job.setmapoutputvalueclass(intwritable.class); job.setoutputkeyclass(text.class); job.setoutputvalueclass(longwritable.class); job.setmapperclass(wordcountmapper.class); job.setreducerclass(wordcountreducer.class); job.setinputformatclass(textinputformat.class); job.setoutputformatclass(textoutputformat.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(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 une task lente est appelée straggler Dans Map- Reduce, barrière entre les maps et les reduce (shuffle & sort) il faut ahendre le map le plus lent avant de commencer les reduce

Exécu)on d un job $ 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 mapper est créé Le nombre de reducer 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 permet d isoler l exécu)on des tâches au sein du 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 14/10/28 11:54:25 INFO mapreduce.job: Job job_1413131666506_0070 completed successfully Job Counters Launched map tasks=392 Launched reduce tasks=88 Data- local map tasks=392 [...] Map- Reduce Framework Map input records=622976332 Map output records=622952022 Reduce input groups=54858244 Reduce input records=622952022 Reduce output records=546559709 [...]

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 Map 1, "a b c aa b c" 2, "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 Reduce 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