Oktay Istanbullu – Hugues Le Bars
Yahoo! Technicals
Hadoop: Introduction
- 2 -
Hadoop: Introduction
•  Hadoop, un projet open source
•  Hadoop et Yahoo!
•  Hadoop Core
•  HDFS
•  MapReduce: Princ...
- 3 -
Hadoop: Projet open source
•  Hadoop: composante de Nutch, partie recherche internet du
projet Lucene.
•  Lucene htt...
- 4 -
Hadoop: Projet open source
http://hadoop.apache.org/
•  23 Janvier 2008 - Hadoop devient un des projets de premier
p...
- 5 -
Hadoop et Yahoo!
•  Plusieurs groupes implémentaient déjà une solution de grid
computing (open source ou non)
•  For...
- 6 -
Hadoop Core
•  Hadoop Core = HDFS + Map Reduce
- 7 -
HDFS: Hadoop Distributed File System
Système de fichiers distribué, les fichiers sont divisés en blocs puis
répartis...
- 8 -
HDFS: Architecture
- 9 -
HDFS: Architecture maître esclave
•  NameNode (Maître)
–  Unique, un NameNode par cluster
–  Gère les noms de fichie...
- 10 -
HDFS: Architecture
•  Lors de l’écriture d’un fichier, celui-ci est d’abord écrit dans un fichier
temporaire au sei...
- 11 -
MapReduce [8] : Principes
•  Modèle de programmation pour
traiter et générer beaucoup de
données
•  L’utilisateur f...
- 12 -
Hadoop Map-Reduce
- 13 -
Hadoop Map-Reduce
•  Le développeur fournit:
–  Les fonctions Map et Reduce et un
ensemble de données en entrée
•  ...
- 14 -
Map-Reduce features
•  Division des tâches en Map/Reduce
–  Meilleure répartition de charge
–  Récupération des err...
- 15 -
Hadoop Map-Reduce: Architecture
•  Architecture Maître/Esclaves
•  Map-Reduce “Jobtracker”: Maître
–  Collecte les ...
- 16 -
Hadoop HDFS + MR cluster
D D D DTT
JobTracker
Namenode
Machines with Datanodes and Tasktrackers
T T TD
Client
Job S...
- 17 -
Exemple: Wordcount
// Map
public static class Map extends MapReduceBase implements
Mapper<LongWritable, Text, Text,...
- 18 -
Wordcount: Reduce

 public static class Reduce extends MapReduceBase implements
Reducer<Text, IntWritable, Text, In...
- 19 -
Wordcount: Exécution
public static void main(String[] args) throws Exception {

 JobConf conf = new JobConf(WordCou...
- 20 -
Hadoop est développé en Java
•  Hadoop est écrit en java
–  Tourne sur Linux, Window, BSD, MacOS…
–  Support Java p...
- 21 -
Hadoop à Yahoo!
•  Jan 2006 Doug Cutting devient employé de Yahoo!
•  Près d’un membre du PMC sur deux est un Yahoo...
- 22 -
Hadoop à Yahoo!
•  17k+ machines
•  + grand cluster: 2000 nœuds.
4000 nœuds en phase de
test.
•  Plusieurs PetaOcte...
- 23 -
Webmap utilise Hadoop
•  Webmap est le graphe regroupant toutes les adresses
connues par le moteur de recherche Yah...
- 24 -
Intérêt de la communauté croissant
- 25 -
Et Contributions croissantes
- 26 -
Hadoop: dernières avancées
4000 nœuds!
HDFS Cluster Statistics
Capacity : 14.25 PB
DFS Remaining : 10.61 PB
DFS Use...
- 27 -
Hadoop: Projet Open Source Apache
•  Apache gère des projets pour la communauté:
–  Les utilisateurs
–  Les contrib...
- 28 -
Sources [1]
1.  http://en.wikipedia.org/wiki/Doug_Cutting
2.  http://blog.lucene.com/ Le Blog de Doug Cutting
3.  h...
- 29 -
Sources [2]
•  http://wiki.apache.org/hadoop-data/attachments/HadoopPresentations/
attachments/HadoopEBIG-Oct2008.p...
Prochain SlideShare
Chargement dans…5
×

Hadoop Introduction in Paris

1 458 vues

Publié le

This was an introduction to Hadoop by Oktay Istanbullu and Hugues LeBars of Yahoo! at the SkillsMatter event in Paris, November 2008

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 458
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
32
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Hadoop Introduction in Paris

  1. 1. Oktay Istanbullu – Hugues Le Bars Yahoo! Technicals Hadoop: Introduction
  2. 2. - 2 - Hadoop: Introduction •  Hadoop, un projet open source •  Hadoop et Yahoo! •  Hadoop Core •  HDFS •  MapReduce: Principes de base et implémentation Hadoop •  Hadoop et Java •  Hadoop à Yahoo!
  3. 3. - 3 - Hadoop: Projet open source •  Hadoop: composante de Nutch, partie recherche internet du projet Lucene. •  Lucene http://lucene.apache.org/ –  Open source search software development –  Lucene Java –  Nutch basé sur Lucene Java, créé en 2003 –  Adoption de Lucene assez étendue, notamment par wikipedia. •  Hadoop a été créé par Doug Cutting, actuellement employé à Yahoo! –  Yahoo! (d’abord Overture) soutien le développement de Nutch –  Développement du NDFS: Nutch Distributed File System, basé sur MapReduce de Google. Naissance de Hadoop.
  4. 4. - 4 - Hadoop: Projet open source http://hadoop.apache.org/ •  23 Janvier 2008 - Hadoop devient un des projets de premier plan de la fondation apache •  Plusieurs sous projets lui sont rattachés: –  Hadoop Core: HDFS + Support pour MapReduce Filesystems –  Hbase: Base de données distribuée –  Pig: langage et framework dediés aux applications distribuées –  ZooKeeper: coordination haute disponibilité et fiable •  Plusieurs partenaires importants: Yahoo!, Facebook, IBM, Quantcast, …
  5. 5. - 5 - Hadoop et Yahoo! •  Plusieurs groupes implémentaient déjà une solution de grid computing (open source ou non) •  Formation du Yahoo! Grid Computing •  Investissement important dans Hadoop •  Pourquoi l’open source ? –  La plupart des composants logiciels utilisés par Yahoo! Sont déjà open source (Apache, Mysql, …) –  Ces solutions étaient potentiellement plus avancées que nos propres solutions –  Investissement existant de grands noms de l’industrie et partenaires ( Ebay, quantcast, internet archive …) –  Moyen d’entrer dans le domaine avec un investissement minimum
  6. 6. - 6 - Hadoop Core •  Hadoop Core = HDFS + Map Reduce
  7. 7. - 7 - HDFS: Hadoop Distributed File System Système de fichiers distribué, les fichiers sont divisés en blocs puis répartis sur un cluster •  Prérequis: –  Tolérance aux pannes •  Cluster de grande taille, machines de base => probabilité de panne assez haute. La tolérance est donc essentielle dès le design. –  Lecture d’un fichier en continu (streaming) •  Optimisation pour les gros fichiers et les applications les traitant d’un bout à l’autre (tous les cas pratiques). –  Taille moyenne des fichiers en GB ou TB –  Toute écriture de fichier est unique, lectures multiples –  “Moving Computation is Cheaper than Moving Data” •  Traiter les données où elles se trouvent •  Lorsque les données d’un programmes sont de taille importante, le point bloquant est le débit en lecture, il convient de ne pas l’aggraver. –  Portable: supporte un parc hétérogène de machines
  8. 8. - 8 - HDFS: Architecture
  9. 9. - 9 - HDFS: Architecture maître esclave •  NameNode (Maître) –  Unique, un NameNode par cluster –  Gère les noms de fichiers •  { nom de fichier classique, nombre de copies, blocks } Ex: {/home/logs/20081112-1, 3, {1, 7, 5} } –  Gère toutes les opérations classiques: open/close/rename, répertoires et le nombre de copies (replication factor) –  Reçoit un message régulier des DataNode et maintient une table précise de leur état –  Gère la réplication des blocs –  Persistance des données •  DataNode (Esclave) –  Exécute les lectures/écritures des blocs par les clients –  Crée/efface/réplique les blocs. N’ont à gérer que des blocs.
  10. 10. - 10 - HDFS: Architecture •  Lors de l’écriture d’un fichier, celui-ci est d’abord écrit dans un fichier temporaire au sein du client lui-même. Lorsque sa taille atteint celle d’un bloc, le NameNode est contacté, il crée le fichier dans HDFS et retourne un DataNode ID où transférer le bloc. Un tel buffering évite les congestions trop rapides. •  Le NameNode essaie de placer les blocs selon leurs position dans les racks (si 3: 2 +1). Eviter de tout avoir dans le même rack, éviter 3 racks différents pour la tolérance aux pannes, et pour éviter un traffic entre les racks trop important.
  11. 11. - 11 - MapReduce [8] : Principes •  Modèle de programmation pour traiter et générer beaucoup de données •  L’utilisateur fournit: –  les données, –  une fonction Map qui permet de générer un ensemble clé/ valeur –  une fonction Reduce qui permet de réduire plusieurs ensembles générés par Map en un seul •  Le framework découpe les données, parallélise les tâches et génère un résultat •  Ex: si k1: nom du fichier et v1 son contenu Map(string k1, string v1) { for each word w in v1: EmitIntermediate(w, « 1 ») } Reduce(k2, Iterator v2) { int result = 0; for each v in v2: result += 1; Emit(AsString(result)); } => Nombre d’occurrences de chaque mot
  12. 12. - 12 - Hadoop Map-Reduce
  13. 13. - 13 - Hadoop Map-Reduce •  Le développeur fournit: –  Les fonctions Map et Reduce et un ensemble de données en entrée •  Workflow –  1ere étape: lecture des données { [clé1, valeur1], … } –  Etape de Mapping: exécution de la fonction Map => nouvel ensemble de { [clé1, valeur1], … } –  Distribution des [clé,valeurs] vers les noeuds de traitement –  Etape Reduce combines toutes les paires à clé identique vers une nouvelle liste clé/valeur réduite. –  Etape d’écriture des clés/valeurs dans des fichiers. •  Toutes les étapes sont distribuées sur plusieurs tâches –  Le Framework assure le scheduling des tâches dans le cluster –  Le Framework assure la tolérance aux pannes. Input 0 Map 0 Input 1 Map 1 Input 2 Map 2 Reduce 0 Reduce 1 Out 0 Out 1 Shuffle
  14. 14. - 14 - Map-Reduce features •  Division des tâches en Map/Reduce –  Meilleure répartition de charge –  Récupération des erreurs plus rapide •  Traiter les données là où elles se trouvent –  Le point bloquant est le débit de lecture/écriture. –  Map-Reduce + DFS y est très efficace: •  Map-Reduce sait où se trouvent les données •  Les tâches sont plannifiées aussi proche des données que possible •  Ré-exécution et exécution spéculative –  Les noeuds moins performant d’un cluster ont tendance à ralentir toute l’exécution où à amener des erreurs –  Hadoop re-exécute les tâches au besoin –  Hadoop exécute plusieurs instances des dernières tâches et prend les résultats de la plus rapide
  15. 15. - 15 - Hadoop Map-Reduce: Architecture •  Architecture Maître/Esclaves •  Map-Reduce “Jobtracker”: Maître –  Collecte les tâches Map/Reduce –  Les assigne aux TaskTrackers –  Supervise les tâches ainsi que l’état des tasktracker, re- exécute celles qui ont échouées –  Il est unique •  Map-Reduce “Tasktrackers”: Esclaves –  Exécute les tâches Map ou Reduce à la demande du JobTracker –  Supervise le stockage et la transmission des données de résultats intermédiaires
  16. 16. - 16 - Hadoop HDFS + MR cluster D D D DTT JobTracker Namenode Machines with Datanodes and Tasktrackers T T TD Client Job Submission HTTP Monitoring UI
  17. 17. - 17 - Exemple: Wordcount // Map public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); // output object collects data } } }
  18. 18. - 18 - Wordcount: Reduce public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }
  19. 19. - 19 - Wordcount: Exécution public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); // local aggregation after Map (decrease size of the data) conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); // Input format: Text conf.setOutputFormat(TextOutputFormat.class); // Output: Text FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); }
  20. 20. - 20 - Hadoop est développé en Java •  Hadoop est écrit en java –  Tourne sur Linux, Window, BSD, MacOS… –  Support Java pour FreeBSD6 •  Mais il supporte plusieurs autres langages: –  C++ via SWIG –  Streaming: commandes Unix (42% des utilisations à Yahoo!) –  PIG (28%, à égalité avec Java) •  Java est un avantage: –  Les projets open source les plus récents sont écrits en java –  La rapidité d’exécution n’est pas le point bloquant: limités par le réseau et la vitesse d’écriture sur le disque. –  Supporte d’autres langages.
  21. 21. - 21 - Hadoop à Yahoo! •  Jan 2006 Doug Cutting devient employé de Yahoo! •  Près d’un membre du PMC sur deux est un Yahoo! •  Un blog dédié: http://developer.yahoo.net/blogs/hadoop/ •  Utilisation pour: –  La recherche internet –  L’analyse des logs –  Ads matching –  Plateforme ouverte disponible à tous les équipes produit Yahoo!
  22. 22. - 22 - Hadoop à Yahoo! •  17k+ machines •  + grand cluster: 2000 nœuds. 4000 nœuds en phase de test. •  Plusieurs PetaOctets de données (compressées, déduppliquées) •  Centaines de milliers de tâches Hadoop tous les mois.
  23. 23. - 23 - Webmap utilise Hadoop •  Webmap est le graphe regroupant toutes les adresses connues par le moteur de recherche Yahoo! •  Il est mis à jour tous les jours grâce à une centaine de tâches Map/Reduce •  Hadoop est extensible: –  1 trilliard de nœuds dans le graphe. –  Taille du fichier résultat: 300 TB compressé –  10000 cores –  Utilise 5 PB d’espace disque •  Développé en C++ / Hadoop
  24. 24. - 24 - Intérêt de la communauté croissant
  25. 25. - 25 - Et Contributions croissantes
  26. 26. - 26 - Hadoop: dernières avancées 4000 nœuds! HDFS Cluster Statistics Capacity : 14.25 PB DFS Remaining : 10.61 PB DFS Used : 233.44 TB DFS Used% : 1.6 % Live Nodes : 4049 Dead Nodes : 226 Map-Reduce Cluster Statistics Nodes: 3561 Map Slots: 4 slots per node Reduce Slots: 4 slots per node Améliorations continues
  27. 27. - 27 - Hadoop: Projet Open Source Apache •  Apache gère des projets pour la communauté: –  Les utilisateurs –  Les contributeurs (soumettent des patches) –  Les committeurs (peuvent les committer) –  Le Project Management Committee: ses membres sont des committeurs et peuvent en élire de nouveaux, ils décident aussi des releases. •  Devenez membres! … Au mérite, accessible à tous. •  Intérêt croissant de la communauté. Contribuez! •  http://hadoop.apache.org/ •  http://developer.yahoo.net/blogs/hadoop/
  28. 28. - 28 - Sources [1] 1.  http://en.wikipedia.org/wiki/Doug_Cutting 2.  http://blog.lucene.com/ Le Blog de Doug Cutting 3.  http://lucene.apache.org/ Lucene 4.  http://en.wikipedia.org/wiki/Lucene Wikipedia Lucene 5.  http://lucene.apache.org/nutch/ Nutch 6.  http://en.wikipedia.org/wiki/Nutch Wikipedia Nutch 7.  http://labs.google.com/papers/gfs.html Google File System 8.  http://labs.google.com/papers/mapreduce.html MapReduce 9.  http://en.wikipedia.org/wiki/Hadoop Wikipedia Hadoop 10.  http://radar.oreilly.com/archives/2007/08/yahoos-bet-on-h.html 11.  http://wiki.apache.org/hadoop/HadoopPresentations
  29. 29. - 29 - Sources [2] •  http://wiki.apache.org/hadoop-data/attachments/HadoopPresentations/ attachments/HadoopEBIG-Oct2008.pdf Introduction à Hadoop à l’East Bay Innovation Group par Owen O’Malley

×