Veröffentlicht am

Virtuelle Maschinen vernetzen (Tutorial)

Tutorial Virtuelle Maschinen vernetzen

Virtuelle Maschinen vernetzen (Tutorial)

Eine eigene Cloud auf dem Laptop – das ist praktisch, gerade wenn man Big-Data-Systeme kennen lernen will. Dazu vernetzen wir mehrere virtuelle Maschinen.

Das folgende Tutorial zeigt eine Schritt für Schritt Anleitung zum Aufsetzen und Klonen einer einzelnen virtuellen Maschine mit VirtualBox.

Danach erläutert es die Konzepte zum Vernetzen der virtuellen Maschinen.

Das Tutorial ist ein Auszug aus dem E-Book Cluster aus Virtuellen Maschinen. Dort zeige ich auch das Vorgehen mit Parallels, einer Virtualisierungssoftware für ARM-Chips, also die neuen Mac-Prozessoren. Für beide Virtualisierungen zeige ich ausführlich die notwendigen Ubuntu-Linux-Befehle, um die virtuellen Maschine auch auf Linux-Ebene zu vernetzen. Das E-Book findest du im Shop.

Doch jetzt starten wir mit VirtualBox:

Wir arbeiten mit einem Mini-Cluster aus drei 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.

Wichtigste Eigenschaften Virtueller 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, sich jedoch verhalten wie ein eigenständiger Rechner mit einem separaten Betriebssystem.

Hier eine schematische Darstellung einer Laptop-Cloud mit fünf virtuellen Maschinen:

Die layer der Virtualisierung
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 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 Betriebssysteme unterscheiden: Host und Gast. Ein Host kann mehrere Gäste haben. Vorausgesetzt, unser Laptop verfügt über genügend Rechenkapazität. Ein Beispiel: Der Host läuft mit Windows und der Gast läuft mit Linux.

Auf der schematischen Darstellung oben, sind drei virtuelle Maschinen, also “Gäste” dargestellt. Für den Trainings-Cluster 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 den Trainings-Cluster aufzubauen. Virtualisierung ist nicht auf Laptops beschränkt, sondern findet sehr viel Verbreitung bei Cloud-Providern. Dort werden virtuelle Server aufgebaut, verwaltet, vermietet.

Eine einzelne VirtualBox einrichten und klonen

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 Training ist die Virtualisierung lediglich Mittel zum Zweck, so dass wir das Vorgehen mit VirtualBox zeigen.

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.

Laptop-Ressourcen als Voraussetzung zum vernetzen virtueller Maschinen

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.

Starker Prozessor um mehrere virtuelle Maschinen zuz vernetzen

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.

Die neuen Mac mit M1 und M2 Prozessoren basieren auf der ARM-Prozessor-Architektur. Die neueste Version von VirtualBox unterstützt auch diese Architekturen.

Im Zweifelsfall geht Probieren über Studieren.

Voraussetzung für die Virtualisierung im BIOS

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

Der Task-Manager in Win 10 & 11 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 für die virtuelle Maschine herunterladen

Ubuntu-Server-Betriebssystem herunterladen: https://www.ubuntu.com/download/server Wichtig: Die weitere Anleitung bezieht sich auf Ubuntu. Bei Mac ist die zur Prozessorarchitektur passende Version zu wählen.

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.

Server Namen der vernetzten virtuellen Maschinen

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.

Virtualisierungssoftware – ohne sie läuft nichts

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. Die Folgeversionen verhalten sich analog.

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. Bei Mac zusätzlich die Prozessorarchitektur beachten.

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.

Virtuelle Maschine starten und Gast-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 einer virtuellen Maschine

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.

Netzwerktopologie für das Cluster aus virtuellen Maschinen

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

Netzwerktopologie virtuelle Maschinen

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.

Wie geht es weiter? Cluster aus virtuellen Maschinen

Klone die virtuelle Maschine, so dass du mindestens zwei Instanzen hast. Je mehr desto besser. Ein Laptop mit den genannten Ressourcen kann auch fünf oder mehr virtuelle Maschinen gleichzeitig starten.

Das Laptop wird dadurch ziemlich stark ausgelastet. Auch hier: Probieren geht über Studieren – letztendlich ist die Anzahl möglicher Instanzen eine Frage der freien Kapazitäten auf dem Laptop.

Das Tutorial dieser Seite ist ein Auszug aus dem ausführlichen Schritt-für-Schritt-Tutorial: Cluster aus Virtuellen Maschinen.

Trainings-Cluster Raspberry Pi
  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control
Veröffentlicht am Schreib einen Kommentar

Virtuelle Maschinen bei AWS

Trainingsinfrastruktur

Warum sollte man überhaupt eine Reihe von virtuellen Maschinen bei AWS oder einem anderen Cloud-Anbieter einrichten und anschließend das Hadoop Distributed Filesystem und andere Komponenten des Hadoop Ökosystems installieren? Immerhin bieten viele Cloud-Anbieter solche Komponenten vorgefertigt auf Knopfdruck.

Diese Frage ist leicht zu beantworten: Wer die grundsätzliche Funktionalität und die grundsätzlichen Zusammenhänge kennen lernen will, braucht eine Übungsumgebung.


Das Big Data Labor zeigt zu Beginn verschiedene Möglichkeiten, eine solche Übungsumgebung zu schaffen:

Wer produktiv arbeiten will,  geht anders vor:

  • Baut eine produktiven Cluster auf, ähnlich wie im Tutorial mit Raspberry Pi gezeigt
  • Oder verwendet die vorgefertigten Komponenten bei einem Cloud-Anbieter.

Zusammenhänge begreift man am besten, indem man den Weg einmal selbst geht, alles aufbaut und untersuchen kann.

Bei AWS erhalten wir die für das Big Data Labor minimal notwendigen Ressourcen auch bis zu einem gewissen Grad kostenlos.
Dieses Tutorial zeigt folgendes:

  • Wir setzen ein AWS-Konto auf und bewegen uns dabei möglichst im kostenlosen Rahmen.
  • Wir konfigurieren eine erste virtuelle Maschine mit Ubuntu Linux und nehmen sie in Betrieb
  • Wir versehen sie mit einer fest zugeordneten IP-Adresse
  • Wir vervielfachen diese virtuelle Maschine und sind damit bereit für das nächste Kapitel im Big Data Labor, den Aufbau von HDFS.

Notwendige Vorkenntnisse

Das Tutorial richtet sich an Informatiker mit Grundkenntnissen in Linux. Die Fähigkeit , einen kommandozeilenorientierten Editors wie vi oder nano zu bedienen, wird vorausgesetzt.

Ebenso vorausgesetzt wird das grundlegende Verständnis über den Aufbau von Computern und Netzwerken.  IP-Adressen, ssh seien keine Fremdwörter.

Vorbereitung

Es ist praktisch, mit einer ssh-Konsole unter Linux/Mac zu arbeiten und der Einfachheit halber auch gleich diese ersten Einrichtungsschritte mit einem Browser auf einem Linux/Mac Desktop durchzuführen.

Wer mag, kann natürlich auch mit Windows/ssh arbeiten, verzichtet damit auf etwas Komfort.
Wer einen Windows Laptop hat und dennoch mit Linux arbeiten möchte, kann eine einfache virtuelle Maschine einrichten. Dies ist im Tutorial Eine VirtualBox einrichten und klonen beschrieben. Mit einem kleinen Unterschied: statt als Gast das Server Betriebssystem zu installieren, lohnt es sich das Desktop-Betriebssystem zu nehmen. Für Ubuntu ist es hier zu finden: https://www.ubuntu.com/download/desktop

Es reicht, eine virtuelle Maschine aufzubauen, sie muss nicht geklont werden; dieser Schritt aus dem genannten Tutorial braucht nicht durchgeführt zu werden.

Firefox ist auf dem Ubuntu-Desktop vorinstalliert und Terminals lassen sich leicht öffnen: mit Rechtsklick auf den Desktop und Auswahl “Open Terminal” im Kontextmenü. Dann kann man viele Befehle auch mit copy-paste übernehmen. Dazu verwendet man das Kontextmenü, das man mit der rechten Maustaste öffnet.
Dieser Desktop übernimmt die Rolle des mit PI-200 bezeichneten Rechners im Big Data Labor.

AWS Konto anlegen

Falls wir noch kein AWS Konto haben, dann legen wir zuerst eines an. Wir öffnen in einem Browser die Url https://aws.amazon.com/de

AWS ist sehr reif und verändert diese grundlegende Funktionalität nur sehr moderat. Die Darstellungen können jedoch ändern und von denjenigen auf den Screenshots abweichen. Auf dieser Seite wählen wir oben rechts “AWS-Konto erstellen”.

Die Benutzerführung ist intuitiv und wir machen die gewünschten Angaben. Wir nehmen auch zur Kenntnis, wie lange wir auf das kostenlose Kontingent zugreifen dürfen. Dabei müssen wir uns bewusst bleiben, dass dieses auch vor Ablauf der auf der Seite genannten Zeit (hier zwölf Monate) aufgebraucht werden kann.

Auf der nächsten Seite wählen wir den Kontotyp aus, Professional oder Privat, je nachdem, wie wir unterwegs sind. Und wir geben einen Namen und die weiteren notwendigen Angaben.

Ohne Zahlungsinformationen können wir kein Konto anlegen. Wir werden ein paar Seiten später sehen, wie wir einen Alert einrichten können, um rechtzeitig festzustellen, wenn wir unser Kontingent aufgebraucht haben.

AWS will die Identität bestätigen und insbesondere auch automatisch angelegte Accounts verhindern. Hier wählen wir die Möglichkeit mit SMS. Wir geben das Land und die Telefonnummer an, und schreiben die Zeichenfolge auf der Sicherheitsprüfung ab.

Nachdem wir “Kontaktieren Sie mich” geklickt haben, erhalten wir nahezu sofort eine SMS auf der Telefonnummer. Diese enthält einen Code, den wir abtippen.

Wir klicken auf “Code verifizieren”. Klappt alles wie gewünscht, dann konnte die “Identität” überprüft werden.

Wir klicken auf “Weiter” und können einen Support Plan wählen. Für das Big Data Labor fangen wir mit dem Kostenlosen Basic Plan an.

Wir wählen den kostenlosen Basic-Plan aus und landen hier.

Ab jetzt steht uns die umfangreiche und sehr ausführlich dokumentierte AWS-Welt zur Verfügung. Nahezu sofort erhalten wir eine E-Mail:

Etwas später trifft eine weitere E-Mail ein:

und gleich noch eine:

Einloggen und Region wählen

Wir müssen uns mit dem neu geschaffenen Konto einloggen. Dazu werden uns ja zahlreiche Möglichkeiten geboten. Beispielsweise indem wir auf die Schaltfläche “Bei der Konsole anmelden” Klicken.

Wir werden nach E-Mail-Adresse und Passwort gefragt und landen auf der Seite der AWS Management-Console.

Für das Big Data Labor brauchen wir einfache virtuelle Maschinen mit Linux-Betriebssystem.
Amazon unterhält viele Rechenzentren rund um den Globus. Voreingestellt ist Ohio und wir wählen zuerst eine andere Region aus. Dazu klicken wir oben rechts auf “Ohio” und wählen im Menu ein uns näher liegendes Rechenzentrum.

Je nach Region sind die Preise leicht verschieden. Wir wollen ja möglichst kostenlos unterwegs sein und sind wohl eher daran interessiert, auszuwählen, wo unsere Daten gelagert werden, auch wenn es im Rahmen des Big Data Labors nur einige wenige Testdaten sind.

Für dieses Tutorial wählen wir EU (Frankfurt) aus.

Die erste virtuelle Maschine einrichten

Noch auf derselben Seite, also der AWS Management Console, wählen wir jetzt die Option “Virtuelle Maschine starten” aus.

Wir werden jetzt schrittweise geführt. Im ersten Schritt wählen wir ein passendes Image. Wir scrollen etwas nach unten und finden Ubuntu Server 18.04 LTS. Diese Linux-Distribution passt zum Big-Data Labor. Wir klicken auf die dazu gehörende Schaltfläche “Select”

Als nächstes ist der Instanz-Typ zu wählen. Je mehr Ressourcen wir beanspruchen, desto kostspieliger wird der Gebrauch. Das kostenlose Kennenlernpaket enthält zum Zeitpunkt des Erstellens dieses Tutorials auch den Typ t2.micro. Dieser kommt mit 1 GB Memory, entspricht also gerade einem Raspberry Pi. Das Big Data Labor wurde für Raspberry Pi entworfen und wir können also auch mit t2.micro arbeiten.

Wer mehr Geschwindigkeit haben möchte, wählt einen kostenpflichtigen, besser ausgestatteten Instanz-Typ.

Nach der Wahl des Instanztyp klicken wir “Review and Launch”.
Wir erhalten eine Übersichtsseite mit mehr Angaben. Beispielsweise sehen wir hier, dass dieser Instanz-Typ mit 8 GB SSD Storage kommt. Das reicht für das Big Data Labor – wenn wir bereit sind, hin und wieder den Platz zu bereinigen.

Wir klicken jetzt auf “Launch”.

Das Schlüsselpaar (Key Pair)

Als nächstes werden wir aufgefordert, ein Schlüsselpaar (Key Pair) auszuwählen. Dieses dient dazu, den Datenverkehr zu verschlüsseln und den Zugang zur virtuellen Maschine abzusichern.
Beim ersten Gebrauch von AWS werden wir ein Schlüsselpaar erstellen. Ein Teil (der public Key) bleibt auf dem Server, den anderen Teil (den private Key) laden wir herunter und bewahren ihn sorgfältig auf.

Aus der Auswahlliste wählen wir “Create a new key pair”. Bei jeder weiteren virtuellen Maschine werden wir dieses Key Pair (Schlüsselpaar) dann verwenden.

Jetzt werden wir aufgefordert, dieses Schlüsselpaar zu benennen. Beispielsweise AWSBigDataLaborKey. Und wir klicken anschließend auf “Download Key Pair”.

Eine Datei mit dem Namen AWSBigDataLabor.pem wird jetzt heruntergeladen. Sie enthält den Schlüssel zur virtuellen Maschine.

Wir können für alle virtuellen Maschinen denselben Schlüssel verwenden. Verliert wir den Schlüssel, dann verlieren wir auch den Zugang zu den virtuellen Maschinen. Wir bewahren das Schlüsselpaar also sehr sorgfältig auf und erstellen einen Backup.

Ist das erfolgt, dann klicken wir “Launch Instances” um diese virtuelle Maschine zu starten.

Wir erhalten diese Benachrichtigung. Es dauert einige Minuten, bis diese Instanz gestartet ist.

Kosten kontrollieren: einen Billing Alert einrichten

In der Zwischenzeit können wir einen Billing Alert einrichten. So erhalten wir eine E-Mail, wenn die Kosten auf AWS einen gewissen Betrag übersteigen sollte. Auch wenn wir kostenlose Instanzen gewählt haben, können wir einen solchen Alert einrichten. Wir klicken auf den entsprechenden Link. Ein neues Browser-Window wird geöffnet.

Wir wählen mindestens die Option “Benachrichtigungen für kostenloses Kontingent erhalten” an, um benachrichtigt zu werden, sobald das kostenlose Kontingent aufgebraucht ist. Dies speichern wir mit “Präferenzen speichern”.

EC2-Dashboard: Die Instanzen

Wir gehen jetzt zurück auf das Browser-Fenster “Launch Status” und klicken “View Instances”.

Sollten wir uns “verirrt” haben, dann können wir das EC2-Dashboard auch aus dem Menü heraus wieder öffnen.

Der Menüpunkt ist gleich oben links. Wir wählen es an und erhalten im Hauptteil der Seite eine Ressourcenübersicht. Dort Klicken wir auf “Running Instances”

Wir erhalten eine Übersicht über alle unseren Instanzen. Mittlerweile dürfte diese erste virtuelle Maschine im Zustand “running” sein.
Ihr ist auch eine öffentliche IP-Adresse zugeordnet.

ssh Verbindung aufbauen

Mit dieser öffentlichen (public) IP-Adresse und mit dem Schlüssel können wir jetzt eine ssh-Verbindung zu diesem Server aufbauen.

Auf unserem lokalen Rechner, öffnen wir ein Terminal (z.B. Rechtsklick auf den Ubuntu-Desktop). Mit cd verzweigen wir in das Verzeichnis, indem wir den Schlüssel AWSBigDataLaborKey.pem sicher aufbewahren. Wir haben die Datei ja während der Installation heruntergeladen. Falls wir sie noch nicht verschoben haben, werden wir sie im Download-Verzeichnis finden.
Damit wir den Schlüssel verwenden können, müssen wir einmalig die Berechtigungen verändern:

chmod 400 AWSBigDataLaborKey.pem

Jetzt bauen wir eine ssh-Verbindung zu dieser Instanz auf. Dazu verwenden wir die öffentliche IP-Adresse und den folgenden Befehl

ssh -i (Pfad zum .pem-File} {öffentliche IP-Adresse} -l ubuntu

oder alternativ

ssh -i {Pfand zum .pem-File} ubuntu@{öffentliche IP-Adresse}

Wer nicht Ubuntu installiert hat, sondern eine andere Linux-Distribution vorgezogen hat, wird hier an Stelle von “ubuntu”, den Standard-Usernamen dieser Distribution eingeben.

Wie gewohnt bestätigen wir die Frage nach dem Fingerprint mit yes.

Jetzt erhalten wir die Begrüßungsinformation, die auch nochmals die private IP-Adresse enthält. Wir befinden uns jetzt in einer gewohnten Ubuntu-Umgebung und können beginnen, den Cluster aufzubauen.

Instanz stoppen und neu starten

Auch wenn wir ein kostenloses Kontingent erhalten haben, sollten wir uns von Anfang an daran gewöhnen, nicht verwendete Instanzen zu stoppen. Laufzeit ist ein Kostenfaktor bei AWS.

Dazu gehen wir auf das EC2-Dashboard, wählen die Instanz aus, klicken auf “Action”, wählen den Menüpunkt “Instance State” und dann den Untermenüpunkt “Stop”.

Diese Instanz können wir später wieder starten. Wählen wir stattdessen “Terminate”, dann wird die Instanz heruntergefahren und später gelöscht.

Das Stoppen kann einige Sekunden dauern. Sobald die Aktion ausgeführt ist, wird der neue Zustand auf der Konsole angezeigt.

Mit “Start” können wir die Instanz wieder starten.

Public und Private IP Adressen

Quelle Bild: eigene Darstellung

Die Graphik veranschaulicht das Zusammenspiel der öffentlichen (public) und privaten IP-Adressen.

Rechts ist das LAN bei uns im Haus dargestellt, mit dem Laptop der wireless oder Kabelgebunden mit dem Router verbunden ist. Dieser stellt die Verbindung zum Internet her, vernetzt alle Rechner bei uns im Haus und schirmt mit der Firewall unerwünschten Besuch aus dem Internet ab.

Auch das Rechenzentrum bei AWS hat eine Firewall, um unerwünschten Traffic aus dem Internet abzuschirmen. Wir wollen aber auf unsere virtuelle Maschine zugreifen und dazu brauchen wir eine IP-Adresse. Mit der öffentlichen IP-Adresse finden wir den Weg zu unserer virtuellen Maschine. Im Bild beispielsweise mit PI-202 benannt.

Wir wollen unsere virtuellen Maschinen miteinander vernetzen. Es wäre sehr umständlich, dies mit den öffentlichen IP-Adressen zu tun, denn dazu müsste der gesamte Datenverkehr immer über das öffentliche Internet laufen.

Viel effizienter ist es, das LAN bei AWS selbst zu verwenden. Und in diesem LAN haben die virtuellen Maschinen eine private IP-Adresse.

Elastic IP Adresse zuordnen

Unternehmen wir nichts, dann erhält die Instanz mit jedem Start eine neue öffentliche und eine neue private IP-Adresse.

Permanent zugeordnete IP-Adressen heissen bei AWS elastic IPs und können kostenpflichtig sein. Hier ein Link zur Information: https://aws.amazon.com/de/ec2/pricing/on-demand/

Und ein Einblick zum Zeitpunkt der Erstellung des Tutorials:

Eine Elastic-IP-Adresse ist pro Instanz also kostenlos.

Wir erstellen also eine elastische IP-Adresse. Dazu scrollen wir links in der AWS Management Konsole etwas nach unten und klicken die Option “Elastic IPs”

Wir erhalten die Information, dass wir für diese Region (also Frankfurt) keine Elastic IP-Adresse hätten. Wir klicken auf “Allocate new address”, um eine zu erstellen.

Oder alternativ:
Im EC2-Dashboard, klicken wir auf unsere Instanz und im Actions-Menu auf Manage IP Addresses

Wir erhalten eine Übersicht über die IP-Adressen der Instanz und die Möglichkeit, eine elastische IP-Adresse zuzuordnen.
Wir klicken auf diese Option:

Auf der folgenden Seite, klicken wir auf Allocate.
Wir erhalten die neue IP-Adresse mitgeteilt und merken uns diese, bevor wir auf “Close” klicken.

Wir werden zurück auf die Übersicht der Elastic IP-Adressen geführt und sehen, dort diese IP-Adresse als erste in einer Liste.

Wir selektieren die Adresse und klicken auf Action. Mit dem Menu-Punkt “Associate address” können wir diese IP-Adresse jetzt einer Instanz zuordnen.

Auf der folgenden Seite können wir die Instanz wählen und auch die private IP-Adresse. Wir treffen eine Auswahl für beides und klicken auf “Associate”.

Dann erhalten wir eine Bestätigung, die wir mit “Close” schließen.

Wir verzweigen zurück aufs EC2 Dashboard und sehen, dass die neue Elastic IP Adresse unserer Instanz zugeordnet wurde.

Jetzt können wir die Probe aufs Exempel machen und mit ssh einloggen und dabei die Elastic IP Adresse angeben.

Weitere Instanzen allozieren

Jetzt, wo wir die erste Instanz erstellt haben, können wir diese vervielfachen, um anschließend unseren Cluster aufzubauen.

Wir klicken auf Actions und wählen “Launch More Like This”.

Jetzt werden wir aufgefordert, uns um die Security zu kümmern und eine neue Security Group einzurichten.

Damit können wir steuern, welche Ports auf unseren Instanzen offen sind, und von welchen IP-Adressen aus darauf zugegriffen werden kann.  Eine Regel ist bereits vorhanden: wir können mit ssh von allen IP-Adressen aus auf diese Instanz zugreifen. Wir haben ja den ssh-Zugang mit dem Schlüsselpaar gesichert. Falls wir sicher sind, immer mit derselben IP-Adresse ins Internet zu gehen, dann können wir hier eine zusätzliche Regel definieren und diese IP-Adresse angeben.

Anschließend klicken wir auf Launch
Wir werden aufgefordert, ein Schlüsselpaar zu wählen und sollen bestätigen, dass wir das zugehörende .pem-File besitzen. Jetzt klicken wir auf Launch Instances

Diese Nachricht kennen wir schon und wir bestätigen sie mit “View Instances”

Wir sehen jetzt, dass eine weitere Instanz angelegt wird und bereiten gleich die passende Elastic IP Address dafür vor und ordnen sie auch gleich der neuen Instanz zu.

So erstellen wir vorerst insgesamt fünf Instanzen.

Hostnamen für das Big Data Labor vorbereiten

Im nächsten Schritt definieren wir die Hostnamen und “stellen” die einzelnen Server einander vor.
Dazu erstellen wir die folgende Liste

Public IP Address Private IP Address Hostname
    pi-201
    pi-202
    pi-203
    pi-204
    pi-205

In der Tabelle tragen wir die Paare von öffentlichen (public) und privaten IP-Adressen ein. Diese können wir in der EC2-Konsole ablesen und der Reihe nach in die Tabelle schreiben.

Wir loggen jetzt der Reihe nach in die virtuellen Maschinen auf AWS ein. Dazu verwenden wir die öffentliche IP-Adresse gemäss der ausgefüllten Liste.
Auf jeder virtuellen Maschine verändern wir die beiden Files

  • /etc/hostname
  • /etc/hosts

Dazu verwenden wir unseren Lieblingseditor, beispielsweise vi oder nano.

sudo vi /etc/hostname

Auf der ersten Zeile steht der Hostname, den AWS vergeben hat. Wir löschen die Zeile und fügen den Hostnamen ein, den wir in der Liste oben ablesen. Also z.B.

pi-201

Und wir speichern das File.

Das Big-Data Labor wird sich auf diese Hostnamen beziehen. Wer andere Hostnamen haben möchte, fügt noch eine weitere Spalte in die Liste ein und erhält so eine Übersetzungsliste für das Big Data Labor.

Jetzt editieren wir die das zweite File:

sudo vi /etc/hosts

Wir fügen die folgenden Zeilen an:

Private-IP-Adresse-von-pi-201  pi-201
Private-IP-Adresse-von-pi-202  pi-202
Private-IP-Adresse-von-pi-203  pi-203
Private-IP-Adresse-von-pi-204  pi-204
Private-IP-Adresse-von-pi-205  pi-205

und wir speichern das File.

Das könnte beispielsweise so aussehen:

127.0.0.1 localhost

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

Die erste Spalte in der Liste muss die privaten IP-Adressen enthalten. Diese werden anders lauten, also im Beispiel dargestellt.

Damit die Änderungen aktiv werden, starten wir die Instanz neu

sudo shutdown -r now

Der Prompt sollte jetzt sein:

ubuntu@pi-201:

Falls wir auf dem gewohnten Weg in pi-201 einloggen.

Schlussbemerkungen

Das freie AWS-Kontingent beinhaltet eine gewisse Stundenzahl pro Monat für T2.Micro-Instanzen. Wenn jetzt zwei Instanzen jeweils gleichzeitig eine Stunde lang laufen, dann zählt AWS dafür zwei Stunden.
Wir können die Instanzen auch wie folgt herunterfahren:

sudo shutdown -h now

Zum Neustarten verwenden wir die EC2-Konsole, wie oben aufgeführt.

Damit haben wir dieselben Voraussetzungen für das Big Data Labor geschaffen, wie auch im Tutorial für VirtualBox und für Raspberry Pi beschrieben.

Im ersten Tutorial zum Big Data Labor werden wir Apache Hadoop kennen lernen.

Bildnachweis

Alle Bilder sind Screenshots von AWS / Amazon mit Ausnahme des Bildes im Kapitel Public und Private IP Adressen. Bei diesem handelt sich um eine eigene Darstellung.

Veröffentlicht am

Virtuelle Maschine versus Container

Big Data Trainingsinfrastruktur
Trainingsinfrastruktur

In diesem Artikel vergleichen wir ein Cluster aus Virtuellen Maschinen mit einem Cluster aus Containern. Dabei legen wir einen besonderen Schwerpunkt auf die Eigenschaften, die wir für eine Trainingsumgebung für Big-Data-Technologien erwarten. 

Autorin: Ursula Deriu

Dieser Artikel ist ein Auszug aus dem eBook Virtuelle Maschinen vernetzen, einem step-by-step Tutorial zum Aufbau eines VirtualBox-Clusters.

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.

Big Data Cluster mit drei Nodes
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:

Cloud im Laptop
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:

Die layer der Virtualisierung
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:

Container und Layer
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:

Files in Containers
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:

Big-Data-Files in Containers
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.

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:

Cluster aus Containern und Files
in 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:

Cluster aus Containers
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.

Cluster aus Containern und persistente Files
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.

Cluster aus Containers und presistente Big Data Files
Wird 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.