Your SlideShare is downloading. ×
0
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Hadoop Introduction in Paris
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hadoop Introduction in Paris

1,139

Published on

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

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,139
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
24
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Oktay Istanbullu – Hugues Le Bars Yahoo! Technicals Hadoop: Introduction
  • 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 - 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 - 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 - 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 - Hadoop Core •  Hadoop Core = HDFS + Map Reduce
  • 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 - HDFS: Architecture
  • 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 - 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 - 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 - Hadoop Map-Reduce
  • 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - Intérêt de la communauté croissant
  • 25. - 25 - Et Contributions croissantes
  • 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 - 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 - 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 - 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

×