Pluspunkt Skalierung
Die wichtigste Eigenschaft von Map-Reduce ist die lineare Skalierbarkeit des Systems. Vereinfacht gesagt: Die Berechnungsdauer einer Map-Reduce-Anwendung halbiert sich in etwa, wenn man die Größe des Clusters verdoppelt. In der Praxis hängt das tatsächliche Skalierungsverhalten natürlich von vielen Faktoren wie beispielsweise der Art des zu lösenden Problems ab. Hinweise für den Einsatz des Framework gibt der Kasten "Hadoop in der Praxis".
Hadoop in der Praxis
Neben der offiziellen Hadoop-Distribution von Apache [3] ist vor allem "Cloudera's Distribution Including Apache Hadoop" (CDH) weit verbreitet. Auf der Webseite von Cloudera [8] gibt es unter anderem fertig konfigurierte Systemabbilder für diverse virtuelle Maschinen zum Herunterladen.
Tutorials: Eine umfassende Einführung in Hadoop findet sich in Tom Whites Buch "Hadoop: The Definitive Guide" [9]. Auf den Webseiten von Cloudera gibt es außerdem einige Schritt-für-Schritt-Beispiele mit kleinen Datensätzen.
Programmiersprache: Hadoop ist in Java implementiert, weshalb auch die Map- und Reduce-Funktionen in der Regel in Java umgesetzt werden. Es gibt aber auch Möglichkeiten, andere Sprachen wie beispielsweise Python oder C++ einzubinden.
Java-API: Seit der Hadoop-Version 0.20 gibt es ein neues Map-Reduce-API für Java. Die Klassen des alten API finden sich im Java-Package »org.apache.hadoop.mapred.*«
, die neuen im Package »org.apache.hadoop.mapreduce.*«
. Viele verfügbaren Beispiele verwenden noch das alten API. Dennoch empfiehlt es sich für Neueinsteiger, gleich auf die neue Schnittstelle zu setzen. Es gilt zu beachten, dass in einem Map-Reduce-Programm nicht beide Versionen gemeinsam zum Einsatz kommen dürfen.
Neben der Skalierbarkeit besitzt Hadoop weitere Eigenschaften, die das Entwickeln von verteilten Anwendungen erleichtern. Beispielsweise fängt es Hardware-Ausfälle automatisch ab und führt fehlgeschlagene Teilaufgaben erneut aus. Außerdem startet es Teilaufgaben gegen Ende der Berechnung mehrfach, um zu verhindern, dass vereinzelte Ausreißer den Gesamtablauf unnötig verzögern. Dieses Vorgehen ist als spekulative Ausführung bekannt.
Die automatische Parallelisierung der Ausführung durch Hadoop bedeutet allerdings nicht, dass man sich hierzu keine Gedanken mehr machen sollte. Der Entwickler muss das zu lösende Problem in einer recht starre Folge von Map- und Reduce-Phasen abbilden, was oftmals sehr schwierig oder gar unmöglich ist. Dieses doch relativ unflexible Schema ist daher auch einer der Haupt-Kritikpunkte an Map-Reduce.
Map-Reduce vs. SQL
Große Datenbestände zu verwalten und zu analysieren gilt als klassische Domäne von relationalen Datenbanken, die mit SQL eine deklarative Anfragesprache besitzen. Bedeutet nun der breite Einsatz von Map-Reduce, dass relationale Datenbanken überflüssig werden? Diese Frage lässt sich nur von Fall zu Fall beantworten. Die folgenden Aspekte können als Orientierungshilfe dienen:
Datengröße: Map-Reduce eignet sich gut für sehr große Datenmengen, die die Verarbeitungskapazität eines einzelnen Servers sprengen. Um mit relationalen Datenbanken in vergleichbare Dimensionen vorzustoßen, muss die Anfragebearbeitung ebenfalls parallelisiert erfolgen. Das ist zwar möglich, doch skalieren diese Ansätze typischerweise nicht linear mit der Anzahl verwendeter Rechner.
Zugriffsmuster: Eine der Ideen hinter Map-Reduce ist es, Daten in großen Blöcken sequenziell zu verarbeiten, um die Leserate zu optimieren. Im Gegensatz dazu lassen sich Anfragen, die nur einen Teil der Daten betreffen, mit Hilfe von Indexen bei relationalen Datenbanken effizienter beantworten. Soll Map-Reduce eine solche Anfrage bearbeiten, muss es den gesamten Datensatz lesen.
Datenrepräsentation: Eine der Annahmen von relationalen Datenbanken ist, dass Daten eine inhärente Struktur (ein Schema) besitzen. Diese Struktur nutzen die Anwender, um eine möglichst redundanzfreie Speicherung der Daten in verschiedenen Tabellen zu erreichen. Für Anfragen bedeutet dies jedoch, dass sie oft Informationen aus verschiedenen Tabellen kombinieren müssen. Map-Reduce kennt das Konzept eines Schemas nicht, sondern überlässt es dem Benutzer, während der Map-Phase die Daten in die gewünschte Form für die Reduce-Phase zu konvertieren. Das hat den Vorteil, dass sich Map-Reduce universeller einsetzen lässt als relationale Datenbanken.
Ad-hoc-Anfragen: Eine der großen Stärken von relationalen Datenbanken ist die deklarative Anfragesprache SQL. Bei Map-Reduce dagegen muss der Programmierer jede Aufgabe individuell lösen.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 5 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





