Veröffentlicht am Schreiben Sie einen Kommentar

Virtuelle Maschinen vernetzen

Virtuelle Maschinen vernetzen

Teil 4 der Serie: Big Data Labor: Cluster aufsetzen

Für den Big-Data Cluster brauchen wir mindestens drei virtuelle Maschinen. Diese haben wir in den ersten Artikeln dieser Serie aufgesetzt. In diesem Tutorial vernetzen wir die virtuellen Maschinen zu einem Cluster, den wir für das Big Data Labor verwenden können.

Wir arbeiten fünf virtuellen Maschinen. Die Limitierung besteht in den Ressourcen des Host-Rechners, also unseres Laptops. Je mehr virtuelle Maschinen wir aufsetzen können, umso besser können wir die Big-Data-Welt kennen lernen. Das generelle Vorgehen wird beschrieben in Infrastruktur für Big-Data-Trainings.

In diesem Tutorial werden einige Grundkenntnisse mit Linux auf der Command-Line vorausgesetzt. Beispielsweise müssen Konfigurationen mit einem Editor erstellt werden. Nano, vi, vim sind beliebte Linux-Editoren, die im Terminal-Modus funktionieren und bereits vorinstalliert sind.

Netzwerktopologie

Das folgende Bild visualisiert die Netzwerktopologie, die wir mit den virtuellen Maschinen errichten werden.

Netzwerktopologie des virtuellen Big-Data-Clusters

Üblicherweise liegt zwischen dem Internet und dem hausinternen LAN eine Router mit einer Firewall. Der Laptop verbindet sich mit dem hausinternen LAN und erhält üblicherweise eine dynamische IP Adresse.

Die VirtualBox errichtet auf dem Laptop auch eine virtuelle Firewall mit einem DHCP-Router. Die virtuellen Maschinen verbinden sich mit dieser NAT Schnittstelle.

Wir werden zusätzlich ein virtuelles internes Netzwerk definieren und es mit “bigdata” benennen. Damit die virtuellen Maschinen als Cluster funktionieren können, werden wir sie untereinander durch dieses interne Netzwerk verbinden.

Die folgenden Abschnitte bauen diese Konfiguration Schritt für Schritt auf.

Vorbereitung im VirtualBox Manager

Firewall – Regel

Die Standardkonfiguration in der VirtualBox fügt jeder virtuellen Maschine also eine NAT-Schnittstelle zu.

Damit kann die virtuelle Maschine mit der “Außenwelt” kommunizieren, also beispielsweise aufs Internet zugreifen. Sie ist aber durch eine virtuelle Firewall geschützt.

Wollen wir jetzt mit ssh vom Host-Rechner auf die virtuelle Maschine zugreifen, dann müssen wir in der Firewall eine Ausnahmeregel konfigurieren.

Auf dem Gast-System “hört” der ssh-Dienst auf Port 22.

Auf dem Hostsystem können wir einen Port definieren, durch den wir auf Port 22 im Gast-System zugreifen wollen.

Da wir mehrere virtuelle Maschinen in Betrieb haben, brauchen wir mehrere Ports auf dem Host-Rechner.

Hier eine Tabelle mit 5 virtuellen Maschinen – es lohnt sich, die Nummerierung im Einklang zu halten – also pi-201 beispielsweise mit Port 14201 anzusprechen.

Name der VMHost PortGast Port
pi-2001420022
pi-2011420122
pi-2021420222
pi-2031420322
pi-2041420422
pi-2051420522

Nachdem wir diese Regeln festgelegt haben, konfigurieren wir sie in allen 5 virtuellen Maschinen. Der Vorgang muss für jede virtuelle Maschine wiederholt werden. Die Bilder zeigen detailliert, wie dies im Virtual Box Manager gemacht wird.

Im VirtualBox Manager wählen wir eine virtuelle Maschine an und klicken anschließend auf “Netzwerk”
Wir wählen die Registerkarte “Adapter 1”, wo defaultmäßig NAT konfiguriert wird. Dort klicken wir auf “erweitert” und betätigen anschließend die Schaltfläche “Port-Weiterleitung”.
Hier klicken wir zuerst auf das Plus-Symbol oben rechts.
Damit erscheint eine Eingabezeile für die Konfiguration einer Weiterleitungsregel.
Die Regel erhält den Namen “ssh”. Das Protokoll ist TCP.
Host-IP und Gast-IP lassen wir leer.
Unter Host-Port tragen wir die Port-Nummer gemäß Tabelle oben ein. Gast-Port ist 22.
Sind die Einträge korrekt, dann bestätigen wir mit OK.

Dieser Vorgang ist für alle virtuellen Maschinen zu wiederholen.

Wenn wir die virtuellen Maschinen einschalten, dann können wir vom Host-System aus via ssh darauf zugreifen und zwar wie folgt:

$ ssh -l <userid> -p <port number> <IP address>

Nach -l schreiben wir die Userid, mit der wir auf dem Gastsystem einloggen. Wir haben die Userid pi definiert.

Nach -p schreiben wir die Port-Nummer, die wir verwenden möchten, und dazu verwenden wir die Tabelle mit den Weiterleitungsregeln. Ihr können wir ablesen über welchen Port wir auf welche Maschine gelangen.

Unter <IP address> geben wir die IP-Adresse derjenigen Maschine an, auf der wir einloggen wollen. Zu dieser Maschine gehört auch der unter -p definierte Port. Dieser Port gehört zur Host-Maschine und diese wird normalerweise auch als localhost erkannt.

Vom Host-Rechner aus können wir also mit dem folgenden Befehl via ssh auf die virtuelle Maschine pi-201 zugreifen:

$ ssh -l pi -p 14201 localhost

Internes Netzwerk

Um eine Big Data Labor-Umgebung aufzubauen, müssen die virtuellen Maschinen untereinander vernetzt werden.

Mit VirtualBox geht das am Einfachsten, indem wir ein internes Netzwerk bilden. Dazu definieren wir für jede virtuelle Maschine eine zweite (virtuelle) Netzwerkkarte.

Diesmal öffnen wir die Registerkarte “Adapter 2”.
Wir aktivieren den Adapter.
Wählen aus, dass er an ein Internes Netzwerk angeschlossen sein soll.
Und geben dem Netzwerk einen Namen – hier bigdata.
Anschließend speichern wir mit OK.

Diesen Vorgang wiederholen wir für alle virtuellen Maschinen und vergeben immer denselben Netzwerknamen.

Virtual Box wird ein (virtuelles) Netzwerk mit diesem Namen zur Verfügung stellen.

Linux konfigurieren

Die bisherigen Vorbereitungen betrafen die virtuelle Umgebung. Hätten wir stattdessen mit realer Hardware gearbeitet, dann hätten wir Netzwerkkarten installiert und Kabel gezogen.

Dank der Virtualisierung ist uns dies erspart geblieben.

Jetzt sind wir soweit und können das Netzwerk auf Linux-Ebene konfigurieren. Wir haben es ja mit einer einfachen Topologie zu tun (siehe oben).

Als erstes starten wir alle virtuellen Maschinen. Die folgenden Schritte sind auf allen Maschinen auszuführen. Wir zeigen sie expemplarisch an pi-201. Für die weiteren Schritte ist die Namensgebung entsprechend anzupassen.

Wir vergeben einen Hostnamen und konfigurieren die Netzwerkeinstellungen.

Wir loggen also auf pi-201 ein – entweder via Konsole im Virtual Manager oder via ssh.

Und wir nehmen die Root-Rolle ein. Das vereinfacht die nachfolgenden Schritte. Wir könnten natürlich auch jeden der nachfolgenden Befehle mit sudo einleiten.

$ sudo su

Jetzt muss das Passwort des Users pi eingegeben werden.

Hostname ändern

Damit wir das Big Data Labor aufsetzen können, brauchen die einzelnen Rechner ihren gleichbleibenden Namen.

Dazu editieren wir mit unserem Lieblingseditor, z.B. mit nano oder vi, die Datei /etc/hostname. Die Bezeichnung “Host” bezieht sich hier auf die Sicht des Linux-Rechners. Linux ist ja als Host-Betriebssystem geschrieben worden. Virtualisierung kam historisch gesehen erst viel später dazu. Die Schritte, die wir ab jetzt durchführen, können in virtualisierter und nicht virtualisierter Umgebung gleichermaßen ausgeführt werden. Im Tutorial verwenden wir den Editor vi.

$ vi /etc/hostname

Hier schreiben wir auf die erste Zeile:

pi-201

Speichern das File und verlassen den Editor. Für die anderen virtuellen Maschinen vergeben wir die Namen analog: pi-200, pi-202, pi-203 etc.

Hosts

Als nächstes stellen wir die einzelnen virtuellen Maschinen einander vor. Dazu editieren wir das File /etc/hosts

$ vi /etc/hosts

Hier der Inhalt – er ist auf jeder virtuellen Maschine gleich und es gibt für jede virtuelle Maschine im Cluster einen Eintrag in diesem File. Hier ersehen wir auch gleich, welche IP-Adresse mit welchem Node verknüpft werden wird. Es ist praktisch, wenn die IP-Adresse an letzter Stelle die gleiche Nummerierung erhält, wie die Hostnamen. Dabei beachte man die Regeln für den Aufbau einer IP-Adresse IPv4.

127.0.0.1 localhost
192.168.2.200 PI-200
192.168.2.201 PI-201
192.168.2.202 PI-202
192.168.2.203 PI-203
192.168.2.204 PI-204
192.168.2.205 PI-205

Netzwerk-Konfiguration

Die zum Zeitpunkt der Erstellung dieses Tutorials aktuelle Ubuntu-Version 18.4 setzt zur Netzwerk-Konfiguration Netplan ein.

Zuerst schalten wir das automatische Neugenerieren der Konfiguration aus mit:

$ touch /etc/cloud/cloud-init.disabled

Im Verzeichnis /etc/netplan finden wir ein File. In der für dieses Tutorial eingesetzten Version ist der Filename 50-cloud-init.yaml .

Wir editieren dieses File:

$ vi /etc/netplan/50-cloud-init.yaml

Hier der Inhalt für PI-201 – man beachte die entsprechende IP-Adresse

network:
ethernets:
enp0s3:
addresses: []
dhcp4: true
enp0s8:
addresses:
192.168.2.201/24
routes:
– to: 192.168.0.0/16
via: 192.168.2.254
nameservers:
addresses: [8.8.4.4,8.8.8.8,1.1.0.0,1.1.1.1]
version: 2

Das wiederholen wir auf allen virtuellen Maschinen, wobei die IP-Adresse angepasst wird. Also: 192.158.2.200 auf PI-200, 192.168.2.201 auf PI-201, 192.168.2.202 auf PI-202 etc

Blick in die Netzwerk-Konfiguration auf pi-203 – man beachte: die IP-Adresse enthält 203

Über enp0s3 erfolgt die Konfiguration der NAT-Verbindung mit dem Host-Rechner, also mit dem Laptop. Die IP-Adresse wird dynamisch vergeben, es ist also DHCP eingeschaltet.

Über enp0s8 erfolgt die Verbindung mit dem internen Netzwerk. Damit das Big Data Labor funktionieren kann, benötigen wir statische IP-Adressen. Für PI-201 wird hier die statische Adresse 192.168.2.201 vergeben.

Damit die Kommunikation ins Internet erfolgen kann, muss eine Route gelegt werden. Und  es müssen Domain Nameserver bekannt gegeben werden. 8.8.8.8 und 8.8.4.4 sind die Nameserver von Google, 1.1.1.1 und 1.1.0.0 sind die Domainname Server von Cloudflare.

Wir speichern das File und verlassen den Editor.

Jetzt müssen die Änderungen von Netplan übernommen werden, so dass sie auch nach dem Rebooten der virtuellen Maschine noch vorhanden sind.

$ netplan apply

Das Wiederholen wir analog auf allen virtuellen Maschinen. Anschließend booten wir alle virtuellen Maschinen, entweder mit Hilfe des VirtualBox Managers oder mit

$ reboot

Dieser Befehl muss fehlerfrei durchlaufen. Treten Fehler auf, dann handelt es sich meistens um Tippfehler.

Testen

Ein minimaler Test, beispielsweise auf pi-201, sieht wie folgt aus:

Einloggen in pi-201

$ ping google.com

Damit werden die NAT-Konfiguration, die Route und der Nameserver getestet. Die Ausgabe sollte so ähnlich aussehen, wobei das Auflisten mit STRG-C beendet wurde.

Output des ping-Befehls. Die Ausführung muss mit Strg-C unterbrochen werden.

Jetzt testen wir das interne Netzwerk. Ausgehend von pi-201 bauen wir eine ssh-Verbindung mit pi-202 auf:

$ ssh pi-202

Damit sollte eine ssh-Session von pi-201 aus gestartet werden, um auf pi-202 zu gelangen. Beim ersten Aufruf müssen wir noch den Fingerprint akzeptieren.

Auch hier testen wir mit ping und gehen anschliessend mit ssh weiter zu pi-203, und so weiter, bis wir alle Instanzen besucht haben.

Die ssh Session wird mit exit beendet.

$ exit

Damit kehren wir an diejenige Stelle zurück, von der aus wir die ssh-Verbindung aufgebaut haben. Wir müssen also unter Umständen mehrfach exit eingeben, bis wir auf pi-201 zurückgekehrt sind.

Wir können die virtuellen Maschinen aus dem VirtualBox Manager als Gruppe stoppen.

Erstes Ziel erreicht

Jetzt haben wir eine minimale funktionierende Big-Data-Labor-Umgebung auf unserem Laptop aufgebaut. Jetzt sind wir bereit, darauf Big-Data-Tools zu installieren und kennen zu lernen. Dazu entstehen weitere Artikel-Serien.

Veröffentlicht am

Eine VirtualBox einrichten und klonen

Eine VirtualBox einrichten und klonen

Teil 3 der Serie: Big Data Labor – Cluster aufsetzen

Wer mit virtuellen Maschinen arbeiten will, kann unter verschiedenen Anbietern auswählen. Gerade im Ausbildungsbereich ist VirtualBox sehr beliebt, weil viele fürs Kennenlernen notwendige Funktionalitäten in der kostenlosen Version erhältlich sind. Wer in einem Produktionssystem virtualisieren möchte, wird nicht um eine Evaluation der verschiedenen Anbieter herumkommen. Für unser Big-Data-Labor ist die Virtualisierung lediglich Mittel zum Zweck, so dass wir das Vorgehen mit Virtual Box zeigen.

An dieser Stelle sei auch auf den vorherigen Artikel in dieser Serie verwiesen insbesondere auf Infrastruktur für Big-Data-Trainings. Er enthält nähere Erläuterungen zur Virtualisierung und zu Containern.

Notwendige Vorkenntnisse

Für dieses Kapitel des Big Data Labors braucht man Administratorrechte auf dem eigenen Laptop (oder PC). Das Tutorial führt Schritt für Schritt durch den Installationsprozess, setzt jedoch voraus, dass der Leser mit Software-Installationen vertraut ist.

Grundlegende Kenntnisse mit Linux auf Ebene Kommandozeile werden für das Big Data Labor ebenfalls vorausgesetzt. Die Kommandos werden gezeigt und kurz erklärt, so dass der Leser in diesem Kapitel noch keine speziellen Linux-Kenntnisse braucht. In späteren Kapiteln werden für die (wenigen) Linux-Kommandos bei der ersten Nennung Links in die Dokumentation ergänzt.

Voraussetzung: Laptop

Um mit dem Big-Data-Labor arbeiten können, brauchen wir einen Laptop (oder PC) mit genügend freien Kapazitäten. Hier eine Empfehlung:

  • min 16 GB RAM
  • min 100 GB freier Speicherplatz auf der Harddisk
  • 64-bit Prozessor
  • Internetverbindung.

Voraussetzung Prozessor

Der Prozessor des Laptops muss Virtualisierung ermöglichen. Gerade in kostengünstigeren Laptops können Prozessoren verbaut sein, die Virtualisierung nicht unterstützen. Diese Seiten können weiter helfen, je nach Hersteller des Prozessors: Intel-Prozessoren  oder AMD-Prozessoren.

Im Zweifelsfall geht Probieren über Studieren.

Voraussetzung BIOS

Auch wenn der Prozessor Virtualisierung ermöglicht, dann ist sie nicht unbedingt aktiviert.

Der Task-Manager in Win 10 zeigt, ob die Möglichkeit zur Virtualisierung aktiviert wurde.

Ob die Virtualisierung auf einem Windows-Laptop möglich ist, lässt sich einfach herausfinden: Wir öffnen den Task-Manager (Strg-Alt-Del) und verzweigen dort auf die Registerkarte “Leistung”. Hier können wir ablesen, ob Virtualisierung möglich ist.

Wir können es auch einfach drauf ankommen lassen, und die erste virtuelle Maschine erstellen. Zu einem gewissen Zeitpunkt während des Vorgangs, wird eine entsprechende Fehlermeldung angezeigt. Diese macht darauf aufmerksam, dass im BIOS die Virtualisierung aktiviert werden soll.

Einblick in die BIOS-Konfiguration eines HP Rechners mit aktivierter Virtualisierung.

Wie man das BIOS aktiviert, hängt vom Hersteller des Laptops ab. Das Bild rechts zeigt als Beispiel die entsprechenden Einstellungen auf einem HP-Laptop.

Wenn wir dies mit unserem Laptop zum ersten Mal machen, dann wird nur eine Internetrecherche weiterhelfen. Wir suchen Beispielsweise nach Hersteller, Produktbezeichnung des Laptop, BIOS. In der Regel wird es darauf hinauslaufen, dass der Laptop neu gebootet werden muss und dass während des Bootvorgangs, noch bevor das Betriebssystem geladen wird, eine bestimmte, vom Hersteller definierte Tastenkombination gedrückt werden muss.

Wir sehen anschließend die BIOS Einstellungen. Diese Verändern wir nur sehr gezielt und mit größter Vorsicht. Normalerweise navigiert man in diesen Einstellungen mit den Pfeil- und Tab-Tasten. Wir suchen eine Einstellung, die beispielsweise den Begriff “Virtualisation Technology” enthält und wir sorgen dafür, dass diese eingeschaltet ist. Die Einstellungen müssen gespeichert werden und der Laptop muss neu gebootet werden.

Gast-Betriebssystem herunterladen

Ubuntu Betriebssystem herunterladen: https://www.ubuntu.com/download/server
Wichtig: Für das Big Data Labor wird die Server-Version verwendet.

Als vorbereitenden Schritt laden wir ein Image des Gast-Betriebssystem herunter. In diesem Tutorial verwenden wir Ubuntu Server. Eine kurze Google Suche lässt uns die Download-Seite finden.

Wir laden die Software herunter und speichern das File vorerst auf der Festplatte des Laptops. Wir werden in einem späteren Installationsschritt die Datei verwenden.

Vorbereitung: Server Namen

Die einzelnen virtuellen Server werden Server-Namen brauchen. In diesem Tutorial nennen wir sie “pi-200”, “pi-201”, etc. Die Namensgebung kann beliebig sein, sollte jedoch der Einfachheit halber eine Nummerierung enthalten.

Voraussetzung: Virtualisierungssoftware

Die aktuelle Version von VirtualBox herunterladen

Als erstes laden wir die Software für VirtualBox auf den Laptop herunter.

Auf dieser Seite erscheint immer sehr prominent die Download-Möglichkeit für die Software. Zum Zeitpunkt der Erstellung des Tutorials war gerade die Version 6.0 aktuell. Wir klicken auf die grüne Schaltfläche – oder auf das Icon auf künftigen Seiten, das dieser Schaltfläche entspricht.

Die Software muss auf dem Host-Betriebssystem laufen. Hier ist also das Betriebssystem des Laptops auszuwählen.

Auf der nächsten Seite wird die Software für verschiedene Host-Betriebssysteme angeboten. Hier wählen wir das Betriebssystem aus, das auf unserem Laptop installiert ist.

Anschließend wird die Virtualisierungssoftware heruntergeladen. Wir speichern sie auf dem Laptop und installieren sie mit den Standardeinstellungen.

VirtualBox – eine erste virtuelle Maschine

Blick in eine neue Installation des Virtualbox Managers.

Wir starten die VirtualBox-Software und verschaffen uns einen Überblick über die Menu Optionen.

Als nächstes konfigurieren wir eine virtuelle Maschine. Wir klicken dazu auf “Neu”. Dazu können wir die entsprechende Menüoption oder auch die große Schaltfläche auf der Übersichtsseite verwenden.

Wir werden jetzt durch den Installationsprozess geführt.

Die virtuelle Maschine benennen und das Gast-Betriebssystem auswählen. Hier Linux sowie die im vorherigen Schritt heruntergeladene Ubuntu-Version auswählen.

Als erstes braucht die virtuelle Maschine einen eigenen Namen. Dazu verwenden wir die im Kapitel “Vorbereitung Server Namen” bestimmten Namen. Für dieses Tutorial fangen wir an mit pi-200.

Als Betriebssystem wählen wir Linux, weil die Big-Data-Software unter Linux läuft.

Wir können anschliessend die gewünschte Linux-Version auswählen. Für dieses Tutorial nehmen wir Ubuntu 64-bit. Wir können auch eine andere Version nehmen. 64-bit sollte es schon sein, die neueren Laptops haben ja 64-bit-Prozessoren und auch die Big-Data-Software geht von 64-bit aus.

Festlegen, wie viel RAM die virtuelle Maschine verwenden darf.
Größe des RAM auf dem Laptop spielt dabei eine wichtige Rolle.

Auf der folgenden Seite, legen wir fest, mit wie viel RAM die virtuelle Maschinen arbeiten darf.

Dabei spielt die Größe des RAM auf dem Laptop eine wichtige Rolle. Der virtuellen Maschine wird vom Laptop nicht mehr RAM zur Verfügung gestellt, als wir hier konfigurieren.

1GB, also 1024 MB sollten es mindestens sein. Diese Größe ist für einen Produktivbetrieb viel zu gering, für die ersten Kennenlernschritte jedoch mindestens ausreichen. Wir werden mindestens 3 virtuelle Maschinen benötigen und auch darauf achten, dass für das Host-System genügend RAM übrig bleibt.

Festlegen, wie viel Platz die virtuelle Maschine auf dem Gast-Rechner benötigen wird. Die Größe der Festplatte des Laptops, sowie der verfügbare Platz, spielen dabei eine wichtige Rolle.

Für die weiteren Schritte, übernehmen wir jeweils die Standard-Optionen.

Für die weiteren Optionen wählen wir vorerst die Standardeinstellungen und schließen die Konfiguration mit “Erzeugen” ab.

Die Standard-Vorgabe für die virtuelle Festplatte kann übernommen werden. 8 GB reichen gut für erste Tests. – für erweiterte Tests empfehle ich 20 GB.

Auf der nächsten Seite konfigurieren wir die Größe der Festplatte, sowie deren Name. Wir wollen ja nicht wirklich mit Big-Data arbeiten, also brauchen wir keine große Festplatte. Hier sollten wir aufpassen, dass genügend freier Festplattenplatz auf dem Laptop vorhanden ist. Wir werden ja mindestens 3 virtuelle Maschinen benötigen und alle werden auf dem Laptop diesen Platz verbrauchen.

Blick in den VirtualBox-Manager. Die neu konfigurierte VM erscheint links, die Konfiguration kann im Hauptbereich (rechts) eingesehen und verändert werden.

Die neu konfigurierte virtuelle Maschine ist jetzt im linken Bereich zu sehen.

Internes Netzwerk

Bevor wir loslegen, versehen wir die virtuelle Maschine mit einer weiteren Netzwerkkarte, damit wir mehrere VMs untereinander vernetzen können.

Mit VirtualBox geht das am Einfachsten, indem wir ein internes Netzwerk bilden. Dazu definieren wir für jede virtuelle Maschine eine zweite (virtuelle) Netzwerkkarte. Diesmal öffnen wir die Registerkarte “Adapter 2”.

Internes Netzwerk für das Cluster definieren
  • Wir aktivieren den Adapter.
  • Wählen aus, dass er an ein Internes Netzwerk angeschlossen sein soll.
  • Und geben dem Netzwerk einen Namen – hier bigdata.
  • Anschließend speichern wir mit OK.

Diesen Vorgang wiederholen wir für alle virtuellen Maschinen, die wir für das Cluster definieren und vergeben dabei immer denselben Netzwerknamen.

VirtualBox wird ein (virtuelles) Netzwerk mit diesem Namen zur Verfügung stellen.

Starten und Betriebssystem installieren

Wir können sie starten, indem wir auf den grünen Pfeil klicken.

Die virtuelle Maschine ist erst in VirtualBox konfiguriert, doch das Gast-Betriebssystem ist noch nicht installiert. Beim ersten Starten wird diese Installation nun vorgenommen. Dies dauert eine Weile – wir nehmen uns also genug Zeit.

Das Betriebssystem wird erst beim ersten Starten der virtuellen Maschine installiert. Der Pfad zum vorher heruntergeladene Image muss hier angegeben werden.

Als Erstes werden wir gefragt, wo sich das Image des Gast-Betriebssystem befindet.

Spätestens jetzt müssen wir das Betriebssystem herunterladen (siehe Abschnitt “Gast-Betriebssystem herunterladen“). Und wir wählen die heruntergeladene Datei aus und klicken auf “Starten”.

Jetzt wird in der virtuellen Maschine das Ubuntu-Betriebssystem installiert. Die Installationsschritte sind identisch mit einer Installation direkt auf einer Hardware, nur dass wir eine virtualisierte Umgebung verwenden. Die Navigation erfolgt mit den Pfeiltasten, den Tabulatortasten, mit Enter oder mit Esc.

Es ist praktisch, wenn Ubuntu englisch eingestellt ist. Die bisher verfügbare Dokumentation ist ja auf Englisch verfasst.

Wir werden nach der Sprache gefragt. Big-Data-Software ist oft so neu, dass es noch keine deutschen Beschreibungen gibt. Wählen wir hier “English” aus, dann wird das installierte Betriebssystem zu den Produktbeschreibungen sprachlich passen. Wählen wir eine andere Sprache aus, dann werden wir später immer wieder übersetzen müssen.

Wichtig: Die Tastatur korrekt installieren.

Anders verhält es sich in Bezug auf die Tastatur, also das Keyboard. Hier konfigurieren wir das Layout derjenigen Tastatur, die wir einsetzen. Die gängigsten Tastaturen stehen zur Auswahl. Verwenden wir jedoch ein anderes Tastaturlayout, z.B. German Switzerland, dann  hilft die Option “Identify Keyboard” weiter. Diese führt durch einen Konfigurationsprozess, während dem man aufgefordert wird, verschiedene Tasten auf der Tastatur zu betätigen. Das Installationsprogramm ermittelt damit das passende Tastaturlayout. Wir kontrollieren noch und wenn alles in Ordnung ist, wählen wir anschließend “Done” aus.


Als nächstes konfigurieren wir die Netzwerkkarten. Für enp0s3 hat die automatische Konfiguration geklappt. Mit dieser Netzwerkkarte werden wir von der VM aus via Heimnetzwerk aus dem Internet Software herunterladen können.

Bei enp0s8 besteht Handlungsbedarf, die Konfiguration des internen Netzwerks muss manuell vorgenommen werden. Die folgende Abbildung zeigt die Abfolge der Auswahlen und Eingaben.

Bei enp0s8 muss die Konfiguration manuell vorgenommen werden. Navigieren mit Tab, Leerschlag und Enter.

In den nächsten Schritten übernehmen wir die Default Einstellungen:

In den weiteren Schritten übernehmen wir die Default-Einstellungen.

Bis wir schließlich nach Usernamen, Servernamen und Passwort gefragt werden.

Konfigurieren der Zugangsdaten für Ubuntu. Passwort nicht vergessen…

Als Name und Username geben wir beispielsweise “pi” ein.

Als Server-Name empfiehlt es sich, denselben Namen zu verwenden, den wir auch für die virtuelle Maschine in VirtualBox vergeben haben – im Falle dieses Tutorials ist es pi-200.

Das Passwort muss wiederholt werden. Wir werden es bei jedem Login verwenden und behandeln es mit der gebührenden Sorgfalt.

Wir brauchen keine vorkonfigurierten Pakete.

Vorkonfigurierte Pakete verwenden wir nicht, wählen also gleich “Done” aus.

Die Installation wird anschließend ausgeführt. Das kann eine kleine Weile dauern.

Am Ende werden wir aufgefordert, das Installationsmedium zu entfernen. Diese Meldung ist im Falle der Installation in eine virtuelle Maschine nicht weiter zu beachten und wir beantworten sie mit “Enter”.

Die Installation wurde ausgeführt und wir können einloggen. Login-Name und Passwort wurden während der Installation ausgewählt.

Jetzt wird der Server gebootet und der Login-Prompt erscheint.

Es kann vorkommen, dass nach dem ersten Anzeigen des Login-Prompts mit etwas Verspätung noch weitere Meldungen angezeigt werden. Wird die Enter-Taste gedrückt, dann erscheint der Login-Prompt wieder.

Username ist pi (wie während der Installation vergeben) und auch das Passwort haben wir während der Installation vergeben.

Auf dem Prompt werden wir im Folgenden Kommandos zur Administration des Servers eingeben.

Tipps:

  • Ist die Anzeige zu klein, dann hilft die Menu Option der Virtual Box weiter.
  • Es empfiehlt sich, die Ubuntu Pakete gleich zu updaten. Folgende beiden Befehle tun dies:

sudo apt-get update

sudo apt-get upgrade

Mit sudo können alle Befehle mit Root-Rechten ausgeführt werden. Beim ersten Mal wird man nach dem Passwort gefragt. Gemeint ist das Passwort für den aktuellen User, das wir während der Installation wählten und auch zum Einloggen verwenden.

Alle weiteren Prompts sind mit Y zu beantworten.

Wir fahren den virtuellen Server herunter mit:

sudo shutdown -h now  

Klonen

Wir stellen sicher dass die virtuelle Maschine heruntergefahren ist und können sie jetzt klonen. Das ist der einfachste Weg, eine Reihe identisch installierter virtueller Maschinen zu erstellen.

Die erste virtuelle Maschine ist jetzt konfiguriert. Sie kann geklont werden. Mit Rechtsklick erscheint das entsprechende Kontext-Menu.

Dazu rechtsklicken wir auf den Namen der virtuellen Maschine in der linken Spalte im VirtualBox Manager. Im Kontext-Menu wählen wir “Klonen”.

Angaben zum Klonen – die Namen vergeben wie im Kapitel “Vorbereitung: Server Namen” bestimmt.

Wir vergeben den Klonen passende Namen. Für das Big-Data-Labor benötigen wir mindestens 2 Klone erstellen. Wenn der Laptop es zulässt, können es auch mehr sein. Dieses Tutorial wird mit 5 virtuellen Maschinen arbeiten. Der Vorgang des Klonens wird entsprechend oft ausgeführt und die Nummerierung in der Namensgebung wird hochgezählt.

Der erste Klon erhält also den Namen: PI-201

Wir wählen die Option “verknüpfter” Klon und können dadurch Speicherplatz sparen.

Und wir lassen dem Klon neue (virtuelle) MAC-Adressen zuweisen.

Wir klicken auf Klonen und der Vorgang wird ausgeführt.

Das wird wie oben ausgeführt, mehrfach wiederholt. Dabei vergeben wir der Reihe nach die Namen, die wir im Kapitel “Vorbereitung: Server Namen” ausgewählt haben.

Sobald alle virtuellen Maschinen erstellt wurden, können wir sie gruppieren.

Um die Administration zu vereinfachen, fassen wir die virtuellen Maschine in eine Gruppe zusammen.

Dazu selektieren wir sie in der linken Spalte des VirtualBox Managers und rufen mit der rechten Maustaste das Kontext-Menu auf.

Hier wählen wir die Funktion “Gruppieren” aus.

Für den späteren Gebrauch ist es praktisch, die Gruppe auch gleich aussagekräftig zu benennen.

Rechtsklick auf den Gruppennamen zeigt ein Kontextmenu. Hier erhalten wir die Möglichkeit, die Gruppe zu benennen. Beispielsweise “Big Data Labor

Die virtuellen Maschine einer Gruppe können gleichzeitig gestartet und gestoppt werden.

Wir können eine Gruppe auswählen und auf Starten klicken. Der Virtual Box Manager startet dann alle virtuellen Maschinen der Gruppe.

Das Stoppen funktioniert analog.

Im nächsten Kapitel werden wir die virtuellen Maschinen untereinander vernetzen.


Buchempfehlungen

Veröffentlicht am

Virtuelle Maschine versus Container

Virtuelle Maschine versus Container

Teil 2 der Serie: Big Data Labor – Cluster aufsetzen

In dieser Blog Serie bauen wir schrittweise eine kostengünstige Labor-Umgebung für Big Data Experimente auf.

Ist die Umgebung einmal aufgebaut, dann können wir mit den ersten Gehschritten starten. Das in der Labor-Umgebung erworbene Wissen lässt sich nahtlos in eine kostenintensivere und produktiv einsetzbare Umgebung übertragen. Siehe dazu auch die einleitenden Ausführungen zu dieser Artikel-Serie.

Wir starten mit einer Labor-Umgebung, die auf einem Laptop Platz findet und doch verteiltes Rechnen mit Big-Data-Technologien erlaubt. In diesem Artikel stellen wir die Unterschiede zwischen einem Big Data Cluster basierend auf virtuellen Maschinen und einem Big Data Cluster basierend auf Containern vor. In den nächsten Artikeln werden wir einen Big Data Cluster mit virtuellen Maschinen aufbauen.

Ein Blick auf die grundsätzliche Architektur von Big Data fähigen Systemen.

Grundlegende Darstellung eines Big Data Clusters mit drei Nodes

Die Stärke moderner Big Data Systemen liegt im kostengünstigen Scale-Out: Handelsübliche Server (oft als Commodity Hardware bezeichnet), werden zu einem Cluster (Verbund) zusammengeschlossen. Sie bilden dann ein Netzwerk von Servern. In diesem Fall spricht man von einem Node und meint einen Server innerhalb eines Clusters.

Große Big-Data-Installationen, wie etwa bei den Internet-Riesen anzutreffen, umfassen Tausende von Nodes. Auf unserem Bild illustrieren wir das Prinzip mit drei Nodes.

Die Nodes sind miteinander vernetzt – im Bild als Linien dargestellt. Jeder Node hat eine eigene IP Adresse.

Auf jedem Node ist ein Betriebssystem (OS) installiert. Normalerweise dasselbe OS auf allen Nodes, üblicherweise ein Linux-System. Damit einher geht ein Filesystem, in der Linux-Welt treffen wir oft Ext4 an.

Mit zu einem Big-Data-Cluster gehören jetzt die passenden Big-Data-Tools und Apps, die auf den Nodes installiert werden. Auf diese Tools und Apps werden wir in späteren Artikeln eingehen.

Ziel ist es ja, sehr große Mengen an Daten zu verwalten. Üblicherweise handelt es sich dabei um sehr große Files, im Terabyte-Bereich und größer. Auf unserem Bild ist das File F1 schematisch dargestellt.

In einer Big-Data-Installation wird dieses Riesenfile auf mehrere Nodes aufgeteilt. Auf einem Node liegt also nur ein Teil des Files. Aus Sicht des Ext4-Systems auf einem einzelnen Node ist jeder Teil von F1 ein in sich geschlossenes Ext4-File. Nur durch die Big-Data-Tools werden die verschiedenen File-Teile als ein logisches Ganzes erkannt und behandelt.

Das Big Data Labor soll diese Umgebung auf einem Laptop miniaturisieren:

Ein Miniatur-Cluster auf einem Laptop als Big Data Labor

Aktuell gibt es ja zwei Möglichkeiten, um einen Server auf einem Laptop zu “miniaturisieren”

  1. Virtuelle Maschinen
  2. Container

Im Folgenden widmen wir uns den Vor- und Nachteilen der beiden Möglichkeiten gerade in Bezug auf unser Laptop Big Data Labor. Dazu holen wir etwas aus und betrachten die grundlegenden Gemeinsamkeiten und Unterschiede der beiden Möglichkeiten.

Virtuelle Maschinen

Dank Virtualisierungstechnologien können wir auf dem Laptop zusätzlich zu allen Apps eine Umgebung installieren, die die Hardware und das Betriebssystem des Laptops nutzen, jedoch einsetzbar sind, wie ein eigenständiger Rechner mit einem separaten Betriebssystem.

Hier eine schematische Darstellung, die sich auf das Big-Data-Labor bezieht:

Ein Cluster basierend auf virtuellen Maschinen. Die drei mit F1 bezeichneten Blöcke sind drei Teile eines verteilten Big-Data-Files.

Der Laptop dient als Gastgeber, also also Host. Und so ist die Rede vom Host-Betriebssystem.

Darauf installieren wir die Virtualisierungssoftware – genauer den Hypervisor. Innerhalb dieses Hypervisors installieren wir anschließend virtuelle Maschinen mit einem eigenen Betriebssystem. Man spricht vom “Gast”, englisch “Guest”. So kann man die beiden Betriebssyste unterscheiden: Host und Gast. Ein Host kann mehrere Gäste haben. Vorausgesetzt, unser unser Laptop verfügt über genügend Rechenkapazität.

Auf der schematischen Darstellung oben, sind drei virtuelle Maschinen, also “Gäste” dargestellt. Für das Big-Data-Labor werden wir für jede virtuellen Maschine eine eigene statische IP-Adresse konfigurieren.

Der Hypervisor virtualisiert auf Hardware-Ebene. Die virtuellen Maschinen sind vollständig voneinander isoliert und der Hypervisor enthält unter anderem als eine Art “Router”, weist den virtuellen Maschinen IP-Adressen zu und stellt die TCP-IP-Verbindung dazwischen her.

Jede virtuelle Maschine hat also ein eigenes Betriebssystem, ein eigenes Filesystem und eine eigene Installation der Tools und Apps, die wir kennenlernen wollen.

Wie jeder Computer, kann auch eine virtuelle Maschine gestartet und gestoppt werden. Es wird dann jeweils das betreffende Gast-Betriebssystem gestartet resp. gestoppt.

Images von virtuellen Maschinen können auch von einem Laptop auf einen anderen kopiert oder verschoben werden, mehrheitlich unabhängig vom Host-Betriebssystem der Laptops.

Wir werden mit Laptops arbeiten, um das Big-Data-Labor aufzubauen. Virtualisierung ist nicht auf Laptops beschränkt, sondern findet sehr viel Verbreitung bei Cloud-Providern. Dort werden virtuelle Server aufgebaut, verwaltet, vermietet.
P

Einige bekannte Hersteller von Technologien für virtuelle Maschinen:

Container

Containers werden im Vergleich zu virtuellen Maschinen als leichtgewichtiger dargestellt.

Einige bekannte Hersteller von Container Technologien:

Wir stellen hier die Eigenschaften in Bezug auf Docker dar. Andere Container Provider funktionieren ähnlich.

Hier eine schematische Darstellung, die sich auf das Big-Data-Labor bezieht:

Ein Cluster basierend auf Containern.

Gleich wie virtuelle Maschinen kann auch diese Variante auf verschiedenen Host Betriebssystemen auf Laptops und auf Servern installiert werden.

Docker (oder eine andere Container Technologie) übernimmt die Rolle des Hypervisors. Docker ist anders konzipiert. Anstatt wie bei der Virtualisierung für jeden Container das ganze Betriebssystem neu zu installieren, teilen sich die Container den Betriebssystem Kernel und oft auch die Binaries. Die Virtualisierung erfolgt also auf Betriebssystem-Ebene, wobei gemeinsame (shared) Komponenten read-only sind.

Das hat ist sehr platzsparend und ressourcensparend und hat auch zur Folge, dass ein Container sehr viel schneller gestartet werden kann, als eine virtuelle Maschine. Zudem können auf demselben Laptop mehr Container gleichzeitig laufen können, als gleichzeitige virtuelle Maschinen möglich wären.

Doch wo bleibt jetzt unser Big-Data-File? Hier eine schematische Darstellung in Bezug auf unser Big-Data-Labor:

Ein Cluster basierend auf Containern. Die drei mit F1 bezeichneten Blöcke sind drei Teile eines verteilten Big-Data-Files.

Eine weitere Eigenschaft der Container Technologie ist die, dass in einem Container wohl Daten im Filesystem gespeichert werden können, diese aber verloren gehen, wenn der Container gestoppt wird. Container sind dazu gedacht, bei Bedarf sehr schnell gestartet zu werden, ihre Aufgabe auszuführen, die Ergebnisse beispielsweise in eine Datenbank zu schreiben und wieder gestoppt zu werden, wenn sie nicht mehr benötigt werden. Files die in Container geschrieben werden, sind also temporärer Natur und nicht für Persistierung (also die dauerhafte Aufbewahrung) gedacht.

Wird jetzt ein Container gestoppt dann sind diese Daten verloren. Hier die schematische Darstellung:


Ein Cluster basierend auf Containern. Die drei mit F1 bezeichneten Blöcke sind drei Teile eines verteilten Big-Data-Files. Ein Block fehlt, sobald der zugehörende Container gestoppt wird.

Es kann wohl ein neuer Container gestartet werden und ihm kann auch die vorherige statische IP-Adresse zugeordnet werden. Doch die Daten bleiben verloren. Hier eine schematische Darstellung in Bezug auf das Big-Data-Labor:


Ein Cluster basierend auf Containern. Die drei mit F1 bezeichneten Blöcke sind drei Teile eines verteilten Big-Data-Files. Ein Block fehlt, sobald der zugehörende Container gestoppt und neu gestartet wird.

Dass die Daten eines Nodes beim Shutdown verloren gehen, ist überhaupt nicht im Sinn eines Big-Data-Filesystems.

Es ist möglich, einen Container so zu konfigurieren, dass die Files außerhalb des Containers und zwar auf dem Filesystem des Hosts persistiert werden. Im Container mounted man ein logisches Volumen auf dem Host Filesystem.

Hier eine schematische Darstellung in Bezug auf das Big-Data-Labor:

Ein Cluster basierend auf Containern. Die drei mit F1 bezeichneten Blöcke sind drei Teile eines verteilten Big-Data-Files. Im Unterschied zu den vorherigen Darstellungen, befinden sich die Blöcke jetzt in speziell zugeordneten (mounted) Verzeichnissen auf dem Gast-System.

Für unsere Miniaturisierung bedeutet das jetzt, dass jedem Container ein eigenes Volumen auf dem Host-Filesystem zugewiesen wird.

Wird jetzt der Container gestoppt, dann gehen dessen lokale Daten verloren, die auf dem Host-Filesystem persistierten Daten bleiben jedoch vorhanden.

Wird jetzt ein Container gestoppt, dann bleiben die zugehörenden Daten vorhanden. Sie stehen dem Gesamtsystem jedoch nicht zur Verfügung.

Das Big-Data-Filesystem, beispielsweise Hadoop, verwaltet die File-Blöcke auf den einzelnen Nodes, weiss genau, auf welchem Node welche Blöcke sind. Die Nodes werden von Hadoop durch ihre IP-Adresse identifiziert. Das Big-Data-Filesystem wird auch dafür sorgen, dass die Blöcke geschickt über den Cluster verteilt sind.

Beim starten eines Containers muss dafür gesorgt werden, dass zum gemounteten Volumen ein Container mit der ursprünglichen statische IP-Adresse gestartet wird. Denn sonst wird das Big-Data-Filesystem das Riesenfile nicht mehr korrekt aus den Blöcken zusammensetzen können. Hier eine schematische Darstellung in Bezug auf das Big-Data-Labor.

Wir der Container korrekt neu gestartet, dann stehen die Daten dem Gesamtsystem wieder zur Verfügung.

Was bei Containers schlank ist und als Vorteil erscheint, wird für deren Einsatz im Big-Data-Labor  jetzt plötzlich schwerfällig und fehleranfällig.

Wird ein Container heruntergefahren, was wir ja tun, spätestens wenn wir den Laptop ausschalten, dann verschwindet er, verliert seine Identität IP-Adresse und seine Daten. Als Big-Data-Filesystem jedoch verwaltet Hadoop die Files in Blöcken und geht davon aus, dass ein Node eine statische IP-Adresse hat. Startet man jetzt den Laptop wieder, dann muss man auch Docker wieder starten und die einzelnen Container hochfahren. Diese müssen dann so konfiguriert werden, dass sie eine statische IP-Adresse erhalten und genau dasjenige Volumen auf dem Host-OS gemounted wird, das zu dieser statischen IP-Adresse gehört.

Das ist alles machbar, jedoch ziemlich erklärungsbedürftig und für einen Kennenlernbetrieb unnötig fehleranfällig. Aus dem Grund, beginnen wir die Labor-Umgebung mit Hilfe von virtuellen Maschinen zu bauen. Wir werden uns schneller aufs Wesentliche konzentrieren können und in einem späteren Schritt die Docker-Variante vorstellen.

Veröffentlicht am

Infrastruktur für Big-Data-Trainings

Teil 1 der Serie: Big Data Labor: Cluster aufsetzen

Wer sich mit Big Data Technologien auseinandersetzt, taucht ein in eine faszinierende und sich schnell verändernde Welt.

Es gibt natürlich verschiedenste Möglichkeiten, den Überblick über die Entwicklungen zu erhalten und zu behalten. Will man nicht nur einen High-Level theoretischen Einblick haben, sondern Hands-On-Erfahrungen sammeln, dann braucht man eine Arbeitsumgebung, um die verschiedenen Tools kennen zu lernen.

Mit Big Data Technologien kann man immense Datenmengen verarbeiten, viel größer, als der persönlichen Laptop fassen kann. Die Daten werden auf viele Rechner verteilt und die Berechnungen erfolgen parallel auf mehreren Rechnern. Um die Tools kennen zu lernen, beschafft man sich am besten eine verteilte Umgebung. Es ist auch möglich, die Tools auf nur einem Rechner zu installieren, doch dann verbaut man sich die Chance, wichtige Aspekte der Big Data Berechnungen kennen zu lernen.

Es gibt verschiedene Möglichkeiten, wie man eine Labor-Umgebung schaffen kann:

  • Man hat das Glück und kann die Software auf mehreren Servern installieren.
  • Man mietet eine Kennenlern-Umgebung bei einem Cloud-Anbieter.

Für diese beiden Optionen benötigt man einen gewissen finanziellen Rahmen, den möglicherweise zu Beginn nicht aufbringen möchte.

Es gibt noch einfachere Varianten, um ein Big-Data-Labor aufzubauen

  • Man baut eine verteilte Umgebung mit virtuellen Maschinen auf
  • Nur limitiert interessant: man verwendet Docker Images
  • Man baut eine verteilte Umgebung mit Raspberry Pi auf

Diese drei Varianten sind deutlich kostengünstiger als die ersten beiden und sind ideal, um erste Experimente zu machen und die Tools kennen zu lernen. Sie bieten auch eine ideale Möglichkeit, den Produktionsbetrieb vorzubereiten. Die Einschränkungen: man hat natürlich keinen Platz für enorme Datenmengen und die Ausführungsgeschwindigkeit ist eher gemütlich.

Diese Artikel-Serie zeigt, wie eine verteilte Umgebung mit virtuellen Maschinen gebaut werden kann. Insbesondere wird auch erläutert, welches die Grenzen sind, die eine reine Docker-Umgebung in Bezug auf eine Labor-Umgebung mit sich bringt.

Die Serie wurde auch als E-Book und Print-On-Demand Buch veröffentlicht (mittlerweile in der zweiten, aktualisierten Auflage) und mit Anleitungen ergänzt, wie ein Raspberry-Pi-Cluster für den Aufbau einer Labor-Umgebung für Big Data Technologien aufgesetzt wird.

Inhalt der folgenden Artikel