bigdata:hadoop
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
bigdata:hadoop [2015/10/05 20:51] – [Hadoop Distributed File System] brueck | bigdata:hadoop [2015/10/05 21:02] – [Hadoop] brueck | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Hadoop ====== | ====== Hadoop ====== | ||
+ | {{ : | ||
**Hadoop** ist ein in Java geschriebenes und quelloffenes Framework für das Verarbeiten und Analysieren großer Datenmengen auf verteilten Systemen der Apache Software Foundation. Ursprünglich wurde es 2005 von Doug Cutting und Mike Cafarella bei Yahoo! entwickelt. | **Hadoop** ist ein in Java geschriebenes und quelloffenes Framework für das Verarbeiten und Analysieren großer Datenmengen auf verteilten Systemen der Apache Software Foundation. Ursprünglich wurde es 2005 von Doug Cutting und Mike Cafarella bei Yahoo! entwickelt. | ||
Zeile 6: | Zeile 7: | ||
In gewisser Weise übernimmt Hadoop für verteilte Systeme die Rolle des Betriebssystems auf Cluster-Ebene (die einzelnen Maschinen haben immer noch ihr eigenes) ([[bigdata: | In gewisser Weise übernimmt Hadoop für verteilte Systeme die Rolle des Betriebssystems auf Cluster-Ebene (die einzelnen Maschinen haben immer noch ihr eigenes) ([[bigdata: | ||
+ | |||
+ | (Grafik-Quelle: | ||
Zeile 39: | Zeile 42: | ||
- | ==== MapReduce ==== | + | ===== MapReduce |
Eine der Ideen, die Hadoop zugrunde liegen, ist, dass es effektiver ist, Berechnungen zu den Daten zu bringen, anstatt Die Daten zu verschieben, | Eine der Ideen, die Hadoop zugrunde liegen, ist, dass es effektiver ist, Berechnungen zu den Daten zu bringen, anstatt Die Daten zu verschieben, | ||
Zeile 46: | Zeile 49: | ||
MapReduce-Operationen laufen im Wesentlichen in drei Schritten ab: | MapReduce-Operationen laufen im Wesentlichen in drei Schritten ab: | ||
- | === Map === | + | |
- | Zunächst wird ein Inputfile (typischerweise vom HDFS) geladen, in **FileSplits** aufgeteilt und auf unterschiedliche Knoten verteilt. Dies erlaubt eine effiziente Verarbeitung auch sehr großer Inputfiles durch die massiv verteilte, parallele Arbeit der Mapper, die auf je einem solchen Split zum Einsatz kommen. Dabei geht das Splitting nach Bytelänge vor und weiß nichts über die interne Struktur der Dateien ([[bigdata: | + | ==== Map ==== |
+ | Zunächst wird ein Inputfile (typischerweise vom HDFS) geladen, in **FileSplits** aufgeteilt und auf unterschiedliche Knoten verteilt. Dies erlaubt eine effiziente Verarbeitung auch sehr großer Inputfiles durch die massiv verteilte, parallele Arbeit der Mapper, die auf je einem solchen Split zum Einsatz kommen. Dabei geht das Splitting nach Bytelänge vor und weiß nichts über die interne Struktur der Dateien ([[bigdata: | ||
Es stehen einige Inputformate zur Verfügung: | Es stehen einige Inputformate zur Verfügung: | ||
Zeile 55: | Zeile 59: | ||
| KeyValueInputFormat | | KeyValueInputFormat | ||
| SequenceFileInputFormat| Hadoop-spezifisches Binärformat | | SequenceFileInputFormat| Hadoop-spezifisches Binärformat | ||
- | (Nach [[bigdata: | + | (Nach [[bigdata: |
- | === Combine === | + | ==== Combine |
- | Die Combine-Phase ist eine optionale Phase, die zu Optimierungszwecken verwendet werden kann. Sie findet nach dem Mapper und vor dem Shuffle statt, also bevor der Output der Map-Phase vom Hauptspeicher auf Disk geschrieben wird. Der **Combiner** wird auch als „Lokaler Reducer“ bezeichnet, da er nur auf den Daten einer Maschine arbeitet. Dabei werden die Key-Value-Paare der Map-Phase nach dem Schlüssel zusammengefasst und die Werte entsprechend zusammengerechnet. Auf diese Weise kann die Datenmenge noch einmal reduziert werden. Der Output des Combiners wird dann als Input an den Reducer übergeben. (Vgl. [[bigdata: | + | Die Combine-Phase ist eine optionale Phase, die zu Optimierungszwecken verwendet werden kann. Sie findet nach dem Mapper und vor dem Shuffle statt, also bevor der Output der Map-Phase vom Hauptspeicher auf Disk geschrieben wird. Der **Combiner** wird auch als „Lokaler Reducer“ bezeichnet, da er nur auf den Daten einer Maschine arbeitet. Dabei werden die Key-Value-Paare der Map-Phase nach dem Schlüssel zusammengefasst und die Werte entsprechend zusammengerechnet. Auf diese Weise kann die Datenmenge noch einmal reduziert werden. Der Output des Combiners wird dann als Input an den Reducer übergeben. (Vgl. [[bigdata: |
- | === Reduce === | + | ==== Reduce |
- | Wenn die Map-Phase abgeschlossen ist, müssen die entstandenen Zwischenergebnisse (Key-Value-Paare), | + | Wenn die Map-Phase abgeschlossen ist, müssen die entstandenen Zwischenergebnisse (Key-Value-Paare), |
Das OutputFormat kann dabei bestimmt werden, ähnlich wie das InputFormat: | Das OutputFormat kann dabei bestimmt werden, ähnlich wie das InputFormat: | ||
Zeile 69: | Zeile 73: | ||
| SequenceFileOutputFormat | Schreibt binäre Files für das Lesen in darauffolgenden MapReduce-Jobs | | | SequenceFileOutputFormat | Schreibt binäre Files für das Lesen in darauffolgenden MapReduce-Jobs | | ||
| NullOputFormat | | NullOputFormat | ||
- | (Nach [[bigdata: | + | (Nach [[bigdata: |
- | ==== YARN ==== | + | ===== YARN ===== |
**YARN** steht für „**Y**et **A**nother **R**esource **N**egotiator“ („noch ein Ressourcen-Vermittler“) oder auch **MapReduce 2.0** (**MRv2**) und kam als wichtigste neue Komponente des Hadoop 2 Upgrades und übernimmt den Part des Ressourcen-Managements und Job-Schedulings und kommt so als Nachfolger des MapReduce-Frameworks daher. Es bildet eine neue Abstraktionsschicht, | **YARN** steht für „**Y**et **A**nother **R**esource **N**egotiator“ („noch ein Ressourcen-Vermittler“) oder auch **MapReduce 2.0** (**MRv2**) und kam als wichtigste neue Komponente des Hadoop 2 Upgrades und übernimmt den Part des Ressourcen-Managements und Job-Schedulings und kommt so als Nachfolger des MapReduce-Frameworks daher. Es bildet eine neue Abstraktionsschicht, | ||
{{ bigdata: | {{ bigdata: | ||
- | (Bild-Quelle: | + | (Bild-Quelle: |
- | === Architektur === | + | ==== Architektur |
Ein YARN-Cluster besteht aus folgenden Komponenten: | Ein YARN-Cluster besteht aus folgenden Komponenten: | ||
Zeile 90: | Zeile 94: | ||
* **Container** (pro Applikation): | * **Container** (pro Applikation): | ||
- | (Vgl. [[bigdata: | + | (Vgl. [[bigdata: |
{{ bigdata: | {{ bigdata: | ||
- | (Bild-Quelle: | + | (Bild-Quelle: |
- | Das Trennen des Ressourcenmanagements von MapReduce durch die YARN-Architektur, | + | Das Trennen des Ressourcenmanagements von MapReduce durch die YARN-Architektur, |
bigdata/hadoop.txt · Zuletzt geändert: 2016/06/27 23:12 von hohmann