Willkommen zur Reihe “Hadoop unter Archlinux”, eine Kombination aus Merkzettel für mich selbst, was ich da verzapft habe, und gleichzeitig eine Anleitung für alle, die sich tiefer mit MapReduce, Hadoop und Co auseinandersetzten wollen. Dieser Artikel bereitet die Infrastruktur für die eigentliche Hadoop installation vor.

VirtualBox-Netzwerk

Ich habe der VirtualBox-VM zwei Netzwerkkarten eingebaut, einmal NAT für Internetzugriff (weils einfach funktioniert) und einmal Host-only Adapter, um später per SSH in die VM zu kommen. Der Host-only Adapter muss ggf. erst im VirtualBox Manager erstellt werden.

Der Rest der VM kann auf Standardeinstellungen gelassen werden, Gasterweiterungen sind nicht wirklich nötig, da das System headless bleibt, aber ein bisschen RAM - ich habe 2GB spendiert - erscheint mir sinnvoll.

Arch einstellen

In die VirtualBox-VM kommt ein Archlinux, das nach dem (Installation Guide)[https://wiki.archlinux.org/index.php/Installation_Guide] installiert wird. Das funktionierende(!) System, das bei mir auf den Hostnamen dexter hört, bekommt noch ein paar Pakete dazuspendiert:

[manuel@dexter ~]$ pacman -Syu
[manuel@dexter ~]$ pacman -S vim bash-completion openssh sudo wget

Dabei installiere ich vim, bash-completion und sudo aus Bequemlichkeitsgründen, openssh brauchen wir für Hadoop sowieso und lässt uns vom Host-System auf die VM zugreifen. Außerdem kann wget immer mal praktisch werden, um Tarballs herunterzuladen. Einen normalen User manuel mit sudo-Recht und gleichem Namen wie im Hostsystem erstelle ich auch noch, das erspart bei der Arbeit per SSH ein wenig Tipparbeit. Dann werden noch diverse Services aktiviert:

[manuel@dexter ~]$ systemctl enable sshd.service
[manuel@dexter ~]$ systemctl enable dhcpcd.service

Ich starte bei der Gelegenheit die VM neu und lege einen Sicherungspunkt an. Sicher ist sicher, das lernt man von Gothic.

Ab jetzt kann man auch über ein Terminal vom Hostsystem aus per SSH weiter machen.

Java installieren

In der Hadoop-Dokumentation steht zwar Java 1.6.x als Voraussetzung, aber an 1.7.x ist leichter heranzukommen. Letzteres gibt es auf der Oracle-Website zum freien Download, während man für frühere Releases einen Oracle-Account braucht.

Das Tarball dort lädt man im Browser runter (wget in der VM funktioniert hier noch nicht) und schiebt es per scp in die VM:

$ scp jdk-7u10-linux-x64.tar.gz 192.168.56.101:

Die IP hat sich VirtualBox ausgesucht, ggf in der VM mit ip addr nachschauen. Jetzt endlich über SSH in der VM wird das Paket entpackt und in /opt verschoben.

[manuel@dexter ~] tar xfz jdk-7u10-linux-x64.tar.gz
[manuel@dexter ~] sudo mv jdk1.7.0_10/ /opt/
[manuel@dexter ~] sudo chown -R root:root /opt/jdk1.7.0_10/

Schnell mit einem Hello-World überprüfen, ob die Java-Version funktioniert, und feststellen, dass das Blog hier nicht früh genug umbricht:

echo "class Test { public static void main(String args[]) { System.out.println(\"Es klappt\"); } }" > Test.java && /opt/jdk1.7.0_10/bin/javac Test.java && /opt/jdk1.7.0_10/bin/java Test

Das entsprechende bin-Verzeichnis kommt in die PATH-Umgebungsvariable, dazu lege ich die Datei /etc/profile.d/java.sh mit folgendem Inhalt an:

#!/bin/sh
PATH=$PATH:/opt/jdk1.7.0_10/bin
JAVA_HOME=/opt/jdk1.7.0_10
export PATH
export JAVA_HOME

Und damit ist Java installiert, ganz ohne Paketmanager hust.