Single Node Hadoop Installation
Anleitung:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html
Vorraussetzungen:
- Java muss installiert sein -> musste ich noch machen sudo apt-get install openjdk-7-jre icedtea-7-plugin Nach Sichtung der Readme-Datei auf der Downloadseite für das aktuelle Release, habe ich erst einmal entschieden, dass ich keinen Key brauche, da ich ja schon einen Server mit ssh in Betrieb habe. Ich gehe derzeit davon aus, dass ich diese User ebenfalls für Hadoop verwenden kann. Nachdem ich soweit war und erste Versuche unternahm, bestätigte sich diese Annahme. Für die Installation des Single Nodes habe ich den Standarduser meines Servers genutzt. Die Einstellungen für den Server finden sich unter dem Post zur OpenStack Installation.
- Ich habe mich dazu entschlossen, das Archiv "hadoop-2.7.1.tar.gz" herunter zu laden Da ich ja mit einem Ubuntuserver in einer VirtualBox arbeite, musste ich nun das Archiv irgendwie auf den Server bringen, um es dort entpacken zu können. Daher kopierte ich das Archiv in den gemeinsamen Ordner, der auf dem Server dann unter /media/sf_Gemeinsamer_Ordner zu finden war. Ich habe das Archiv dann nach home/davinia/hadoop kopiert. (Anlage des Verzeichnis "hadoop" mit mkdir, kopieren mit cp aus dem media-Verzeichnis heraus nach ~/hadoop) Entpacken des Archivs mit dem Befehl tar -xzf hadoop-2.7.1.tar.gz im Verzeichnis (die Optionen -xzf bedeuten: x = Dateien aus Archiv extrahieren, z = Archiv zusätzlich mit gzip(de) komprimieren, f = Dateien in den angegebenen Ordner extrahieren. Wenn kein Zielordner angegeben ist, wird das aktuelle Verzeichnis verwendet)
- Nach dem Entpacken in das hadoop-Verzeichnis wechseln. Dort wechseln wir wiederum in das Verzeichnis etc/hadoop wechseln um die Datei hadoop-env.sh bearbeiten. In meinem Fall nutze ich den Editor "nano" zur Bearbeitung der Files. nano hadoop-env.sh Es ist dabei zu beachten, dass die Angaben für Java geändert werden müssen.
- Danach soll das Kommando $bin/hadoop probiert werden. Diese Angaben beziehen sich alle auf die entpackte Ordnerstruktur von Hadoop. In meinem Fall ~/hadoop/hadoop-2.7.1
- Nachdem die Einstellungen Java betreffend vorgenommen wurden, gehe ich zum nächsten Schritt über: einen Hadoop Cluster im Standalone Mode starten. Die Anleitung lässt uns erst einen neuen Ordner "input" anlegen. Auch hier ist in meinem Fall zu beachten, dass ich mich im Verzeichnis ~/hadoop/hadoop-2.7.1 befinde, da sonst das Skript nicht aufgerufen werden kann (habe ich gestestet, indem ich den Ordner an einem anderen Ort angelegt habe ;-)
- Kopieren aller xml-Files hat funktioniert ($ cp etc/hadoop/* .xml input).
- Allerdings gibt es bei dem Aufruf des Scriptes ($ bin/hadoop jar share/hadoop/mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+') eine Fehlermeldung bezüglich der Java-Version.Nach langem Suchen und diversen Fehlermeldungen (z.B. dass er das Verzeichnis /usr/bin/java//bin/java nicht findet; wird auch schwierig, wegen der beiden Slashs hintereinander...) habe ich die Lösung für den Java Pfad in einem Forum gefunden: http://stackoverflow.com/questions/20303815/hadoop-single-node-cluster-installation-on-ubuntu Ich habe nach dieser Anleitung einen Softlink ($ ln -s java-7-openjdk-amd64/ jdk) erstellt. Naürlich habe ich mich vorher davon überzeugt, dass an der Stelle die entsprechende Datei bzw. Ordner vorhanden ist. Diesen habe ich dann in die Datei hadoop-env.sh eingetragen. Entgegen der Bescheibung aus dem Forum habe ich den Eintrag in der bashrc nicht geändert, da ich diese auch gar nicht gefunden habe. Nach diesen Schritten lies sich der Befehl aus der Hadoop Anleitung ohne Fehlermeldung ausführen
- $ bin/hadoop jar share/hadoop/mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+' mit bin/hadoop wird das Skript aus der Datei hadoop im Verzeichnis bin unter ~/hadoop/hadoop-2.7.1 aufgerufen. Innerhalb dieses Scripts wird mit dem Befehl jar wiederum die Klasse org.apache.hadoop.util.RunJar aufgerufen, die einen Hadoop job jar ausführt. Dabei wird ein .jar Archiv ausgeführt und nach input kopiert. In diesem Archiv werden dann mit grep nach dem definierten String gesucht und alle Übereinstimmungen in dem Ordner output abgelegt. Nach erfolgreichem Durchlauf des Befehls erzeugte der Befehl die Datei part-r-00000
Und mal wieder muss ich zum Ende feststellen, dass ich die Aufgabe zwar erfolgreich bewältigt habe, aber keine Ahnung habe, was ich damit anfangen soll.
Keine Kommentare:
Kommentar veröffentlichen