Mit Java-basiertem Framework Prozesse auf Servern verteilen Big Data im Unternehmen mit Hadoop

Autor / Redakteur: Thomas Joos / Rainer Graefen

Immer mehr Unternehmen müssen sehr große Datenbanken und Serverprozesse verwalten und organisieren. Gut, wenn das Filesystem dann in der Lage ist, die Rechenaufgaben zwischen verschiedenen Servern verteilen und damit beschleunigen zu können.

Firma zum Thema

(Grafik: Thomas Joos)

Ein bekanntes Beispiel für die Bereitstellung großer Datenmengen ist das Open-Source-System Apache Hadoop. Das Framework verarbeitet sehr große Datenmengen und kann tausende Serverknoten ansprechen. Das System basiert auf Algorithmen von Google und wird zum Beispiel auch bei Yahoo oder Ebay eingesetzt.

Hadoop arbeitet zur Verwaltung der großen Datenmengen mit wichtigen Funktionen wie Map Reduce des Suchmaschinenbetreibers Google. Das liegt nicht zuletzt daran, dass vor allem Suchmaschinenbetreiber riesige Datenmengen verwalten und organisieren müssen.

Primär Linux, Windows unter ferner liefen

Solchen Aufgaben sehen sich auch immer mehr Unternehmen gegenüber. Auch Microsoft unterstützt in Windows Azure Hadoop. Der Vorteil ist, dass das System von sich aus bereits ausfallsicher ausgelegt ist und seine Daten zwischen den einzelnen Clusterknoten repliziert.

Generell lassen sich Hadoop-Cluster mit normalen Servern oder Computern aufbauen. Das heißt, der Einstieg ist recht einfach. Allerdings sollte als Betriebssystem für Hadoop Unix oder Linux im Einsatz sein. Administratoren in reinen Windows-Umgebungen sind deshalb ein wenig außen vor und müssen schauen wie sie sich in diesem Bereich einiges an Wissen aufbauen.

Es gibt nur wenige Distributionen, die neben Linux auch Windows unterstützen. Zum Beispiel Hortonworks. Aber aufgepasst. Die Hortonworks Data Platform (HDP) unterstützt zwar Windows Server 2012, allerdings ist das System generell für Linux optimiert. Hadoop nutzt außerdem das Java Developer Kit ab Version 1.6.

Hadoop-Funktionen im Überblick

Seit einigen Jahren ist Hadoop ein Projekt innerhalb der Apache Software Foundation und wird ständig weiterentwickelt. Hadoop setzt sich aus verschiedenen Teilen zusammen. Vor allem drei Bereiche stellen die Grundlage dar:

  • Hadoop Common,
  • Hadoop Distributed File System (HDFS) und der
  • Map-Reduce-Algorithmus.

Hadoop Common stellt Grundfunktionen zur Verfügung und bildet eine Schnittstelle für alle angebundenen Systeme und Funktionen. In diesem Bereich liegen auch die Java-Systemdateien und die Skripte zur Verwaltung und Einrichtung.

Das Hadoop Distributed File System (HDFS) ist das System zur Speicherung der Datenmenge bis in den Petabyte-Bereich. Das System ist für Cluster optimiert, eine wichtige Voraussetzung für die Verarbeitung sehr großer Datenmengen im Big Data-Bereich.

Und der Map-Reduce-Algorithmus schliesslich ist das Google-System, welches die Rechenaufgaben zu den Daten in kleinere Teile zerlegt und auf die Serverknoten verteilt.

Datenschraubstock

Der Algorithmus ist dafür verantwortlich, dass die Daten schnell und effizient berechnet werden, unabhängig von der Größe der Datenmenge und Anzahl der Server. Über den Algorithmus verteilen die Server im Hadoop-Cluster die Daten, replizieren diese zur Ausfallsicherheit und fassen die Daten anschließend zu einem Ergebnis zusammen.

Nachdem die Rechenaufgaben verteilt wurden, rechnen die einzelnen Server diese durch und senden die Ergebnisse zurück. Die Teilergebnisse baut nun der MapReduce-Algorithmus wieder zum Endergebnis zusammen. Eine wichtige Funktion von Map Reduce ist die Verarbeitung der Daten direkt auf dem entsprechenden Server. Der Algorithmus schickt nur kleine Datenmengen über das Netzwerk, um die Infrastruktur nicht zu überlasten.

Diese Grundfunktionen lassen sich allerdings auch mit weiteren Funktionen erweitern. So kann zum Beispiel HBase als Datenbank genutzt werden. Diese Datenbank baut auf Google Big Table auf und kann sehr große Datenmengen speichern. Die Datenbank ist vor allem für Infrastrukturen gedacht, die sehr häufig große Datenmengen berechnen müssen, deren Datenstruktur sich aber selten ändert.

Hadoop im Cluster - Ausfallsicherheit und Delegierung von Rechenaufgaben

Eine weitere optionale Funktion ist Pig. Mit dieser lassen sich Map-Reduce-Programme auf Basis von Latin erstellen und bessere Analysen durchführen. Um ein Hadoop-System zu überwachen, bietet sich die Erweiterung Chukwa an.

Damit Hadoop funktioniert, ist ein Cluster eine wichtige Voraussetzung. Das System arbeitet dazu mit dem Master/Slave-Prinzip. Der Master im Hadoop-Cluster, auch Name Node genannt, kennt alle wichtigen Daten und Dateien, die im Cluster im Einsatz sind. Die Berechnung der Daten findet auf den Slave-Knoten statt.

Das System ist ebenfalls ausfallsicher ausgelegt und repliziert alle zerlegten Dateien auf die verschiedenen Slave-Knoten im Cluster. Auf diesem Weg lassen sich ausgefallene Slave-Knoten leicht kompensieren, da keinerlei Daten verloren gehen können. Damit die Technik funktioniert, melden sich die Slave-Knoten regelmäßig beim Master. Erhält der Master keine Antwort mehr von einem Slave, delegiert er die Berechnung der Daten an einen anderen Knoten.

Damit auch der Master keinen Fehlerpunkt im Cluster darstellt, wird innerhalb des Clusters ein zweiter Ausfall-Master festgelegt. Dieser protokolliert die Daten des eigentlichen Masters nur und hilft bei der Wiederherstellung. Er kann nicht automatisiert dessen Funktion übernehmen.

Professioneller Support, trotz kostenloser Nutzung

Die Verteilung und Berechnung der Daten, die Replikation und die Zusammenarbeit zwischen Master- und Slave-Knoten, übernimmt der von Google entwickelte Map-Reduce-Algorithmus. Der Map-Teil des Algorithmus teilt die Datenmenge der Dateien in kleine Blöcke auf und repliziert sie auf die einzelnen Knoten.

Diese berechnen Ergebnisse und teilen sie dem Algorithmus mit. Anschließend werden die nun erheblich kleineren Datenmengen in der Reduce-Phase wieder zusammengefasst. Die einzelnen Rechenaufgaben der Slave-Knoten, auch Job genannt, verwaltet der Master im Cluster. Zum Abschluss stellt der Master das Ergebnis der Berechnungen zur Verfügung.

Unternehmen die Hadoop dauerhaft produktiv einsetzen, sollten auf Dauer auch auf professionellen Support setzen. In diesem Bereich gibt es Unternehmen, die eigene Distributionen zur Verfügung stellen. Ein prominentes Beispiel ist Cloudera.

Hier arbeitet auch einer der ursprünglichen Entwickler von Hadoop. Unternehmen, die gerne auf Microsoft-Lösungen setzen, können Hadoop auch mit Windows Azure nutzen. Weitere Unternehmen mit Hadoop-Lösungen und -Support sind IBM, EMC, Yahoo, SAS, Teradata und SAP.

(ID:39429300)