Nach drei Jahren Entwicklungszeit: Apache Hadoop 2 verfügbar

Was ist neu in Apache Hadoop 2?

Bernd Fondermann
©Shutterstock/Mahesh Patil

Am 15. Oktober wurde es auf den Hadoop Mailing-Listen verkündet: Das langerwartete Release 2 wurde nach mindestens einem Jahr Vorentwicklung und weiteren zwei Jahren Alpha- und Beta-Status endlich als „Apache Hadoop 2.2.0“ finalisiert [1]. Da kam es auch nicht darauf an, dass es zu diesem Zeitpunkt noch nicht in voller Binär- und Code-Blüte verfügbar war – wie immer bei Apache dauerte es 24 Stunden, bis alle Download-Server bestückt waren [2].

Die lange Entwicklungszeit ist vor allem einer kompletten Neuentwicklung der Programmablaufschicht geschuldet. Vorher war Hadoop – neben dem verteilten Dateisystem HDFS –  eine reine MapReduce-Batch-Umgebung. Mit dem neuen System namens YARN können nun beliebige Typen von verteilten Programmen direkt auf Hadoop laufen, ohne in das für einige Anwendungsfälle unbequeme MapReduce-Korsett gezwängt zu werden (mehr dazu auf der W-JAX im Vortrag „Hadoop 2 – Schneller, Bigger, Weiter„). Die Änderungen in den letzten Vor-Releases waren aber nicht mehr groß: Der ursprüngliche YARN-Entwickler Yahoo! hatte auch schon vor der Veröffentlichung von 2.2.0 bereits alle seine Cluster auf die Hadoop-2-Linie umgestellt. Auch im Hadoop Base Camp auf der W-JAX wird ein Hadoop 2 Cluster bereitstehen.

Doch auch HDFS hat wesentliche Verbesserungen erfahren. Der zentrale Namenode ist nun im echten Hot-Standby-Betrieb möglich. Auf derselben Cluster-Infrastruktur lassen sich mehrere logische, föderierte Filesysteme betreiben, jedes mit einem eigenen Namenode, aber unter Nutzung der selben Datenknoten. Dadurch lassen sich mehr Blöcke adressieren und Dateien in HDFS effizienter ablegen.

Zudem sind alle Funktionen von HDFS und YARN nun auch über RESTful HTTP Schnittstellen zugreifbar. Damit steht einer losen Kopplung von Clients mit Hadoop nichts mehr im Wege. In Hadoop 1 ist ein lokaler Java-Hadoop-Client notwendig, um allumfassend auf ein Cluster zugreifen zu können. Zudem wurde für Hadoop 2 die Kommunikation zwischen Client und Cluster so erneuert, dass auch native Clients in anderen Sprachen als Java möglich sind. Erste Implementierungen gibt es für Python [3] und Googles Go [4]. Zur Kommunikation wird Googles quelloffenes Protocol Buffers Framework verwendet.

YARN selber ist eine Abstraktionsschicht, die die im Cluster zur Verfügung stehenden Ressourcen wie CPU und RAM verwaltet und Applikationen bereitstellt. Daher auch sein Name: „Yet Another Resource Negotiator“. Diese Bereistellung ist viel flexibler als im alten MapReduce. Während dort noch jeder Task (also entweder Mapper oder Reducer) eine festgelegte JVM Heap-Größe nutzen kann, ist dies in Hadoop 2 sehr flexibel pro Applikation handhabbar. Die eine Applikation kann sehr viele Tasks mit kleinem Heap bekommen, während eine andere wenige große Tasks mit viel Heap verwendet. Genauso werden CPU-Ressourcen zugeteilt.

Die lange Entwicklungszeit ist nicht nur auf Sorgfalt bei der Entwicklung und die Komplexität der Software zurückzuführen, sondern auch auf die in der Anfangszeit von YARN unnötigen Scharmützel zwischen den verschiedenen Mitspielern. Unter dem Strich ist Apache Hadoop 2 den grundlegenden Architekturprinzipien von Hadoop 1 treu geblieben, hat diese aber wesentlich ausgebaut und verfeinert. Zusammen mit den unzähligen Erweiterungen, Frameworks und Abfragesprachen aus dem Hadoop-Umfeld bleibt wohl keine BigData- bzw. verteilte Anwendung mehr, für die Hadoop nicht geeignet wäre, solange man sicher ist, dass man mehr als eine Handvoll Maschinen dafür einsetzen wird.

Aufmacherbild: God Ganesha Design von Shutterstock / Urheberrecht: Mahesh Patil

Geschrieben von
Bernd Fondermann
Bernd Fondermann
Bernd Fondermann (bernd.fondermann@brainlounge.de) ist freiberuflicher Softwarearchitekt und Consultant in Frankfurt a. M. Er hat eine Schwäche für verteilte Systeme und Datenspeicher, die ohne SQL abgefragt werden können. Als Member der Apache Software Foundation versucht er, mit der Vielzahl der Incubator-Projekte dort schrittzuhalten.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.