hadoop mapreduce - osdc fr 2009

32
 Hadoop et MapReduce Introduction au traitement de gros volumes de données Olivier Grisel - AFPy - OSDC FR – Nuxeo http://twitter.com/ogrisel OSDC FR 2009 – Paris Cité des Sciences

Upload: olivier-grisel

Post on 09-May-2015

5.069 views

Category:

Technology


4 download

DESCRIPTION

Introduction au traitement de gros volumes de données avec Hadoop MapReduce.

TRANSCRIPT

Page 1: Hadoop MapReduce - OSDC FR 2009

   

Hadoop et MapReduce

W

Introduction au traitement de gros volumes de données

Olivier Grisel ­ AFPy ­ OSDC FR – Nuxeo

http://twitter.com/ogrisel

OSDC FR 2009 – Paris Cité des Sciences

Page 2: Hadoop MapReduce - OSDC FR 2009

   

Quelques ordres de grandeur

• % ls ­sh enwiki­20090902­pages­articles.xml– 23G enwiki­20090902­pages­articles.xml

• % time cat enwiki­20090902­pages­articles.xml > /dev/null

– 2.53s user 41.39s system 23% cpu 3:03.92 total– 128MB/s (sur un disque SSD)

• 100 GB => ~ 10 minutes• 1 TB => ~ 2 heures• 1 PB => ~ 3 mois

Page 3: Hadoop MapReduce - OSDC FR 2009

   

MapReduce

• Architecture mise au point par Google• But: faire des traitements (indexation, 

aggrégation, datamining, ...)• Webscale (100 GB+, TB, PB, …)• Déplacer les traitements sur l'infra de stockage• Exploitation de l'information localisation des 

données• Tolérance aux erreurs disque / hardware

Page 4: Hadoop MapReduce - OSDC FR 2009

   

Un exemple: Indexer en MapReduce

• map(pageName, pageText):– foreach word in pageText:– emitIntermediate(word, pageName);

[copie et trie par clefs entre les noeuds]• reduce(word, pageNames):

– bucket = createBucketFor(word)– foreach pageName in pageNames:

● bucket.add(pageName)

– bucket.finalize()

Page 5: Hadoop MapReduce - OSDC FR 2009

   

Le projet Hadoop

• Open Source / Apache Software Foundation • Yahoo / Facebook / Cloudera• Java• Sous projets :

– Hadoop MapReduce– Hadoop DFS & Hbase– Pig & Hive– Mahout

Page 6: Hadoop MapReduce - OSDC FR 2009

   

Architecture générale

NameNode

JobTracker

Client

TaskTracker

DataNode

TaskTracker

DataNode

TaskTracker

DataNode

TaskTracker

DataNode

Page 7: Hadoop MapReduce - OSDC FR 2009

   

Demo

• Construire un jeu de données basé sur un dump XML de wikipedia

• Entrainer un “classifieur” bayesien de documents

• Pour chaque pays, rassembler dans un fichier la liste des texte brut des articles de cette catégorie

• Un article par ligne dans, 1 fichier par pays

Page 8: Hadoop MapReduce - OSDC FR 2009

   

Chargement des données dans HDFS

java ­jar org.apache.mahout.classifier.\bayes.WikipediaXmlSplitter \  ­d /path/to/enwiki­latest­pages­articles.xml  ­o wikipedia­chunks/ ­c 64

hadoop dfs ­put wikipedia­chunks/ wikipediadump

Page 9: Hadoop MapReduce - OSDC FR 2009

   

Page 10: Hadoop MapReduce - OSDC FR 2009

   

Page 11: Hadoop MapReduce - OSDC FR 2009

   

Page 12: Hadoop MapReduce - OSDC FR 2009

   

Lancement du Job

hadoop jar /path/to/mahout­examples­*.job \ org.apache.mahout.classifier.bayes\.WikipediaDatasetCreatorDriver \  ­i wikipediadump  ­o wikipediadataset  ­c src/test/resources/country.txt

Page 13: Hadoop MapReduce - OSDC FR 2009

   

Page 14: Hadoop MapReduce - OSDC FR 2009

   

HadoopViz

Page 15: Hadoop MapReduce - OSDC FR 2009

   

Page 16: Hadoop MapReduce - OSDC FR 2009

   

Page 17: Hadoop MapReduce - OSDC FR 2009

   

Page 18: Hadoop MapReduce - OSDC FR 2009

   

Les résultats

Page 19: Hadoop MapReduce - OSDC FR 2009

   

Page 20: Hadoop MapReduce - OSDC FR 2009

   

Page 21: Hadoop MapReduce - OSDC FR 2009

   

C'est bien tout ça mais j'aime pas le Java ...

●… et bien fais le en Scala !

Page 22: Hadoop MapReduce - OSDC FR 2009

   

Hadoop Streaming

• Utiliser des programmes hors JVM:– Lire sur stdin

– Ecrire sur stdout 

– Respecter la forme “<key>\t<value>\n”

– Emettre un heartbeat sur stderr

• C, Perl, Python, Ruby, bash, sed, awk, ...

Page 23: Hadoop MapReduce - OSDC FR 2009

   

Page 24: Hadoop MapReduce - OSDC FR 2009

   

Running Streaming Jobs

hadoop jar /path/to/hadoop­0.20.1­streaming.jar \   ­mapper /home/hadoop/mapper.py \   ­reducer /home/hadoop/reducer.py \    ­input gutenberg/*   ­output gutenberg­output

Page 25: Hadoop MapReduce - OSDC FR 2009

   

Je suis DBA et je ne programme pas

• Hive : SQL­like pour faire du Datawarehousing avec Hadoop

• Pig Latin : scripting haut niveau pour faire des transformations sur des logs, dump de DB, ...

Page 26: Hadoop MapReduce - OSDC FR 2009

   

Comment installer Hadoop

• Ajouter le repo Cloudera Distribution for Hadoop 2 (CDH2) dans /etc/apt/sources.list

• sudo apt­get install hadoop hadoop­conf­pseudo• for service in /etc/init.d/hadoop­* ;

do  sudo $service start;done

Page 27: Hadoop MapReduce - OSDC FR 2009

   

Page 28: Hadoop MapReduce - OSDC FR 2009

   

Comment ne pas installer Hadoop

• Image Amazon EC2 AMI par cloudera avec CDH2

– scripts de lancement et de monitoring– Pig, Hive, ...– Possibilité d'installer des packages en plus

• Service Amazon Elastic MapReduce– Lance un cluster AWS EC2 avec Hadoop 

préinstallé– 1$ / h / node  (octo­core avec 1TB de disque)

Page 29: Hadoop MapReduce - OSDC FR 2009

   

Page 30: Hadoop MapReduce - OSDC FR 2009

   

Apprendre a Programmer en MapReduce

• Tutoriel officiel : http://hadoop.apache.org• Autres tutos : http://www.michael­noll.com• Blog avec exemples d'applications : 

http://www.datawrangling.com/• Support de formation Cloudera

– Videos– Slides + fichiers exercices– Images de machine virtuelle

Page 31: Hadoop MapReduce - OSDC FR 2009

   

Page 32: Hadoop MapReduce - OSDC FR 2009

   

Merci pour votre attention !

Des questions ?

http://twitter.com/ogrisel