Hadoop-Cluster mit Einplatinencomputern

Foto 1

Der Raspberry Pi wurde mit dem Ziel entwickelt, einen einfachen und vor allen Dingen preiswerten Computer anbieten zu können. Dieser Computer sollte als Lerncomputer, Informatik Studenten an die Grundlagen der Programmierung heranführen. 1.75 Mio. Raspberry Pis wurden bisher verkauft. Kein Wunder also, dass auch andere Anbieter Einplatinencomputer herausbrachten, die das ursprüngliche Design an der einen oder anderen Stelle erweitert haben. Preislich liegen diese Platinen zwar entsprechend höher, bieten sie dafür aber interessante Features wie mehr Haupt- oder Flashspeicher, Festplatteneinschlüsse oder WLAN. So war das Cubieboard eines der ersten Einplatinencomputer mit SATA-Schnittstelle an der 2.5 Notebook-Festplatten angeschlossen werden konnten. Dieses ARM-basierte Board mit seinem doppelt so großen Hauptspeicher wie der Raspberry Pi, eignet sich denn auch für komplexere Projekte wie es der Aufbau eines vollwertigen Big-Data-System mit Hadoop 2.2.0 nötig macht. Mehr dazu am 6. November auf dem Special Day Big Data auf der W-JAX.

W-JAX Speakerbutton_de

 

Neuer Bienenstock – Neues Hive 0.11 Release verfügbar

Hive

Da haben sich alle Entwickler des freien Datawarhouses in den letzten Monaten mächtig ins Zeug gelegt. Seit der letzten Release-Veröffentlichung vom Januar diesen Jahres wurde 350 Tickets abgearbeitet. Neben einer Reihe von Bug-Fixes kamen auch einige neue Funktionen hinzu. Dazu gehören vor allem so wichtige Neuerungen wie:

  • Das neue Optimized Row Columnar (ORC) Dateiformat
  • Der neue HiveServer2 für die Anbindung mehrerer, gleichzeitiger (JDBC/ODBC) Verbindungen
  • Neue OLAP-Funktionen für das Windowing
  • Den neuen Datentyp DECIMAL
  • Implementierung des TRUNCATE Befehls, welcher die Daten innerhalb einer Tabelle löscht, deren Metadaten aber erhält

Bleibt zu hoffen, dass die Anbieter von Hadoop Distributionen wie Cloudera, Hortonworks, Intel, IBM und EMC hier bald eine Integration vornehmen.

Himbeeren für den Elefanten – Hadoop Cluster mit Raspberry Pis

Auch wenn ein Hadoop-Cluster sich auf gewöhnlicher Server-Hardware einrichten lässt, sind auch schon bei kleinen Clustern mit 4 bis 5 Nodes 5-stellige Eurobeträge fällig. So beschreibt Eric Sammer von Cloudera in Hadoop Operation das für die NameNode eines kleinen Clusters bereits 24GB RAM und eine zwei Quardcore CPUs nötig sind. Für die DataNodes dann noch mal 48GB und entsprechend viele SAS Platten.

Um den Umgang mit Hadoop zu lernen ist dieser finanzielle Aufwand nicht zu rechtfertigen. Aus diesem Grund gehen immer mehr wissenschaftliche Einrichtungen dazu über ihren Schülern und Studenten mit entsprechenden Gutscheinen von Amazon ausgestattet, um die Erstellung und Nutzung paralleler Algorithmen auf gesponserten EC2-Instanzen zu lehren.

Bryan Wann zeigt in Seinem Blog-Post auf, dass es auch anders geht. Er hat aus 7 Raspberry Pis, einem Switch, 32GB SDHC Karten und einem HELMER-Unterschrank von IKEA ein Mini-Hadoop-Cluster aufgebaut. Eine sehr coole Idee. Leider krankt es noch an der geringen RAM-Ausstattung und dem fehlenden SATA-Interface um daraus mehr zu machen, als nur ein akademisches Projekt. Vielleicht sollte man das ganze mal mit Cubieboard testen.

Groovy Baby – Datawarehousing mit Hive, Thrift und Groovy


Apaches Datawarehouse-System Hive lässt sich nicht nur über die Hive-Shell sondern auch remote über den Hiveserver abfragen. Dazu muss dieser mit geeigneten Rechten gestartet werden, ein lauffähiges Hadoop-System vorausgesetzt. Am besten ist es, man nutzt einen dedizierten Linux-Client als Hiveserver der sich dann mit der eigentlichen Hive-Installation verbindet. Im folgenden Beispiel setze ich die Installation von CDH4.1 voraus. Läuft erstmal der Hiverserver, ist die Hadoop-Distribution aber eher nebensächlich. Auf Port 10000 läst sich der Server starten mit

$ nohup hive --service hiveserver -p 10000 &

und sicher in den Hintergrund legen, wo er auf eingehende Nachrichten über das Thrift-Protokoll wartet. Auf dem Client muss Groovy lediglich die nötigen Hadoop und Hive-Bibliotheken
finden. Auf dem genutzten Ubuntu-System geschied dies am einfachsten über das hinzufügen der nötigen JAR-Pfade in der Datei

$ vi /etc/groovy/groovy-starter.conf

Folgende Zeilen müssen dazu hinzugefügt werden:

# Hadoop libraries
load /usr/lib/hadoop/lib/*.jar
load /usr/lib/hadoop-0.20-mapreduce/lib/*.jar
 
# hive libraries
load /usr/lib/hive/lib/*.jar

Danach ermöglich folgendes Groovy-Script die einfache Abfrage einer bestehenden Datenbank meine_datenbank und der Tabelle meine_tabelle mit:

1
2
3
4
5
6
7
8
9
10
11
12
import org.apache.hadoop.hive.service.*;
import org.apache.thrift.protocol.*;
import org.apache.thrift.transport.*;
 
transport = new TSocket("localhost",10000);
protocol = new TBinaryProtocol(transport);
client = new HiveClient(protocol);
transport.open();
client.execute("SELECT * FROM meine_datenbank.meine_tabelle LIMIT 10");
data = client.fetchAll();
println data.toString();
transport.close();

Nützlich ist bei eigenen Experimenten mit Thrift, Hive und Groovy ist auch die Groovy-Shell, welche interaktive Abfragen und Autovervollständigung ermöglicht.

Crunch hilft bei der MapReduce Implementierung

20121229-085440.jpg
Das neue Apache Incubator Projekt Crunch versucht die Implementierung von Java-basierten MapReduce Programmen zu vereinfachen.
Crunch implementiert dabei eine weitere Absteaktionsschicht auf Hadoops MapReduce-API um wiederkehrende Muster wie das Sortieren und Gruppieren von Elementen zu vereinfachen.
Dazu nutzt Crunch im Kern die beiden neuen Java-Typen PCollection und PTable. Auf beiden Java-Collections können foldende, einfache Operationen ausgeführt werden:

  1. parallelDo – ruft eine Benutzerdefinierte Methode mit einer PCollection auf und liefert eine PCollection zurück
  2. groupByKey – Sortiert und Gruppiert die Elemente einer PTable-Collection nach ihren Schlüsseln
  3. combineValues – Führt assoziative Operationen auf den Werten von PTable aus
  4. union – Behandelt zwei oder mehr PCollections als eine einzige PCollection

Crunch biete darüber hinaus weitere Operationen, welche auf diesen einfachen Operationen aufbauen. So lassen sich, mit deutlich weniger Code als die normale MapReduce-API von Hadoop bietet, auch komplexe Datenverarbeitungs-Pipelines implementieren.

Interessant ist auch der Scala-Wrapper Scrunch, welcher den einfachen Zugriff auf die Crunch-API von Scala aus ermöglicht.

Initiiert wurde Crunch von Cloudera.

Microsoft bringt eigene Hadoop Distribution HDinsight

20121105-063526.jpg

Anlässlich der Strata- und Hadoop World Konferenz präsentierte Microsoft die eigene Hadoop Distribution HDinsight, welche zusammen mit Hortonworks entstanden ist.

Die Produkteinführung kommt mit zahlreichen Ankündigungen.So ist neben einer Version für den Windows Server auch implementierungen für Microsofts Cloud Plattform Azur verfügbar.

HDinsight nutzt die quelloffene Hortonworks Hadoop Data Platform (HDP). Neben Anbindungen zu Excel und Power Pivot. Eine eindrucksvolle Demo findet sich auf Vimeo.

Darüber hinaus wurden JavaScript und .NET SDKs für die Entwicklung von Map Reduce Anwendung vorgestellt. Man darf gespannt sein, wohin Microsofts Hadoop Reise noch geht.

Mit der Schwarzfersenantilope auf Googles Spuren: Clouderas Impala

20121029-062335.jpg

Vielen Firmen gehen Tools wie Pig, Hive und HBase nicht weit genug. Statt große Datenmengen im Batchbetrieb zu verarbeiten geht der Trend ganz klar hin zu Lösungen für Ad-hoc-Abfragen in Echtzeit.

Eine solche Engine gibt es seit kurzem auch von einem der größten Hadoop-Distributionsanbieter Cloudera. Mit Impala (Schwarzfersenantilope) präsentiert Cloudera eine Open Source Lösung auf Basis von Hadoop und HBase.

Die Architektur von Clouderas Impala geht zurück auf Arbeiten von Marcel Kornacker bei Google für das Projekt F1. Die F1 Datenbank löst in Googles Ad-Infrastruktur die MySQL-basierte Lösung ab.

Ebenso wie F1 versucht Clouderas Impala das beste beider Welten zu vereinen. Basierend auf bewährten Technlologien für die Fehlertoleranz, Skalierbarkeit und transparente Datenverteilung wie Hadoop und HBase sie bieten, setzt Impana eine Query-Engine für die Echtzeitabfrage mit Hilfe einer SQL-artigen Abfragesprache.

Impala könnte dabei Lösungen wie Hive, welche schon seit einigen Jahren existieren und SQL-artige Abfragen in MapReduce-Task umwandeln, ablösen.

Auf dem Rücken des Datenmammuts

Herzlich Willkommen auf meinem neuen Blog Das Datenmammut. Auf diesem Blog möchte ich wöchentlich und in regelmäßigen Abständen über verschiedene Themen aus dem Bereich Big Data im Allgemeinen und Hadoop im Speziellen berichten. Dazu gehören:

  • Nationale und Internationale Nachrichten rund um Themen zu Big Data und Hadoop
  • Rezensionen von Büchern zum Thema Datenanalyse, Maschinelles Lernen und Informationsverarbeitung
  • Vorstellung neuer Software und Tools
  • Praxisbeispiele zur Verarbeitung großer Datenmengen
  • Tips und Tricks zu MapReduce und der Konfiguration verschiedener Dienste des Hadoop-Ökosystems

Ich freue mich über jede Art von Anregungen, Kommentaren, Kritiken und Hinweisen.

Ramon Wartala