w26M2
w26M2
w26M2
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