22.01.2015 Aufrufe

w26M2

w26M2

w26M2

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Big-Data-Technologien – Wissen für Entscheider<br />

MapReduce-Programmierung als Anwendungs-<br />

Hemmnis<br />

Als problematischer Blocker für die Anwendung von<br />

Hadoop hat sich bereits in den Kinderjahren dieser Technologie<br />

die Notwendigkeit gezeigt, die Verarbeitungs-<br />

Jobs in Java programmieren zu müssen. Dies setzt neben<br />

guten Entwicklerkenntnissen ein tiefes Verständnis der<br />

Hadoop-Arbeitsweise voraus.<br />

Komponenten verfolgen den Ansatz, durch einfache,<br />

schnell erlernbare Sprachen den Zugang zu Hadoop<br />

zu erleichtern und problemorientiert – befreit von den<br />

Details des MapReduce-Frameworks – arbeiten zu können.<br />

Die Jobs müssen zwar weiterhin in einer Programmiersprache<br />

formuliert werden, der Erfolg der Statistiksprache<br />

R und der Office-Makrosprache VBA zeigen aber,<br />

dass das kein Hinderungsgrund für eine weite Verbreitung<br />

sein muss.<br />

In der Praxis stellt sich immer wieder die Frage, ob ein<br />

bestimmtes Problem in einem Hadoop-Cluster effektiv<br />

gelöst werden kann. Ohne auf theoretische Aspekte der<br />

Berechenbarkeit im MapReduce-Paradigma einzugehen,<br />

lässt sich die allgemeine Antwort umgangssprachlich so<br />

formulieren: »Prinzipiell lassen sich alle (berechenbaren)<br />

Aufgaben in Hadoop lösen – man muss nur den passenden<br />

Java-Programmcode dazu finden!«<br />

Die Algorithmen müssen also in einem speziellen<br />

MapReduce-Stil formuliert werden, was für bestimmte<br />

Aufgabenstellungen eine durchaus anspruchsvolle Aufgabe<br />

darstellt. Ein typisches Beispiel dafür ist die Implementierung<br />

einer INNER JOIN-Operation, wie man sie aus<br />

relationalen Datenbanksystemen kennt und wie sie in der<br />

Hadoop-Batchverarbeitung sehr häufig vorkommt. Was<br />

im deklarativen Datenbank-Standard SQL ohne nachzudenken<br />

direkt ausgedrückt werden kann, muss in einem<br />

MapReduce-Programm durch diverse Zeilen Java-Code<br />

beschrieben werden – dies beinhaltet die Möglichkeit von<br />

Fehlern oder eines ineffizienten Jobs. Der Entwickler ist<br />

vollständig selbst für die Optimierung zuständig.<br />

Sicherlich stellt allein schon die Verwendung einer<br />

komplexen Hochsprache, wie Java oder C#, in einer<br />

Programmierumgebung wie Eclipse oder Visual Studio<br />

für Geschäftsanwender (wie z. B. Business Analysten)<br />

eine zu hohe Hürde dar. Um die Schwelle für die Adaption<br />

von Hadoop zu senken, war es also notwendig, die<br />

Komplexität der Erstellung der MapReduce-Jobs deutlich<br />

zu vermindern. Genau aus diesem Grund wurden die<br />

Apache-Projekte Pig und Hive ins Leben gerufen. Beide<br />

Pig als prozedurale Hadoop-Erweiterung<br />

Pig wurde ursprünglich im Jahre 2006 bei Yahoo! entwickelt,<br />

um auch Nicht-Programmierern die Arbeit mit<br />

Hadoop zu ermöglichen. Daten-Analysten ist es mittels<br />

der mit Pig verbundenen Sprache Pig Latin möglich,<br />

eigene Skripte zu entwickeln, ohne die Low-Level-Java-<br />

Programmierung zu verwenden. Pigs Anwendungsbereiche<br />

sind die Datenintegration und Manipulation. Pig Latin<br />

ist eine Datenfluss-Programmiersprache, mit der sich<br />

Verarbeitungs-Pipelines beschreiben lassen, die dann vom<br />

Pig Framework in MapReduce-Jobs überführt werden. Der<br />

Begriff Pig ist übrigens kein Acronym, sondern eher eine<br />

Metapher. Die folgenden Kernsätze aus der »Pig Philosophy«<br />

machen klar, worum es geht:<br />

• »Pigs eat anything« – mit Pig lassen sich beliebige<br />

Daten verarbeiten;<br />

• »Pigs live anywhere« – Pig kann innerhalb und außerhalb<br />

von Hadoop Clustern verwendet werden;<br />

• »Pigs are domestic Animals« – Pig ist einfach in der<br />

Anwendung;<br />

• »Pigs fly« – Pig kann Daten schnell verarbeiten.<br />

Dass die Arbeit mit Pig Latin tatsächlich recht einfach<br />

ist, soll das kurze Pig Latin-Skript in Abbildung 11<br />

verdeutlichen 57 .<br />

Vermutlich wird jemand, auch wenn er nie zuvor mit der<br />

Pig Latin-Programmiersprache zu tun hatte, mehr oder<br />

weniger auf Anhieb verstehen, worum es in diesem Beispiel<br />

geht: Rohdaten werden aus einem HDFS-Verzeichnis<br />

57<br />

Vgl.: Wikipedia-Eintrag zu Pig: http://en.wikipedia.org/wiki/Pig_(programming_tool)<br />

49

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!