13 Aug 2009

Cluster Filesystems 1: Hadoop

Dies ist der erste Teil meiner Reihe OpenSourced distributed parallel fault-tolerant filesystems und behandelt Hadoop.

Hadoop wird vom Apache-Projekt betreut und ist in Java geschrieben, was grundsätzlich eine hohe Kompatibiliät zu einer Vielzahl von Betriebssystemen mit sich bringt.

In meinem Test beschäftige ich mich vorrangig mit der Version 0.19.2, welche am 23. Juli 2009 veröffentlicht wurde. Daneben gibt es noch die Versionen 0.20.0 und 0.18.3.

Zuerst griff ich zwar zur Version 0.20.0 – musste jedoch nach einigen Versuchen abbrechen, da diese Version nicht ausgereift erscheint. Anschliessend wiederholte ich die Installation mit der Version 0.19.2 und konnte auf Anhieb Erfolge verzeichnen.

Ich folgte den Anleitungen auf http://hadoop.apache.org/common/docs/r0.19.2/quickstart.html und http://hadoop.apache.org/common/docs/r0.19.2/cluster_setup.html und konnte recht schnell den Cluster aus zwei Nodes aufsetzen. Für jede weitere Node brauch nun nur noch das gesamte Verzeichnis kopiert werden und die Datei conf/slaves auf allen Hosts um den Hostnamen der neuen Node ergänzt werden.

Was sich mir anfangs nicht klar erschlossen hat, ist die Frage wie das Daten- und Meta-Daten-Verzeichnis verschoben werden könne. Standardmäßig nutzt Hadoop dafür /tmp/hadoop-root/, was sich sehr schlecht macht, wenn /tmp nicht zufällig eine Terra-Byte-große Partition ist.

Die Antwort auf diese Frage fand ich erst, nachdem ich die erste Anleitung schon abgearbeitet hatte und mir die Zweite durchlas. Dort wurde ich auf die Parameter „dfs.name.dir“ und „dfs.data.dir“ aufmerksam, die genau das bewirken.

Nach Abschluss des zweiten Tutorials sitze ich nun also vor zwei Maschinen (genauer, vor den ssh-Consolen von 2 Maschinen 😉 ), die jeweils 1,4 Terra Hadoop-Filesysteme (HDFS) haben. Wie geht es nun weiter?

Der Dokumentation kann man nun folgendes entnehmen:

  • Das HDFS lässt sich bislang nur über ein Fuse-Modul laden. Die Installation desselbigen schlug bei mir leider fehl, da in Version 0.19.2 scheinbar einige Komplikationen durch das amd64 System ausgelöst werden.
  • Es gibt scheinbar keine weiteren Schnittstellen, um auf die Daten direkt zuzugreifen.
  • Die Tools, die vom hadoop-Projekt mitgeliefert werden, sind zwar in der Lage einfache Filesystem-Operationen durchzuführen, aber bislang nicht komplett Posix-kompatibel und im Funktionsumfang noch sehr begrenzt.

Fazit

Mit diesen Einschränkungen fällt hadoop leider für unsere Zwecke flach, da wir ThirdParty-Software betreuen und den Dateisystem Zugriff nicht umschreiben können, so dass er über bin/hadoop fs mit dem Filesystem kommuniziert.