Das Software-Framework im Überblick

Big Data: Mit Hadoop große Datenmengen im Griff

15.10.2012 von Martin Bayer
Big Data in den Griff zu bekommen wird zunehmend eine der Kernaufgaben der IT. Mittlerweile bieten große und kleine Anbieter viele verschiedene Werkzeuge dafür an. Zentraler Bestandteil ist oft Hadoop. Wir zeigen, wie Hadoop mit HDFS und MapReduce durch Clustering Big Data bewältigen will.

Was ist eigentlich Hadoop? Hadoop ist ein in Java programmiertes Software-Framework, mit dessen Hilfe Anwender rechenintensive Prozesse mit großen Datenmengen auf Server-Clustern abarbeiten können. Applikationen können mithilfe von Hadoop komplexe Computing-Aufgaben auf Tausende von Rechnerknoten verteilen und Datenvolumina im Petabyte-Bereich verarbeiten, so das Versprechen der Entwickler.

Wer hat Hadoop erfunden?

Angestoßen wurde das Hadoop-Projekt von Doug Cutting. Als Google Ende 2004 Informationen über seinen MapReduce-Algorithmus veröffentlichte, mit dessen Hilfe sich komplexe Computing-Aufgaben relativ einfach zerlegen und innerhalb von Server-Clustern parallelisieren lassen, erkannte der Entwickler und Suchmaschinenspezialist die Bedeutung dieser Entwicklung und startete Hadoop.

Cutting, der zuvor unter anderem bei Excite, Apple und in den renommierten Labors von Xerox Parc an Suchtechniken gearbeitet hatte, war zu dieser Zeit bei Yahoo beschäftigt. Bei dem Internetpionier trieb er im Folgenden die Hadoop-Entwicklung weiter voran und kümmerte sich auch um die Implementierung der neuen Technik in die Yahoo-Systeme. Heute ist Cutting bei Cloudera beschäftigt. Der Softwareanbieter offeriert eine auf Hadoop basierende Datenmanagementplattform. Außerdem fungiert der Entwickler seit September 2010 als Chairman der Apache Software Foundation (ASF), unter deren Dach derzeit die weitere Hadoop-Entwicklung gesteuert wird. Namensgeber für Hadoop war übrigens der Spielzeugelefant von Cuttings Sohn, daher auch das Logo mit dem gelben Elefanten.

Wer entwickelt Hadoop?

Die Basis für Hadoop bildeten Entwicklungen bei großen Internetkonzernen wie Yahoo und Google. Diese Unternehmen standen von Beginn an vor der Herausforderung, große Datenmengen zügig bearbeiten zu müssen - eine Anforderung, mit der sich heute mehr und mehr Unternehmen konfrontiert sehen. Google beispielsweise hat schon vor beinahe zehn Jahren sein Google File System (GFS) und den Map-Reduce-Algorithmus entwickelt. Beide Komponenten bilden das Herzstück der internen IT des Suchmaschinenanbieters. Die eigenen Implementierungen haben die Google-Verantwortlichen der Community daher zwar nicht zur Verfügung gestellt, jedoch in den Jahren 2003 und 2004 technische Details ihrer Entwicklungen veröffentlicht. Entwickler haben dies aufgegriffen und, wie beispielsweise Cutting mit Hadoop, eigene Projekte gestartet. Seit Januar 2008 ist Hadoop ein Top-Level-Projekt der Apache Software Foundation (ASF). Ende 2011 hat das Software-Framework den Release-Status 1.0.0 erreicht.

Komponenten von Hadoop

Rund um das Hadoop-Framework gibt es eine Reihe verschiedener Projekte, die unter dem Dach der Apache Software Foundation vorangetrieben werden. Hadoop selbst setzt sich aus folgenden drei Komponenten zusammen:

Weitere Hadoop-Projekte bringen mehr Funktionen

Rund um Hadoop gibt es diverse Apache-Projekte, die verschiedene Zusatzfunktionen entwickeln und anbieten. Hier eine Auswahl:

Funktionsweise von Hadoop

Die beiden folgenden technischen Grundprinzipien bestimmen die grundlegende Funktionsweise von Hadoop:

Ein Hadoop-Cluster funktioniert nach dem Master-Slave-Prinzip. Die Rolle des Masters übernimmt der "NameNode". Dieser Knoten verwaltet sämtliche Metadaten zu File-Systemen, Verzeichnisstrukturen und Dateien. Die Daten werden auf den "DataNodes" abgelegt, die die Rolle der Slaves übernehmen. Um Datenverlusten vorzubeugen, setzt Hadoop auf die Replikation der Dateien. Das System zerlegt dabei die Dateien in einzelne Datenblöcke in einer bestimmten Größe. Der NameNode (Master) sorgt dafür, dass diese Blöcke verteilt werden und dass jeder Block mehrfach repliziert vorliegt. Fällt ein Knoten aus, ist die dort abgelegte Information nicht verloren. Der NameNode weiß, in welche Blöcke die einzelnen Dateien zerlegt und wo diese Blöcke noch abgelegt sind.

In der Standardkonfiguration legt HDFS jeden Datenblock drei Mal innerhalb des Clusters ab. Damit sich der Status des Gesamtsystems laufend überwachen lässt, schickt jeder DataNode in festgelegten Zeitabständen ein Lebenszeichen (Heartbeat) an den zentralen NameNode. Meldet sich ein Slave über längere Zeit nicht, wird er für "tot" erklärt, und der Master sorgt mithilfe der auf den anderen Knoten abgelegten Datenblockkopien dafür, dass wieder eine ausreichend sichere Zahl an Kopien der betroffenen Datenblöcke vorliegt. Um dem Ausfall des NameNode vorzubeugen, der prinzipiell einen Single Point of Failure darstellt, wird diesem ein "SecondaryNameNode" zur Seite gestellt. Letzterer zeichnet alle Veränderungen der Metadaten auf. Mithilfe dieses LogFiles lässt sich ein NameNode jederzeit wiederherstellen.

Die Datenverarbeitung funktioniert auf Basis der MapReduce-Engine in Hadoop. Google hat diesen Algorithmus speziell für eine hoch parallelisierte Datenverarbeitung in einem Cluster ausgelegt. Dabei wird die zu verarbeitende Datei auf mehrere Map-Prozesse verteilt. In der Map-Phase berechnen Map-Prozesse parallel die Zwischenergebnisse. Danach folgt die Reduce-Phase, während derer Reduce-Prozesse diese Zwischenergebnisse einsammeln und daraus eine Ergebnisdatei ermitteln.

In Hadoop haben die Entwickler dieses Modell übernommen. Wie die Datenhaltung arbeitet auch die Datenverarbeitung nach einem Master-Slave-Prinzip. Rechenaufgaben werden in Hadoop als Job bezeichnet. Ein "JobTracker" fungiert dabei als Master. Dieser verteilt und verwaltet die Jobs im Cluster. Die eigentliche Jobabwicklung übernehmen die "TaskTracker" auf den Slave-Systemen. Auf jedem Cluster-Knoten ist eine solche TaskTracker-Instanz installiert. In der Regel arbeiten auf einem Hadoop-Knoten paarweise immer ein DataNode sowie ein TaskTracker.

Systemvoraussetzungen von Hadoop

Hadoop-Cluster lassen sich, wie es auch die Spezifikationen des Google File System (GFS) vorsehen, mithilfe von Standardrechnern aufbauen. Da in einem solchen Rechnerverbund von Hardwareausfällen auszugehen ist, muss das Dateisystem auf Fehlertoleranz ausgelegt sein. Das funktioniert bei Hadoop, wie schon beschrieben, durch Replikation der Daten. Wie die Cluster-Hardware zu dimensionieren ist, hängt von der Komplexität der Rechenaufgaben sowie den zu verarbeitenden Datenmengen ab. Grundsätzlich gilt jedoch, dass der Master-Knoten in Bezug auf die Größe des Arbeitsspeichers und die Prozessorleistung stärker dimensioniert werden muss als die Slave-Systeme.

Für große Cluster bietet sich ein 64-Bit-System auf dem NameNode an, um mehr Arbeitsspeicher adressieren zu können. Das ist notwendig, um umfangreiche Datenstrukturen im Hauptspeicher vorzuhalten. Als Betriebssystem für die Knoten eines Hadoop-Clusters empfehlen Entwickler Linux. Darüber hinaus eignen sich auch verschiedene Unix-Derivate wie beispielsweise Solaris. Für den Hadoop-Betrieb ist außerdem ein Java Developer Kit (JDK) ab Version 1.6 erforderlich. Entwickler raten den Nutzern, die offizielle Java-Distribution von Oracle/Sun zu nutzen.

Ohne Lizenz: Hadoop ist frei

Hadoop ist eine freie Software, die unter der seit Anfang 2004 gültigen Apache License 2.0 steht und von den Webseiten der Apache Software Foundation heruntergeladen werden kann. Die Lizenz besagt, dass Anwender die Software frei verwenden, modifizieren und verteilen dürfen. Wenn man die Software und eigene Ergänzungen weiterverteilt, muss allerdings kenntlich sein, welche Software unter der Apache-Lizenz verwendet wurde. Änderungen des Quellcodes müssen nicht an den Lizenzgeber zurückgeschickt werden. Zudem ist erlaubt, unter der Apache-Lizenz verfügbare Software in eigenen Softwareprodukten zu verwenden. Diese eigenen Produkte müssen nicht unter einer Apache-Lizenz verfügbar sein.

Verfügbare Hadoop-Produkte

Hadoop kann man nicht kaufen. Vielmehr nutzen verschiedene Software- und Serviceanbieter das Framework im Rahmen ihrer eigenen Produkte und Dienstleistungen, darunter etliche namhafte IT-Hersteller.

Amazon.com bietet beispielsweise in seiner Elastic Compute Cloud (EC2) mit Elastic MapReduce einen Hadoop-Cluster zur Miete aus der Cloud an. Der Online-Händler kombiniert seine Cloud-Offerte außerdem mit dem eigenen Speicherdienst Simple Storage Service (S3).

IBM hat die eigene Software InfoSphere BigInsights, die in erster Linie für die Analyse unstrukturierter Daten ausgelegt ist, um Hadoop-Technik erweitert. Außerdem soll sich die Software auch als Cloud-Dienst nutzen lassen. Die IBM-Verantwortlichen haben bereits weitere Software und Softwaredienste rund um Hadoop angekündigt.

Oracle hat im Herbst vergangenen Jahres eine Big Data Appliance vorgestellt. Neben einer NoSQL-Datenbank und Linux als Betriebssystem soll in dem speziell auf die Verarbeitung großer Datenmengen ausgelegten System auch Hadoop zum Einsatz kommen.

Der Storage-Spezialist EMC, der seit einigen Jahren auch verstärkt Software entwickelt, unterstützt in seinen Isilon-NAS-Systemen seit Anfang des Jahres auch das Hadoop-Filesystem. Mit "Greenplum HD" bietet EMC darüber hinaus eine eigene Hadoop-Implementierung an, die sich aus dem kompletten Stack inklusive HDFS und Map-Reduce sowie diverser weiterer Apache-Projekte zusammensetzt.

Microsoft will künftig den Hadoop-Einsatz für seine Cloud-Plattform Azure sowie den eigenen Windows Server unterstützen. In seinem Technet stellt der weltgrößte Softwarekonzern einschlägige Informationen für Entwickler bereit. Außerdem wollen die Microsoft-Verantwortlichen in Sachen Hadoop mit der Firma Hortonworks kooperieren. In diese Ausgründung hat Yahoo Mitte vergangenen Jahres seine Hadoop-Entwicklung ausgelagert. Darüber hinaus soll es Hadoop-Konnektoren für Microsofts SQL-Datenbank und das Data Warehouse geben.

Neben den großen Anbietern existiert eine Reihe kleinerer Firmen, die sich auf Produkte und Services rund um Hadoop spezialisiert haben. Darunter findet sich beispielsweise Cloudera, wo Hadoop-Erfinder Cutting mittlerweile seine Brötchen verdient. Cloudera entwickelt neben einer eigenen Hadoop-Distribution Zusatzprodukte wie einen Desktop als Graphical User Interface (GUI), das die Administration von Hadoop-Clustern einfacher und komfortabler machen soll.

Hadoop im Einsatz

Viele große Internet-Companies, die zum Teil auch an der Entwicklung des Software-Frameworks beteiligt waren, setzen Hadoop bereits ein, auch als Basis ihrer geschäftskritischen Systeme.

Facebook nutzt das Hadoop-System zum Beispiel als Warehouse für Webanalysen, als Speicher für die verteilte Datenbank sowie als Backup für die SQL-Datenbank. 2010 lagerten bereits mehr als 20 Petabyte Daten im Hadoop-Cluster. Ein Jahr später waren es schon 30 Petabyte.

Yahoo, das maßgeblich an der Entwicklung von Hadoop beteiligt war und auch viel eigenen Code an die Apache-Foundation weitergereicht hat, begann 2008 mit einem 10.000 Rechenkerne umfassenden Cluster. Eigenen Angaben zufolge ließ sich damit der Aufbau der "Webmap", eines Yahoo-internen Index aller bekannten Webseiten inklusive der damit verbundenen Metadaten, um den Faktor 33 beschleunigen.

eBay hat die Zahl seiner Server im Hadoop-Cluster innerhalb eines Jahres verfünffacht und betreibt derzeit mehr als 2500 Rechenknoten in diesem System. Der Betrieb von eBay hänge inzwischen auch von Hadoop ab, geben die Verantwortlichen des Online-Auktionshauses unumwunden zu.

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation Computerwoche. (cvi)