MapReduce & Apache Hadoop

Download MapReduce & Apache Hadoop

Post on 07-May-2015

3.982 views

Category:

Technology

0 download

Embed Size (px)

DESCRIPTION

Einfhrungsvortrag in das MapReduce-Programmiermodell und Apache Hadoop an der TU Berlin am 22. Januar 2010

TRANSCRIPT

<ul><li>1.MapReduce &amp; Apache Hadoop Paralleles Rechnen in ClusternOliver Fischer Technische Universitt Berlin ofischer@swe-blog.net22. Januar 2010 </li></ul><p>2. MapReduce &amp; Apache HadoopFolie 2Inhalt Einfhrung MapReduce Grundlagen Funktionsweise Beispiele Zusammenfassung Apache Hadoop Geschichte Architektur MapReduce-Anwendungen mit Hadoop Beispiele Zusammenfassung Fazit Quellen 3. MapReduce Programmiermodell zur parallelen Verarbeitung von groen Datenstnden Grundlagen Funktionsweise Beispiele 4. MapReduce &amp; Apache Hadoop Folie 4 Grundlagen Funktionsweise BeispieleMapReduce vorgestelltWas ist und kann MapReduce? Programmiermodell zur Verarbeitung und Erzeugung von groenDatenbestnden Ausgelegt fr die parallele Verarbeitung von Datenbestnden in groenClustern auf Standardhardware Auslegung auf hohe Fehlertoleranz Woher kommt MapReduce? Entwickelt durch Google zur Verarbeitung von Rohdaten Inspiriert duch Lisp und dessen Funktionen map und reduce 5. MapReduce &amp; Apache HadoopFolie 5 Grundlagen Funktionsweise Beispielemap und reduce in Lispmap-Funktion Abbildung zwischen Listen Eingabe ist eine Sequenz von Werten und eine Funktion bergebene Funktion verarbeitet sequentiell alle Werte Ergebnis der bergebenen Funktion wird durch map ebenfalls alsSequenz zurckgegeben reduce-Funktion Zusammenfassung von Listen Eingabe ist eine Sequenz von Werten und eine binre Funktion Binre Funktion verbindet alle Werte der Eingabesequenz Ergebnis ist ein einfacher Wert 6. MapReduce &amp; Apache Hadoop Folie 6 Grundlagen Funktionsweise BeispieleNotizen zu MapReduceGrundannahme von MapReduceDie Datenbertragungsrate (network bandwidth) ist die begrenzendeRessource in Clustern. Es ist effizienter die Berechnung zu den Daten zubringen. Was ist neu anders?Klassischer Ansatz: Daten zum Programm Was man vorher wissen sollte Google nutzt fr MapReduce-Anwendungen ein verteiltes Dateisystem(Google File System) Worker fhren auf Map- und Reduce-Funktionen verteilt im Cluster aus Zentraler Master koordiniert Ausfhrung 7. MapReduce &amp; Apache Hadoop Folie 7 Grundlagen Funktionsweise BeispieleMapReduce als Programmiermodell allgemeinProgrammiermodell von MapReduce Map-Phase und Reduce-Phase Parallelisierung durch Phasen Jede Phase wird parallel ausgefhrt Eingabedaten auf verschiedene Rechnern Voraussetzung ist Partitionierbarkeit Beispiele Zhle alle Wrter in einem Text Zhle alle Referer im Logfile 8. MapReduce &amp; Apache Hadoop Folie 8 Grundlagen Funktionsweise BeispieleMap-Phase von MapReduceAufgabe Verarbeitung von Eingabedaten und Erzeugung von Zwischenwerten Signatur map(k1,v1) list(k2,v2)Funktionsweise Eingabe ist Schlssel-Wert-Paar Ausgabe beliebig vieler intermediate key/value pairs Map-Funktion wird vom Anwender implementiert Beispiel map(String key, String value):// key: document name,// value: document contentsfor each word w in value: EmitIntermediate(w, "1"); 9. MapReduce &amp; Apache Hadoop Folie 9 Grundlagen Funktionsweise BeispieleReduce-Phase von MapReduceAufgabe Zusammenfassung der Zwischenergebnisse, Bereitstellung des Endergebnisses Signatur reduce(k2,list(v2)) list(v2)Reduce-Phase Eingabe ist Schlssel und Werte-Menge zu diesem Schlssel Ausgabe von Reduce meistens null oder ein Wert Beispiel reduce(String key, Iterator values):// key: a word, values: a list of countsint result = 0;for each v in values: result += ParseInt(v);Emit(AsString(result)); 10. MapReduce &amp; Apache Hadoop Folie 10 Grundlagen Funktionsweise BeispieleMapReduce als Programmiermodell schematisch WorkerFileSplit 0 map-FunktionFileSplit 1Workerreduce- FileFunktionSplit 2 EingabeSplit 3 WorkerFile map-FunktionFileSplit 4Split 5Workerreduce- FileSplit 6 Funktion WorkerFileSplit 7map-FunktionFileEingabedateien Map-PhaseZwischen-Reduce-Phase Ergebnisseergebnisse 11. MapReduce &amp; Apache Hadoop Folie 11 Grundlagen Funktionsweise BeispieleMapReduce-BeispielAufgabe: Zhle die Wortvorkommen im folgenden Text: Arme haben Arme. Armehaben Beine. Beine haben keine Arme. Arme Beine! WorkerArme haben Arme. Arme haben Beine. Beine habenArme 3 Arme map-FunktionBeine 1 habenhaben 2 Arme. Arme haben Beine. Arme5 WorkerBeine 3reduce-haben 3Funktion keine 1keine Arme. Arme Beine! Beine haben keine Arme. Arme Beine! Arme2WorkerBeine 2map-Funktionhaben 1Keine 1 EingabedateienMap-PhaseZwischen-Reduce-PhaseErgebnisse ergebnisse 12. MapReduce &amp; Apache Hadoop Folie 12 Grundlagen Funktionsweise Beispiele ZusammenfassungZusammenfassung zur MapReduceZusammenfassung Wurzeln von MapReduce in funktionaler Programmierung MapReduce ist ein Programmiermodel, kein Algorithmus Zwei-Phasen-Modell: Map und Reduce Auslegung auf mglichst hohe Parallelitt bei Verarbeitung Neuer Ansatz: Berechnung findet bei den Daten statt, nicht Daten kommen zur Berechung Anwendbar bei allen Problemen mit partitionierbaren Eingaberaum Je kleiner mgliche Partitionen, desto hher erreichbare Parallelitt 13. Apache Hadoop Freies Framework fr MapReduce-Anwendungen Geschichte Architektur MapReduce-Anwendungen Beispiele 14. MapReduce &amp; Apache HadoopFolie 14 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungGeschichte von Apache HadoopEntstehungsgeschichte von Apache Hadoop Februar 2003: erste Google-interne MapReduce-Implementierung Oktober 2003: The Google Filesystem verffentlicht Dezember 2004, MapReduce: Simplifed Data Processing on Large Clusters verffentlicht 2005: Erste Implementierung im Suchmaschinen-Framework Nutch der Apache Software Foundation(Doug Cutting) Februar 2006: Hadoop wird Subprojekt bei Apache Lucene 2008: Hadoop wird Apache Top-Level-Projekt 2009: Hadoop wird in Subprojekte aufgeteilt und neue Projekte auf Hadoop-Basis entstehen Juli 2009: Ein Hadoop-Cluster gewinnt den Terabyte Sort Benchmark 15. MapReduce &amp; Apache HadoopFolie 15 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungKomponenten von Apache HadoopHadoop Distributed File System Verteiltes Dateisystem nach den Vorbild des Google FileSystems Verteilung der Daten im Hadoop-Cluster Kernkomponenten sind NameNode und DataNodes MapReduce Framework zur Entwicklung von Anwendungen nach demMapReduce-Programmiermodell Kernkompenten sind der JobTracker und TaskTracker 16. MapReduce &amp; Apache HadoopFolie 16 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungDas Hadoop Distributed File System (HDFS)Eigenschaften Verteiltes Dateisystem, designt unter der Annahme, das Hardwareausflle normal sind Kapazitt bis in den Petabyte-Bereich Grundnahme: Daten einmal geschrieben, oft gelesen, aber nicht mehr verndert Blockorientiert, Dateien werden in Blcke aufgeteilt, welche im Cluster verteilt werden Datensicherheit durch Blockreplikation Komponenten sind NameNode, SecondaryNameNode und DataNodes 17. MapReduce &amp; Apache HadoopFolie 17 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungKomponenten des HDFS: NameNode und SecondaryNameNodeNameNode Verwaltet die Metadaten des HDFS Koordiniert die Verteilung von Dateien im HDFS Stellt nur Metadaten zur Verfgung, kein Datentransfer Regelt den Zugriff von Clients auf die Dateien im FileSystem berwacht das HDFS auf Ausflle von Nodes SecondaryNameNode Backupt die nderungen seit dem letzten Start des HDFS an den HDFS- Metadaten 18. MapReduce &amp; Apache HadoopFolie 18 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungKomponenten des HDFS: DataNodeDataNode Verwaltet Blcke der Dateien auf den Clusternodes Ein DataNode pro Clusternode Meldet seinen Zustand per Heartbeat an den NameNode Zustndig fr den Datentransfer der Blcke zu anderen DateNodes und zu anfragenden Clients 19. MapReduce &amp; Apache HadoopFolie 19 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungDas MapReduce-Framework von HadoopEigenschaften MapReduce-Programmiermodel Grundfunktionalitt abgedeckt Entwickler stellt Map- und Reduce-Funktion Grundfunktionalitt ber eigene Implementierungen nderbar MapReduce-Anwendung wird als Job bezeichnet Kernkomponenten sind der JobTracker und der TaskTracker 20. MapReduce &amp; Apache HadoopFolie 20 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungJobTracker und TaskTrackerJobTracker Verteilt Map-Tasks und Reduce-Tasks auf Cluster-Nodes Steuert die Ausfhrung der Jobs im Cluster berwacht die Ausfhrung der Tasks und startet ggf. Tasks neu Pro Cluster nur ein JobTracker TaskTracker Fhrt Map- oder Reduce-Task lokal auf einem Node im Cluster aus Sendet Statusinformationen an JobTracker Beliebig viele TaskTracker mglich 21. MapReduce &amp; Apache HadoopFolie 21 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungBeispiel-Mini-Hadoop-Cluster flow sl01.h ado o p : Serversl03.h ado o p : Server z eus.h ad o op : S erver: TaskTr acke r: TaskTr acke r : JobTrack er flow : Data Node : Data Node: Name Nodeflow flow flow flow flow flow sl02.h ado o p : Serversl04.h ado o p : Server : Se condar yName Node : Data Node: Data Node : TaskTr acke r: TaskTr acke r flow Ein Mini-Cluster mit fnf Knoten 22. MapReduce &amp; Apache HadoopFolie 22 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungMapReduce-Anwendungen mit HadoopAllgemeines Hadoop stellt komplettes Framework fr MR-Anwendung bereit Funktionsweise im Wesentlichen analog zu Googles MapReduce-Programmiermodell Entwickler kann sich auf Map- und Reduce-Funktion beschrnken Entwickler kann durch eigene Implementierungen Hadoop-Verhaltenndern Ausfhrung von Jobs erfolgt sequentiell (Standardverhalten) 23. MapReduce &amp; Apache HadoopFolie 23 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungZustndigkeiten in einem MapReduce-Job Eingabe lesen;Job Configuration Aufteilung in Splits Format und Ort der Input Splitting &amp;Distribution EingabeInput FormatVerarbeitung derInput LocationSplits (einer pro Task) Start of Map Tasks Map-Funktion MapperSortierung Map-Ausgabe;Shuffle, Partition/Sort perZuordnung derMap OutputPartitionierung frMapper-Ausgabe PartitionerReducerzu Reducer-Task Anzahl der ReducerMerge Sort for Map Zusammenfgen derOutputs for eachMap-Partitionen frReducer-FunktionReducerReduce Taskjeden Reducer Ausgabetyp derOutput Key TypeMap-FunktionStart of Reduce TasksZusammenfassungOutput Key Valueder Ergebnisse einerPartitionFormat und Ort Output Formatder AusgabeOutput LocationCollection of Final OutputAusgabe derErgebnisseBenutzerHadoop- FrameworkQuelle: Nach Venner 24. MapReduce &amp; Apache HadoopFolie 24 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungZustndigkeiten in einem MapReduce-Job Worker File Split 0 map-Funktion File Split 1Worker reduce- File Funktion Split 2 Eingabe Split 3 Worker File map-Funktion File Split 4 Split 5Worker reduce- File Split 6 Funktion Worker File Split 7 map-Funktion File EingabedateienMap-PhaseZwischen- Reduce-Phase Ergebnisseergebnisse Mapper.class Reducer.class Framework Partitioner.classFramework 25. MapReduce &amp; Apache HadoopFolie 25 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungErstellung einer MapReduce-AnwendungMapReduce-Anwendungen schreiben Zentrale Framework-Klassen sind Job und Configuration Job stellt die Sicht des Ausfhrenden auf den Job dar ber Job-Klasse legt Entwickler fest:Eingabe- und AusgabeformateImplementierung der Map- und Reduce-FunktionAnzahl der ReducerPartionierungsfunktion Configuration dient zur bergabe von Ressourcen an den Job Anwendung selber normale Klasse mit main()-Methode Anwendung wird ber Shell-Skript an Hadoop bergeben 26. MapReduce &amp; Apache HadoopFolie 26 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungBeispielanwendung: Logfile-SortierungAnwendungsszenario (etwas konstruiert) Eine Anwendung luft verteilt auf unterschiedlichen Servern Anwendung setzt Geschftsprozesse um Einzelne Schritte eines Geschftsprozesses knnen aufunterschiedlichen Servern ausgefhrt werden Jeder Prozesschritt wird in ein lokales Logfile geschrieben Regelmig mssen alles Schritte eines Prozesses zusammengesuchtwerden, um die Prozesse analysieren zu knnen Problem: Logfile-Eintrge sind auf unterschiedliche Files aufgeteilt undda wir natrlich sehr erfolgreich sind, sind unsere Logfiles riesig 27. MapReduce &amp; Apache HadoopFolie 27 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungLogFileSorter Der MapperStandard-Implementierung als Identittsfunktionprotected void map(KEYIN key, VALUEIN value, Context context) throws IOException, InterruptedException {context.write((KEYOUT) key, (VALUEOUT) value);}Input Format erzeugtEingabe-Schlssel und -WerteMapper fr die Logfile-Sortierung(Klasse TextInputFormat bergibtpublic class LFSMapperSort Zeilennummer als Key und die Zeile selbst alsextends Mapper { Value)private LFSBPKey bpKey = new LFSBPKey();protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {Ermittlungder Business Process ID und des String logLine = value.toString(); Schritts int firstBlank = logLine.indexOf(" "); int firstSlash = logLine.indexOf("/");String bpidAsString = logLine.substring(3, firstSlash); String step = logLine.substring(firstSlash + 1, firstBlank);bpKey.set(Integer.valueOf(bpidAsString), Integer.valueOf(step));context.write(bpKey, value); }Erzeugung des Keys fr die Ausgabe} Key vom Framework fr Sortierung vor der Ausgabe von erzeugtem Schlssel und Wert Reduce-Phase benutzt 28. MapReduce &amp; Apache Hadoop Folie 28 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungLogFileSorter Der ReducerStandard-Implementierung als Identittsfunktionprotected void reduce(KEYIN key, Iterable values, Context context)throws IOException, InterruptedException {for (VALUEIN value: values) {context.write((KEYOUT) key, (VALUEOUT) value);}}Reducer fr die Logfile-Sortierungpublic class LFSReducerextends Reducer {protected void reduce(LFSBPKey key, Iterable values, Context context) throws IOException, InterruptedException { Eingabe: vom Mapper erzeugte Schlssel und for (Text value: values) { context.write(null, value); alle Werte zum gleichen Schlssel } }} Reducer arbeitet immer auf allen Werteneines SchlsselsKey wird verworfenAusgabe nur eigentliche Logzeile 29. MapReduce &amp; Apache HadoopFolie 29 Geschichte Architektur MapReduce-Anwendungen Beispiele ZusammenfassungLogFileSorter Der Jobpublic class LogFileSorter {Auswertung der Befe public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();Job job = new Job(conf, LogFileSearch.class.getSimpleName());job.setJarByClass(LogFileSearch.class); job.setInputFormatClass(TextInputFormat.class); job.setMapperClass(LFSMapperSearch.class); job.setOutputKeyClass(LFSBPKey.class); Konfiguration des Jobs job.setOutputValueClass(Text.class); (Zuweisung der Zustndigkeiten) job.setPartitionerClass(LFSBPPartioner.class); job.setReducerClass(LFSReducer.class);FileInputF...</p>